Roll ANGLE for ETC extensions and EGL_ANGLE_device_cgl
https://bugs.webkit.org/show_bug.cgi?id=202780

Roll ANGLE to c5e0ac757a112a24a0118d434e652fd7b558e6a8 via new
update-angle.sh script.

Patch by Kenneth Russell <kbr@chromium.org> on 2019-10-11
Reviewed by Alex Christensen.

* .gitignore:
* ANGLE.plist:
* ANGLE.xcodeproj/project.pbxproj:
* BUILD.gn:
* CMakeLists.txt:
* CONTRIBUTORS:
* DEPS:
* GLESv2.cmake:
* OWNERS:
* PRESUBMIT.py:
(_CheckExportValidity):
(CheckChangeOnUpload):
(CheckChangeOnCommit):
* README.md:
* android/angle_apk.gni:
* build_overrides/angle.gni:
* changes.diff:
* doc/DevSetup.md:
* dotfile_settings.gni:
* extensions/ANGLE_compressed_texture_etc.txt: Added.
* extensions/EGL_ANGLE_device_cgl.txt: Added.
* extensions/EGL_ANGLE_feature_control.txt:
* extensions/EGL_ANGLE_platform_angle_d3d11on12.txt: Added.
* extensions/EGL_ANGLE_platform_angle_device_type_swiftshader.txt: Added.
* extensions/EGL_ANGLE_platform_angle_metal.txt: Added.
* gni/angle.gni:
* include/EGL/eglext_angle.h:
* include/platform/Feature.h:
(angle::Feature::Feature):
* include/platform/FeaturesD3D.h:
* include/platform/FeaturesGL.h:
* include/platform/FeaturesVk.h:
* include/platform/FrontendFeatures.h:
* samples/WindowTest/WindowTest.cpp:
* samples/gles1/DrawTexture.cpp:
* samples/multi_texture/MultiTexture.cpp:
* samples/multiple_draw_buffers/MultipleDrawBuffers.cpp:
* samples/particle_system/ParticleSystem.cpp:
* samples/sample_util/SampleApplication.cpp:
(SampleApplication::SampleApplication):
* samples/sample_util/SampleApplication.h:
* scripts/code_generation_hashes/ANGLE_format.json:
* scripts/code_generation_hashes/ANGLE_load_functions_table.json:
* scripts/code_generation_hashes/D3D11_format.json:
* scripts/code_generation_hashes/DXGI_format.json:
* scripts/code_generation_hashes/GL_EGL_WGL_loader.json:
* scripts/code_generation_hashes/GL_EGL_entry_points.json:
* scripts/code_generation_hashes/OpenGL_dispatch_table.json:
* scripts/code_generation_hashes/Static_builtins.json:
* scripts/code_generation_hashes/Vulkan_format.json:
* scripts/code_generation_hashes/Vulkan_internal_shader_programs.json:
* scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json:
* scripts/code_generation_hashes/proc_table.json:
* scripts/export_targets.py:
(has_all_includes):
* scripts/generate_entry_points.py:
(get_resource_id_types):
(format_resource_id_types):
(write_capture_helper_header):
(get_resource_id_type_from_param_type):
(format_param_type_to_resource_id_type_case):
(format_param_type_resource_id_cases):
(format_resource_id_type_name_case):
(write_capture_helper_source):
* scripts/generate_vulkan_layers_json.py:
(main):
* scripts/registry_xml.py:
* src/common/PackedEnums.cpp:
(gl::operator<<):
* src/common/PackedEnums.h:
(angle::EnumSize<E>):
(gl::FromGLenum<VertexAttribType>):
(gl::ToGLenum):
(gl::ValueEquals):
(gl::operator==):
(gl::operator!=):
* src/common/android_util.cpp:
(angle::android::NativePixelFormatToGLInternalFormat):
* src/common/angleutils.h:
* src/common/debug.h:
* src/common/platform.h:
* src/common/system_utils_winuwp.cpp: Added.
(angle::SetEnvironmentVar):
(angle::GetEnvironmentVar):
(angle::GetSharedLibraryExtension):
(angle::GetPathSeparator):
(angle::GetCurrentTime):
(angle::UwpLibrary::UwpLibrary):
(angle::OpenSharedLibrary):
(angle::IsDebuggerAttached):
(angle::BreakDebugger):
* src/common/tls.cpp:
(CreateTLSIndex):
(DestroyTLSIndex):
(SetTLSValue):
(GetTLSValue):
* src/common/tls.h:
* src/common/utilities.cpp:
(gl::StripLastArrayIndex):
* src/common/utilities.h:
* src/compiler.gni:
* src/compiler/translator/Compiler.cpp:
(sh::TCompiler::compileTreeImpl):
* src/compiler/translator/ImmutableString_ESSL_autogen.cpp:
* src/compiler/translator/ImmutableString_autogen.cpp:
* src/compiler/translator/IntermNode.h:
(sh::TIntermPreprocessorDirective::getDirective const): Deleted.
(sh::TIntermPreprocessorDirective::getCommand const): Deleted.
* src/compiler/translator/ParseContext.cpp:
(sh::TParseContext::TParseContext):
(sh::TParseContext::checkIsValidArraySize):
(sh::TParseContext::parseFunctionDeclarator):
* src/compiler/translator/ParseContext.h:
(sh::TParseContext::getOutputType const):
* src/compiler/translator/ShaderVars.cpp:
(sh::ShaderVariable::operator=):
* src/compiler/translator/SymbolTable.cpp:
(sh::TSymbolTable::setGlInArraySize):
(sh::TSymbolTable::gl_FragData const):
(sh::TSymbolTable::gl_SecondaryFragDataEXT const):
(sh::SymbolRule::get const):
(sh::FindMangledBuiltIn):
(sh::UnmangledEntry::matches const):
* src/compiler/translator/SymbolTable.h:
(sh::SymbolRule::SymbolRule):
(sh::SymbolRule::Get):
(sh::UnmangledEntry::UnmangledEntry):
(sh::SymbolEntry::SymbolEntry): Deleted.
* src/compiler/translator/SymbolTable_ESSL_autogen.cpp:
(sh::BuiltInVariable::angle_BaseInstance):
(sh::BuiltInVariable::angle_BaseVertex):
(sh::BuiltInVariable::gl_BaseInstance):
(sh::BuiltInVariable::gl_BaseVertex):
(sh::BuiltInVariable::gl_DrawID):
(sh::BuiltInVariable::gl_FragColor):
(sh::BuiltInVariable::gl_FragCoord):
(sh::BuiltInVariable::gl_FragDepth):
(sh::BuiltInVariable::gl_FrontFacing):
(sh::BuiltInVariable::gl_GlobalInvocationID):
(sh::BuiltInVariable::gl_InstanceID):
(sh::BuiltInVariable::gl_InstanceIndex):
(sh::BuiltInVariable::gl_InvocationID):
(sh::BuiltInVariable::gl_LastFragColor):
(sh::BuiltInVariable::gl_LastFragColorARM):
(sh::BuiltInVariable::gl_Layer):
(sh::BuiltInVariable::gl_LayerGS):
(sh::BuiltInVariable::gl_LayerVS):
(sh::BuiltInVariable::gl_LocalInvocationID):
(sh::BuiltInVariable::gl_LocalInvocationIndex):
(sh::BuiltInVariable::gl_NumWorkGroups):
(sh::BuiltInVariable::gl_PointCoord):
(sh::BuiltInVariable::gl_PointSize):
(sh::BuiltInVariable::gl_Position):
(sh::BuiltInVariable::gl_PrimitiveID):
(sh::BuiltInVariable::gl_PrimitiveIDGS):
(sh::BuiltInVariable::gl_PrimitiveIDIn):
(sh::BuiltInVariable::gl_SecondaryFragColorEXT):
(sh::BuiltInVariable::gl_VertexID):
(sh::BuiltInVariable::gl_VertexIndex):
(sh::BuiltInVariable::gl_ViewID_OVR):
(sh::BuiltInVariable::gl_ViewportIndex):
(sh::BuiltInVariable::gl_WorkGroupID):
(sh::BuiltInVariable::gl_WorkGroupSize):
(sh::TSymbolTable::initializeBuiltInVariables):
(sh::TSymbolTable::findBuiltIn const):
(sh::TSymbolTable::isUnmangledBuiltInName const):
(sh::TSymbolTable::getSymbol const): Deleted.
(sh::TSymbolTable::getUnmangled const): Deleted.
(sh::TSymbolTable::getUnmangledBuiltInForShaderVersion): Deleted.
* src/compiler/translator/SymbolTable_autogen.cpp:
(sh::BuiltInVariable::angle_BaseInstance):
(sh::BuiltInVariable::angle_BaseVertex):
(sh::BuiltInVariable::gl_BaseInstance):
(sh::BuiltInVariable::gl_BaseVertex):
(sh::BuiltInVariable::gl_DrawID):
(sh::BuiltInVariable::gl_FragColor):
(sh::BuiltInVariable::gl_FragCoord):
(sh::BuiltInVariable::gl_FragDepth):
(sh::BuiltInVariable::gl_FrontFacing):
(sh::BuiltInVariable::gl_GlobalInvocationID):
(sh::BuiltInVariable::gl_InstanceID):
(sh::BuiltInVariable::gl_InstanceIndex):
(sh::BuiltInVariable::gl_InvocationID):
(sh::BuiltInVariable::gl_LastFragColor):
(sh::BuiltInVariable::gl_LastFragColorARM):
(sh::BuiltInVariable::gl_Layer):
(sh::BuiltInVariable::gl_LayerGS):
(sh::BuiltInVariable::gl_LayerVS):
(sh::BuiltInVariable::gl_LocalInvocationID):
(sh::BuiltInVariable::gl_LocalInvocationIndex):
(sh::BuiltInVariable::gl_NumWorkGroups):
(sh::BuiltInVariable::gl_PointCoord):
(sh::BuiltInVariable::gl_PointSize):
(sh::BuiltInVariable::gl_Position):
(sh::BuiltInVariable::gl_PrimitiveID):
(sh::BuiltInVariable::gl_PrimitiveIDGS):
(sh::BuiltInVariable::gl_PrimitiveIDIn):
(sh::BuiltInVariable::gl_SecondaryFragColorEXT):
(sh::BuiltInVariable::gl_VertexID):
(sh::BuiltInVariable::gl_VertexIndex):
(sh::BuiltInVariable::gl_ViewID_OVR):
(sh::BuiltInVariable::gl_ViewportIndex):
(sh::BuiltInVariable::gl_WorkGroupID):
(sh::BuiltInVariable::gl_WorkGroupSize):
(sh::TSymbolTable::initializeBuiltInVariables):
(sh::TSymbolTable::findBuiltIn const):
(sh::TSymbolTable::isUnmangledBuiltInName const):
(sh::TSymbolTable::getSymbol const): Deleted.
(sh::TSymbolTable::getUnmangled const): Deleted.
(sh::TSymbolTable::getUnmangledBuiltInForShaderVersion): Deleted.
* src/compiler/translator/SymbolTable_autogen.h:
* src/compiler/translator/TranslatorVulkan.cpp:
(sh::TranslatorVulkan::translate):
* src/compiler/translator/gen_builtin_symbols.py:
(get_shader_version_for_level):
(GroupedList.__init__):
(GroupedList.add_entry):
(GroupedList.format_rule):
(GroupedList):
(GroupedList.format_rules):
(GroupedList.get_rules):
(GroupedList.get_names):
(GroupedList.get_offsets):
(GroupedList.update_arrays):
(GroupedList.update_arrays.add_rule):
(UnmangledGroupedList.add_entry):
(UnmangledGroupedList.get_array):
(define_constexpr_variable):
(process_single_function_group):
(process_function_group):
(process_single_variable_group):
(GroupedList.add_obj): Deleted.
(GroupedList.get_array): Deleted.
(UnmangledGroupedList.add_obj): Deleted.
* src/feature_support_util/feature_support_util.cpp:
* src/gpu_info_util/SystemInfo_win.cpp:
(angle::GetSystemInfo):
* src/image_util/loadimage.cpp:
(angle::LoadD24S8ToD32F):
(angle::LoadD32ToD32FX32):
(angle::LoadD32ToD32F):
* src/image_util/loadimage.h:
* src/libANGLE/Buffer.cpp:
(gl::Buffer::Buffer):
* src/libANGLE/Buffer.h:
* src/libANGLE/Caps.cpp:
(gl::DetermineHalfFloatTextureFilteringSupport):
(gl::DetermineFloatTextureFilteringSupport):
(gl::Extensions::setTextureExtensionSupport):
(gl::GetExtensionInfoMap):
(egl::DisplayExtensions::getStrings const):
(egl::DeviceExtensions::getStrings const):
(egl::ClientExtensions::getStrings const):
* src/libANGLE/Caps.h:
* src/libANGLE/Constants.h:
* src/libANGLE/Context.cpp:
(gl::Context::Context):
(gl::Context::initialize):
(gl::Context::onDestroy):
(gl::Context::bindImageTexture):
(gl::Context::getQueryiv):
(gl::Context::detachTexture):
(gl::Context::generateSupportedExtensions const):
(gl::Context::initCaps):
(gl::Context::onSubjectStateChange):
(gl::StateCache::updateActiveAttribsMask):
(gl::StateCache::updateVertexAttribTypesValidation):
* src/libANGLE/Context.h:
* src/libANGLE/Device.cpp:
(egl::Device::getAttribute):
(egl::Device::getDevice): Deleted.
* src/libANGLE/Device.h:
* src/libANGLE/Display.cpp:
(egl::Display::createContext):
(egl::GenerateClientExtensions):
(egl::Display::isValidNativeDisplay):
(egl::Display::initializeFrontendFeatures):
(egl::Display::queryStringi):
* src/libANGLE/ErrorStrings.h:
* src/libANGLE/Fence.h:
* src/libANGLE/FrameCapture.cpp:
(angle::ParamCapture::ParamCapture):
(angle::ParamCapture::operator=):
(angle::ParamBuffer::ParamBuffer):
(angle::ParamBuffer::operator=):
(angle::ParamBuffer::getParam):
(angle::ParamBuffer::getParam const):
(angle::ParamBuffer::addParam):
(angle::ParamBuffer::addReturnValue):
(angle::ParamBuffer::getClientArrayPointerParameter):
(angle::CallCapture::CallCapture):
(angle::CallCapture::operator=):
(angle::CallCapture::name const):
(angle::ReplayContext::ReplayContext):
(angle::ReplayContext::~ReplayContext):
(angle::FrameCapture::FrameCapture):
(angle::FrameCapture::maybeCaptureClientData):
(angle::FrameCapture::captureCall):
(angle::FrameCapture::captureUpdateResourceIDs):
(angle::FrameCapture::maybeUpdateResourceIDs):
(angle::FrameCapture::captureClientArraySnapshot):
(angle::FrameCapture::onEndFrame):
(angle::DataCounters::getAndIncrement):
(angle::FrameCapture::reset):
(angle::CaptureGenHandlesImpl):
(angle::WriteParamValueToStream<ParamType::TBufferID>):
(angle::WriteParamValueToStream<ParamType::TFenceNVID>):
(angle::WriteParamValueToStream<ParamType::TFramebufferID>):
(angle::WriteParamValueToStream<ParamType::TMemoryObjectID>):
(angle::WriteParamValueToStream<ParamType::TPathID>):
(angle::WriteParamValueToStream<ParamType::TProgramPipelineID>):
(angle::WriteParamValueToStream<ParamType::TQueryID>):
(angle::WriteParamValueToStream<ParamType::TRenderbufferID>):
(angle::WriteParamValueToStream<ParamType::TSamplerID>):
(angle::WriteParamValueToStream<ParamType::TSemaphoreID>):
(angle::WriteParamValueToStream<ParamType::TShaderProgramID>):
(angle::WriteParamValueToStream<ParamType::TTextureID>):
(angle::WriteParamValueToStream<ParamType::TTransformFeedbackID>):
(angle::WriteParamValueToStream<ParamType::TVertexArrayID>):
(angle::CallCapture::~CallCapture): Deleted.
(angle::ParamBuffer::~ParamBuffer): Deleted.
(angle::ParamCapture::~ParamCapture): Deleted.
(angle::FrameCapture::~FrameCapture): Deleted.
(angle::FrameCapture::anyClientArray const): Deleted.
(angle::FrameCapture::saveCapturedFrameAsCpp): Deleted.
(angle::FrameCapture::getAndIncrementCounter): Deleted.
(angle::FrameCapture::writeStringPointerParamReplay): Deleted.
(angle::FrameCapture::writeRenderbufferIDPointerParamReplay): Deleted.
(angle::FrameCapture::writeBinaryParamReplay): Deleted.
(angle::FrameCapture::writeCallReplay): Deleted.
* src/libANGLE/FrameCapture.h:
(angle::CaptureGenHandles):
* src/libANGLE/FrameCapture_mock.cpp: Added.
(angle::CallCapture::~CallCapture):
(angle::ParamBuffer::~ParamBuffer):
(angle::ParamCapture::~ParamCapture):
(angle::FrameCapture::FrameCapture):
(angle::FrameCapture::~FrameCapture):
(angle::FrameCapture::onEndFrame):
(angle::FrameCapture::replay):
* src/libANGLE/Framebuffer.cpp:
(gl::Framebuffer::formsRenderingFeedbackLoopWith const):
(gl::Framebuffer::formsCopyingFeedbackLoopWith const):
* src/libANGLE/Framebuffer.h:
* src/libANGLE/FramebufferAttachment.cpp:
(gl::FramebufferAttachment::getRedSize const):
(gl::FramebufferAttachment::getGreenSize const):
(gl::FramebufferAttachment::getBlueSize const):
(gl::FramebufferAttachment::getAlphaSize const):
(gl::FramebufferAttachment::getDepthSize const):
(gl::FramebufferAttachment::getStencilSize const):
* src/libANGLE/FramebufferAttachment.h:
* src/libANGLE/GLES1State.cpp:
(gl::GLES1State::getActiveAttributesMask const):
* src/libANGLE/GLES1State.h:
* src/libANGLE/ImageIndex.cpp:
* src/libANGLE/ImageIndex.h:
* src/libANGLE/MemoryObject.cpp:
(gl::MemoryObject::MemoryObject):
* src/libANGLE/MemoryObject.h:
* src/libANGLE/MemoryProgramCache.cpp:
* src/libANGLE/Program.cpp:
(gl::ProgramBindings::bindLocation):
(gl::ProgramBindings::getBindingByName const):
(gl::ProgramBindings::getBinding const):
(gl::ProgramBindings::begin const):
(gl::ProgramBindings::end const):
(gl::ProgramAliasedBindings::ProgramAliasedBindings):
(gl::ProgramAliasedBindings::~ProgramAliasedBindings):
(gl::ProgramAliasedBindings::bindLocation):
(gl::ProgramAliasedBindings::getBindingByName const):
(gl::ProgramAliasedBindings::getBinding const):
(gl::ProgramAliasedBindings::begin const):
(gl::ProgramAliasedBindings::end const):
(gl::ProgramState::getAttributeLocation const):
(gl::ProgramState::getFirstAttachedShaderStageType const):
(gl::ProgramState::getLastAttachedShaderStageType const):
(gl::Program::getFragmentInputBindingInfo const):
(gl::Program::link):
(gl::ProgramState::updateProgramInterfaceInputs):
(gl::ProgramState::updateProgramInterfaceOutputs):
(gl::Program::unlink):
(gl::Program::getActiveAttribute const):
(gl::Program::getActiveAttributeCount const):
(gl::Program::getActiveAttributeMaxLength const):
(gl::Program::getAttributes const):
(gl::Program::getInputResource const):
(gl::Program::getInputResourceIndex const):
(gl::Program::getResourceMaxNameSize const):
(gl::Program::getInputResourceMaxNameSize const):
(gl::Program::getOutputResourceMaxNameSize const):
(gl::Program::getResourceLocation const):
(gl::Program::getInputResourceLocation const):
(gl::Program::getOutputResourceLocation const):
(gl::Program::getOutputResourceIndex const):
(gl::Program::getResourceName const):
(gl::Program::getInputResourceName const):
(gl::Program::getOutputResourceName const):
(gl::Program::getUniformResourceName const):
(gl::Program::getBufferVariableResourceName const):
(gl::Program::getOutputResource const):
(gl::Program::getUniformLocationBindings const):
(gl::Program::linkUniforms):
(gl::Program::linkAttributes):
(gl::Program::linkValidateGlobalNames const):
(gl::Program::getMergedVaryings const):
(gl::Program::linkOutputVariables):
(gl::Program::serialize const):
(gl::Program::deserialize):
* src/libANGLE/Program.h:
(gl::ProgramVaryingRef::get const):
* src/libANGLE/ProgramLinkedResources.cpp:
(gl::UniformLinker::link):
(gl::UniformLinker::indexUniforms):
(gl::UniformLinker::gatherUniformLocationsAndCheckConflicts):
* src/libANGLE/ProgramLinkedResources.h:
* src/libANGLE/ProgramPipeline.cpp:
(gl::ProgramPipeline::ProgramPipeline):
* src/libANGLE/ProgramPipeline.h:
* src/libANGLE/Query.cpp:
(gl::Query::Query):
* src/libANGLE/Query.h:
* src/libANGLE/RefCountObject.h:
(gl::RefCountObject::RefCountObject):
(gl::RefCountObject::id const):
(gl::BindingPointer::id const):
* src/libANGLE/Renderbuffer.cpp:
(gl::Renderbuffer::Renderbuffer):
(gl::Renderbuffer::getId const):
* src/libANGLE/Renderbuffer.h:
* src/libANGLE/Sampler.cpp:
(gl::Sampler::Sampler):
* src/libANGLE/Sampler.h:
* src/libANGLE/Semaphore.cpp:
(gl::Semaphore::Semaphore):
* src/libANGLE/Semaphore.h:
* src/libANGLE/Shader.cpp:
(gl::Shader::resolveCompile):
(gl::Shader::getTransformFeedbackVaryingMappedName):
* src/libANGLE/State.cpp:
(gl::State::getSamplerTextureId const):
(gl::State::detachTexture):
(gl::State::detachSampler):
(gl::State::detachRenderbuffer):
(gl::State::removeTransformFeedbackBinding):
(gl::State::getActiveQueryId const):
(gl::State::detachBuffer):
(gl::State::getIntegerv):
(gl::State::getIntegeri_v):
(gl::State::syncImages):
(gl::State::onImageStateChange):
* src/libANGLE/State.h:
(gl::State::getSamplerId const):
(gl::State::getRenderbufferId const):
* src/libANGLE/Texture.cpp:
(gl::Texture::Texture):
(gl::Texture::setStorage):
(gl::Texture::getId const):
* src/libANGLE/Texture.h:
* src/libANGLE/TransformFeedback.cpp:
(gl::TransformFeedback::TransformFeedback):
(gl::TransformFeedback::detachBuffer):
* src/libANGLE/TransformFeedback.h:
* src/libANGLE/VaryingPacking.cpp:
(gl::VaryingPacking::collectAndPackUserVaryings):
(gl::VaryingPacking::packUserVaryings):
* src/libANGLE/VertexArray.cpp:
(gl::VertexArray::detachBuffer):
(gl::VertexArray::bindVertexBufferImpl):
* src/libANGLE/VertexArray.h:
* src/libANGLE/capture_gles_2_0_params.cpp:
(gl::CaptureDeleteBuffers_buffersPacked):
(gl::CaptureDeleteFramebuffers_framebuffersPacked):
(gl::CaptureDeleteTextures_texturesPacked):
(gl::CaptureGenBuffers_buffersPacked):
(gl::CaptureGenFramebuffers_framebuffersPacked):
(gl::CaptureGenRenderbuffers_renderbuffersPacked):
(gl::CaptureGenTextures_texturesPacked):
(gl::CaptureShaderSource_string):
* src/libANGLE/capture_gles_3_0_params.cpp:
(gl::CaptureDeleteQueries_idsPacked):
(gl::CaptureDeleteSamplers_samplersPacked):
(gl::CaptureDeleteTransformFeedbacks_idsPacked):
(gl::CaptureDeleteVertexArrays_arraysPacked):
(gl::CaptureGenQueries_idsPacked):
(gl::CaptureGenSamplers_samplersPacked):
(gl::CaptureGenTransformFeedbacks_idsPacked):
(gl::CaptureGenVertexArrays_arraysPacked):
* src/libANGLE/capture_gles_3_1_params.cpp:
(gl::CaptureDeleteProgramPipelines_pipelinesPacked):
(gl::CaptureGenProgramPipelines_pipelinesPacked):
* src/libANGLE/capture_gles_ext_params.cpp:
(gl::CaptureDeleteQueriesEXT_idsPacked):
(gl::CaptureGenQueriesEXT_idsPacked):
* src/libANGLE/features.h:
* src/libANGLE/formatutils.cpp:
(gl::UnsizedHalfFloatOESRGBATextureAttachmentSupport):
(gl::BuildInternalFormatInfoMap):
(gl::InternalFormat::computeDepthPitch const):
(gl::GetVertexFormatID):
(gl::GetVertexFormatFromID):
(gl::GetVertexFormatSize):
* src/libANGLE/frame_capture_utils_autogen.cpp:
(angle::GetResourceIDTypeFromParamType):
(angle::GetResourceIDTypeName):
* src/libANGLE/frame_capture_utils_autogen.h:
* src/libANGLE/queryutils.cpp:
(gl::GetBufferVariableResourceProperty):
(gl::QueryProgramResourceLocation):
(gl::QueryProgramResourceiv):
(egl::QueryContextAttrib):
* src/libANGLE/renderer/DeviceImpl.h:
* src/libANGLE/renderer/Format.h:
(angle::Format::isVertexTypeHalfFloat const):
* src/libANGLE/renderer/FormatID_autogen.h:
* src/libANGLE/renderer/Format_table_autogen.cpp:
(angle::Format::InternalFormatToID):
* src/libANGLE/renderer/angle_format.py:
(gl_format_channels):
(get_vertex_copy_function):
* src/libANGLE/renderer/angle_format_map.json:
* src/libANGLE/renderer/copyvertex.h:
* src/libANGLE/renderer/copyvertex.inc.h:
(rx::CopyTo32FVertexData):
(rx::CopyXYZ10ToXYZW32FVertexData):
(rx::CopyW2XYZ10ToXYZW32FVertexData):
* src/libANGLE/renderer/d3d/DeviceD3D.cpp:
(rx::DeviceD3D::getAttribute):
(rx::DeviceD3D::getDevice): Deleted.
* src/libANGLE/renderer/d3d/DeviceD3D.h:
* src/libANGLE/renderer/d3d/HLSLCompiler.cpp:
(rx::HLSLCompiler::ensureInitialized):
(rx::HLSLCompiler::compileToBinary):
* src/libANGLE/renderer/d3d/ProgramD3D.cpp:
(rx::ProgramD3D::getVertexExecutableForCachedInputLayout):
* src/libANGLE/renderer/d3d/RendererD3D.cpp:
(rx::DefaultGLErrorCode):
* src/libANGLE/renderer/d3d/ShaderD3D.cpp:
(rx::ShaderD3D::compile):
* src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp:
(rx::Buffer11::getConstantBufferRange):
(rx::Buffer11::NativeStorage::FillBufferDesc):
* src/libANGLE/renderer/d3d/d3d11/Context11.cpp:
(rx::Context11::drawArrays):
(rx::Context11::drawArraysInstanced):
(rx::Context11::drawArraysInstancedBaseInstance):
(rx::Context11::drawArraysIndirect):
* src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp:
(rx::DebugAnnotator11::initialize):
* src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp:
(rx::Renderer11::Renderer11):
(rx::Renderer11::initialize):
(rx::Renderer11::callD3D11On12CreateDevice):
(rx::Renderer11::initializeD3DDevice):
(rx::Renderer11::generateDisplayExtensions const):
(rx::Renderer11::isValidNativeWindow const):
(rx::Renderer11::createNativeWindow const):
(rx::Renderer11::drawArrays):
(rx::Renderer11::release):
(rx::Renderer11::getShareHandleSupport const):
(rx::Renderer11::copyImageInternal):
* src/libANGLE/renderer/d3d/d3d11/Renderer11.h:
* src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp:
(rx::TextureStorage11::getSRVForImage):
(rx::TextureStorage11::getUAVForImage):
* src/libANGLE/renderer/d3d/d3d11/Trim11.cpp:
(rx::Trim11::trim):
(rx::Trim11::registerForRendererTrimRequest):
(rx::Trim11::unregisterForRendererTrimRequest):
* src/libANGLE/renderer/d3d/d3d11/Trim11.h:
* src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp:
(rx::RoHelper::SupportedWindowsRelease):
* src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp:
(rx::d3d11_gl::GenerateCaps):
(rx::d3d11::InitializeFeatures):
* src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h:
* src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp:
(rx::NativeWindow11WinRT::createSwapChain):
* src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h:
* src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h:
* src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp:
(rx::d3d9::InitializeFeatures):
* src/libANGLE/renderer/gen_angle_format_table.py:
(ceil_int):
(get_channel_struct):
(get_mip_generation_function):
* src/libANGLE/renderer/gl/BlitGL.cpp:
(rx::BlitGL::copyImageToLUMAWorkaroundTexture):
(rx::BlitGL::copySubImageToLUMAWorkaroundTexture):
(rx::BlitGL::blitColorBufferWithShader):
(rx::BlitGL::copySubTexture):
(rx::BlitGL::copySubTextureCPUReadback):
(rx::BlitGL::copyTexSubImage):
(rx::BlitGL::clearRenderableTexture):
(rx::BlitGL::clearRenderbuffer):
(rx::BlitGL::clearFramebuffer):
(rx::BlitGL::clearRenderableTextureAlphaToOne):
(rx::BlitGL::initializeResources):
(rx::BlitGL::orphanScratchTextures):
(rx::BlitGL::setScratchTextureParameter):
(rx::BlitGL::getBlitProgram):
(rx::BlitGL::getBlitProgramType): Deleted.
* src/libANGLE/renderer/gl/BlitGL.h:
* src/libANGLE/renderer/gl/ContextGL.cpp:
(rx::ContextGL::createRenderbuffer):
(rx::ContextGL::setDrawArraysState):
(rx::ContextGL::setDrawElementsState):
(rx::ContextGL::drawArrays):
(rx::ContextGL::updateAttributesForBaseInstance):
(rx::ContextGL::resetUpdatedAttributes):
(rx::ContextGL::drawArraysInstancedBaseInstance):
(rx::ContextGL::drawElements):
(rx::ContextGL::drawElementsInstancedBaseVertexBaseInstance):
(rx::ContextGL::validateState const):
* src/libANGLE/renderer/gl/ContextGL.h:
* src/libANGLE/renderer/gl/ProgramGL.cpp:
(rx::ProgramGL::link):
* src/libANGLE/renderer/gl/RenderbufferGL.cpp:
(rx::RenderbufferGL::RenderbufferGL):
(rx::RenderbufferGL::~RenderbufferGL):
(rx::RenderbufferGL::onDestroy):
(rx::RenderbufferGL::setStorage):
(rx::RenderbufferGL::setStorageMultisample):
(rx::RenderbufferGL::initializeContents):
* src/libANGLE/renderer/gl/RenderbufferGL.h:
* src/libANGLE/renderer/gl/ShaderGL.cpp:
(rx::ShaderGL::compile):
* src/libANGLE/renderer/gl/StateManagerGL.cpp:
(rx::StateManagerGL::bindBufferBase):
(rx::StateManagerGL::bindBufferRange):
(rx::StateManagerGL::validateState const):
* src/libANGLE/renderer/gl/StateManagerGL.h:
* src/libANGLE/renderer/gl/SurfaceGL.cpp:
(rx::SurfaceGL::initializeContents):
* src/libANGLE/renderer/gl/TextureGL.cpp:
(rx::TextureGL::setImageHelper):
(rx::TextureGL::setSubImage):
(rx::TextureGL::setCompressedImage):
(rx::TextureGL::setCompressedSubImage):
(rx::TextureGL::copyImage):
(rx::TextureGL::copySubTextureHelper):
(rx::TextureGL::setStorage):
(rx::TextureGL::setImageExternal):
(rx::TextureGL::setStorageMultisample):
(rx::TextureGL::setStorageExternalMemory):
(rx::TextureGL::setEGLImageTarget):
(rx::TextureGL::setLevelInfo):
(rx::TextureGL::initializeContents):
* src/libANGLE/renderer/gl/VertexArrayGL.cpp:
(rx::VertexArrayGL::streamAttributes const):
(rx::VertexArrayGL::validateState const):
* src/libANGLE/renderer/gl/VertexArrayGL.h:
* src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp: Added.
(rx::DeviceCGL::DeviceCGL):
(rx::DeviceCGL::~DeviceCGL):
(rx::DeviceCGL::initialize):
(rx::DeviceCGL::getAttribute):
(rx::DeviceCGL::getType):
(rx::DeviceCGL::generateExtensions const):
* src/libANGLE/renderer/gl/cgl/DeviceCGL.h: Added.
* src/libANGLE/renderer/gl/cgl/DisplayCGL.h:
* src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
(rx::DisplayCGL::createDevice):
(rx::DisplayCGL::getCGLPixelFormat const):
(rx::DisplayCGL::generateExtensions const):
* src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm:
(rx::IOSurfaceSurfaceCGL::initializeAlphaChannel):
* src/libANGLE/renderer/gl/egl/DisplayEGL.cpp:
(rx::DisplayEGL::generateExtensions const):
* src/libANGLE/renderer/gl/glx/DisplayGLX.cpp:
(rx::DisplayGLX::makeCurrent):
* src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp:
(rx::WindowSurfaceGLX::initialize):
* src/libANGLE/renderer/gl/renderergl_utils.cpp:
(rx::nativegl_gl::GenerateCaps):
(rx::nativegl_gl::InitializeFeatures):
(rx::nativegl_gl::InitializeFrontendFeatures):
(rx::nativegl::SupportsCompute):
(rx::nativegl::GetBufferBindingQuery):
(rx::nativegl::GetBufferBindingString):
* src/libANGLE/renderer/gl/renderergl_utils.h:
* src/libANGLE/renderer/load_functions_data.json:
* src/libANGLE/renderer/load_functions_table_autogen.cpp:
(angle::GetLoadFunctionsMap):
* src/libANGLE/renderer/null/DeviceNULL.cpp:
(rx::DeviceNULL::getAttribute):
(rx::DeviceNULL::getDevice): Deleted.
* src/libANGLE/renderer/null/DeviceNULL.h:
* src/libANGLE/renderer/renderer_utils.cpp:
(rx::ShouldUseDebugLayers):
* src/libANGLE/renderer/vulkan/BufferVk.cpp:
(rx::BufferVk::release):
(rx::BufferVk::mapRangeImpl):
(rx::BufferVk::setDataImpl):
* src/libANGLE/renderer/vulkan/CommandGraph.cpp:
(rx::vk::CommandGraphResource::CommandGraphResource):
(rx::vk::CommandGraphResource::~CommandGraphResource):
(rx::vk::CommandGraphResource::isResourceInUse const):
(rx::vk::CommandGraphResource::recordCommands):
(rx::vk::CommandGraphResource::addWriteDependency):
(rx::vk::CommandGraphResource::addReadDependency):
(rx::vk::CommandGraphResource::startNewCommands):
(rx::vk::CommandGraphResource::onWriteImpl):
(rx::vk::SharedGarbage::SharedGarbage):
(rx::vk::SharedGarbage::operator=):
(rx::vk::SharedGarbage::destroyIfComplete):
(rx::vk::CommandGraph::~CommandGraph):
(rx::vk::CommandGraph::submitCommands):
(rx::vk::CommandGraph::releaseResourceUses):
(rx::vk::CommandGraph::releaseResourceUsesAndUpdateSerials):
(rx::vk::CommandGraphResource::resetQueueSerial): Deleted.
* src/libANGLE/renderer/vulkan/CommandGraph.h:
(rx::vk::CommandGraphResource::getLatestSerial const):
(rx::vk::CommandGraphResource::hasStartedRenderPass const):
(rx::vk::CommandGraphResource::updateCurrentAccessNodes):
(rx::vk::CommandGraphResource::onGraphAccess):
(rx::vk::CommandGraphResource::appendToStartedRenderPass):
(rx::vk::CommandGraphResource::renderPassStartedButEmpty const):
(rx::vk::CommandGraphResource::clearRenderPassColorAttachment):
(rx::vk::CommandGraphResource::clearRenderPassDepthAttachment):
(rx::vk::CommandGraphResource::clearRenderPassStencilAttachment):
(rx::vk::CommandGraphResource::invalidateRenderPassColorAttachment):
(rx::vk::CommandGraphResource::invalidateRenderPassDepthAttachment):
(rx::vk::CommandGraphResource::invalidateRenderPassStencilAttachment):
(rx::vk::CommandGraphResource::getRenderPassRenderArea const):
(rx::vk::CommandGraphResource::addGlobalMemoryBarrier):
(rx::vk::CommandGraphResource::hasChildlessWritingNode const):
(rx::vk::CommandGraph::onResourceUse):
(rx::vk::CommandGraphResource::getStoredQueueSerial const): Deleted.
(rx::vk::CommandGraphResource::updateQueueSerial): Deleted.
* src/libANGLE/renderer/vulkan/ContextVk.cpp:
(rx::CommandBatch::CommandBatch):
(rx::CommandBatch::operator=):
(rx::CommandBatch::destroy):
(rx::CommandQueue::destroy):
(rx::CommandQueue::init):
(rx::CommandQueue::checkCompletedCommands):
(rx::CommandQueue::releaseToCommandBatch):
(rx::CommandQueue::clearAllGarbage):
(rx::CommandQueue::allocatePrimaryCommandBuffer):
(rx::CommandQueue::releasePrimaryCommandBuffer):
(rx::CommandQueue::handleDeviceLost):
(rx::CommandQueue::hasInFlightCommands const):
(rx::CommandQueue::finishToSerialOrTimeout):
(rx::CommandQueue::submitFrame):
(rx::CommandQueue::getLastSubmittedFence const):
(rx::ContextVk::ContextVk):
(rx::ContextVk::onDestroy):
(rx::ContextVk::initialize):
(rx::ContextVk::setupDraw):
(rx::ContextVk::setupIndirectDraw):
(rx::ContextVk::setupIndexedIndirectDraw):
(rx::ContextVk::setupLineLoopIndexedIndirectDraw):
(rx::ContextVk::handleDirtyGraphicsVertexBuffers):
(rx::ContextVk::handleDirtyGraphicsIndexBuffer):
(rx::ContextVk::submitFrame):
(rx::ContextVk::flushCommandGraph):
(rx::ContextVk::synchronizeCpuGpuTime):
(rx::ContextVk::traceGpuEventImpl):
(rx::ContextVk::checkCompletedGpuEvents):
(rx::ContextVk::flushGpuEvents):
(rx::ContextVk::clearAllGarbage):
(rx::ContextVk::handleDeviceLost):
(rx::ContextVk::drawArraysIndirect):
(rx::ContextVk::drawElementsIndirect):
(rx::ContextVk::syncState):
(rx::ContextVk::onMakeCurrent):
(rx::ContextVk::dispatchComputeIndirect):
(rx::ContextVk::memoryBarrier):
(rx::ContextVk::writeAtomicCounterBufferDriverUniformOffsets):
(rx::ContextVk::updateActiveTextures):
(rx::ContextVk::updateActiveImages):
(rx::ContextVk::shouldFlush):
(rx::ContextVk::flushImpl):
(rx::ContextVk::finishImpl):
(rx::ContextVk::isSerialInUse const):
(rx::ContextVk::checkCompletedCommands):
(rx::ContextVk::finishToSerial):
(rx::ContextVk::finishToSerialOrTimeout):
(rx::ContextVk::getCompatibleRenderPass):
(rx::ContextVk::getRenderPassWithOps):
(rx::ContextVk::ensureSubmitFenceInitialized):
(rx::ContextVk::getNextSubmitFence):
(rx::ContextVk::getLastSubmittedFence const):
(rx::ContextVk::getTimestamp):
(rx::ContextVk::updateDefaultAttribute):
(rx::ContextVk::waitForSwapchainImageIfNecessary):
(rx::ContextVk::CommandBatch::CommandBatch): Deleted.
(rx::ContextVk::CommandBatch::operator=): Deleted.
(rx::ContextVk::CommandBatch::destroy): Deleted.
(rx::ContextVk::releaseToCommandBatch): Deleted.
(rx::ContextVk::recycleCommandBatch): Deleted.
(rx::ContextVk::getCommandGraph): Deleted.
* src/libANGLE/renderer/vulkan/ContextVk.h:
(rx::ContextVk::onVertexAttributeChange):
(rx::ContextVk::getCurrentQueueSerial const):
(rx::ContextVk::getLastSubmittedQueueSerial const):
(rx::ContextVk::getLastCompletedQueueSerial const):
(rx::ContextVk::addGarbage):
(rx::ContextVk::getCommandGraph):
(rx::ContextVk::releaseObject): Deleted.
* src/libANGLE/renderer/vulkan/DeviceVk.cpp:
(rx::DeviceVk::getAttribute):
(rx::DeviceVk::getDevice): Deleted.
* src/libANGLE/renderer/vulkan/DeviceVk.h:
* src/libANGLE/renderer/vulkan/DisplayVk.cpp:
(rx::DisplayVk::generateExtensions const):
* src/libANGLE/renderer/vulkan/FramebufferVk.cpp:
(rx::FramebufferVk::destroy):
(rx::FramebufferVk::invalidate):
(rx::FramebufferVk::invalidateSub):
(rx::FramebufferVk::clearImpl):
(rx::FramebufferVk::getImplementationColorReadType const):
(rx::FramebufferVk::blitWithCommand):
(rx::FramebufferVk::blit):
(rx::FramebufferVk::resolveColorWithCommand):
(rx::FramebufferVk::readPixelsImpl):
(rx::FramebufferVk::onScissorChange):
* src/libANGLE/renderer/vulkan/FramebufferVk.h:
(rx::FramebufferVk::appendToStartedRenderPass):
* src/libANGLE/renderer/vulkan/GlslangWrapper.cpp:
* src/libANGLE/renderer/vulkan/ImageVk.cpp:
(rx::ImageVk::onDestroy):
(rx::ImageVk::orphan):
* src/libANGLE/renderer/vulkan/ImageVk.h:
* src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp:
(rx::MemoryObjectVk::createImage):
* src/libANGLE/renderer/vulkan/OverlayVk.cpp:
(rx::OverlayVk::createFont):
(rx::OverlayVk::cullWidgets):
(rx::OverlayVk::onPresent):
* src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp:
(rx::vk::PersistentCommandPool::destroy):
(rx::vk::PersistentCommandPool::allocate):
(rx::vk::PersistentCommandPool::alloc): Deleted.
* src/libANGLE/renderer/vulkan/PersistentCommandPool.h:
* src/libANGLE/renderer/vulkan/ProgramVk.cpp:
(rx::ProgramVk::reset):
(rx::ProgramVk::initDefaultUniformLayoutMapping):
(rx::ProgramVk::updateDefaultUniformsDescriptorSet):
(rx::ProgramVk::updateBuffersDescriptorSet):
(rx::ProgramVk::updateAtomicCounterBuffersDescriptorSet):
(rx::ProgramVk::updateImagesDescriptorSet):
(rx::ProgramVk::updateTransformFeedbackDescriptorSetImpl):
(rx::ProgramVk::updateDescriptorSets):
* src/libANGLE/renderer/vulkan/ProgramVk.h:
(rx::ProgramVk::getGraphicsPipeline):
* src/libANGLE/renderer/vulkan/README.md:
* src/libANGLE/renderer/vulkan/RenderTargetVk.cpp:
(rx::RenderTargetVk::RenderTargetVk):
(rx::RenderTargetVk::init):
(rx::RenderTargetVk::reset):
(rx::RenderTargetVk::onColorDraw):
(rx::RenderTargetVk::onDepthStencilDraw):
(rx::RenderTargetVk::updateSwapchainImage):
(rx::RenderTargetVk::getImageForRead):
(rx::RenderTargetVk::getImageForWrite const):
(rx::RenderTargetVk::getFetchImageView const): Deleted.
* src/libANGLE/renderer/vulkan/RenderTargetVk.h:
* src/libANGLE/renderer/vulkan/RenderbufferVk.cpp:
(rx::RenderbufferVk::setStorageImpl):
(rx::RenderbufferVk::setStorageEGLImageTarget):
(rx::RenderbufferVk::releaseImage):
* src/libANGLE/renderer/vulkan/RenderbufferVk.h:
* src/libANGLE/renderer/vulkan/RendererVk.cpp:
(rx::RendererVk::~RendererVk):
(rx::RendererVk::onDestroy):
(rx::RendererVk::notifyDeviceLost):
(rx::RendererVk::initialize):
(rx::RendererVk::initializeDevice):
(rx::RendererVk::initFeatures):
(rx::RendererVk::queueSubmit):
(rx::RendererVk::cleanupGarbage):
(rx::RendererVk::getMaxFenceWaitTimeNs const):
(rx::RendererVk::onCompletedSerial):
(rx::RendererVk::nextSerial): Deleted.
(rx::RendererVk::addGarbage): Deleted.
* src/libANGLE/renderer/vulkan/RendererVk.h:
(rx::CollectGarbage):
(rx::RendererVk::getMaxVertexAttribDivisor const):
(rx::RendererVk::collectGarbageAndReinit):
(rx::RendererVk::getCurrentQueueSerial const):
(rx::RendererVk::getLastSubmittedQueueSerial const):
(rx::RendererVk::getLastCompletedQueueSerial const):
(rx::RendererVk::shouldCleanupGarbage):
* src/libANGLE/renderer/vulkan/SamplerVk.cpp:
(rx::SamplerVk::onDestroy):
(rx::SamplerVk::syncState):
* src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp:
(rx::vk::priv::SecondaryCommandBuffer::executeCommands):
(rx::vk::priv::SecondaryCommandBuffer::dumpCommands const):
* src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h:
(rx::vk::priv::SecondaryCommandBuffer::drawIndirect):
(rx::vk::priv::SecondaryCommandBuffer::drawIndexedIndirect):
* src/libANGLE/renderer/vulkan/SemaphoreVk.cpp:
(rx::SemaphoreVk::onDestroy):
* src/libANGLE/renderer/vulkan/SurfaceVk.cpp:
(rx::OffscreenSurfaceVk::AttachmentImage::initialize):
(rx::OffscreenSurfaceVk::AttachmentImage::destroy):
(rx::OffscreenSurfaceVk::OffscreenSurfaceVk):
(rx::WindowSurfaceVk::WindowSurfaceVk):
(rx::WindowSurfaceVk::createSwapChain):
(rx::WindowSurfaceVk::releaseSwapchainImages):
(rx::WindowSurfaceVk::destroySwapChainImages):
(rx::WindowSurfaceVk::present):
(rx::WindowSurfaceVk::nextSwapchainImage):
* src/libANGLE/renderer/vulkan/SyncVk.cpp:
(rx::vk::SyncHelper::SyncHelper):
(rx::vk::SyncHelper::~SyncHelper):
(rx::vk::SyncHelper::releaseToRenderer):
(rx::vk::SyncHelper::initialize):
(rx::vk::SyncHelper::clientWait):
(rx::vk::SyncHelper::serverWait):
(rx::vk::SyncHelper::getStatus):
(rx::SyncVk::onDestroy):
(rx::SyncVk::serverWait):
(rx::EGLSyncVk::onDestroy):
(rx::EGLSyncVk::serverWait):
(rx::FenceSyncVk::FenceSyncVk): Deleted.
(rx::FenceSyncVk::~FenceSyncVk): Deleted.
(rx::FenceSyncVk::onDestroy): Deleted.
(rx::FenceSyncVk::initialize): Deleted.
(rx::FenceSyncVk::clientWait): Deleted.
(rx::FenceSyncVk::serverWait): Deleted.
(rx::FenceSyncVk::getStatus): Deleted.
* src/libANGLE/renderer/vulkan/SyncVk.h:
* src/libANGLE/renderer/vulkan/TextureVk.cpp:
(rx::TextureVk::onDestroy):
(rx::TextureVk::copySubImageImpl):
(rx::TextureVk::copySubTextureImpl):
(rx::TextureVk::copySubImageImplWithTransfer):
(rx::TextureVk::copySubImageImplWithDraw):
(rx::TextureVk::setStorageExternalMemory):
(rx::TextureVk::setEGLImageTarget):
(rx::TextureVk::ensureImageAllocated):
(rx::TextureVk::setImageHelper):
(rx::TextureVk::copyImageDataToBufferAndGetData):
(rx::TextureVk::copyImageDataToBuffer):
(rx::TextureVk::generateMipmapsWithCPU):
(rx::TextureVk::generateMipmap):
(rx::TextureVk::setBaseLevel):
(rx::TextureVk::changeLevels):
(rx::TextureVk::bindTexImage):
(rx::TextureVk::getAttachmentRenderTarget):
(rx::TextureVk::ensureImageInitialized):
(rx::TextureVk::initLayerRenderTargets):
(rx::TextureVk::syncState):
(rx::TextureVk::getReadImageView const):
(rx::TextureVk::getFetchImageView const):
(rx::TextureVk::getLayerLevelDrawImageView):
(rx::TextureVk::getLayerLevelStorageImageView):
(rx::TextureVk::initImage):
(rx::TextureVk::initImageViews):
(rx::TextureVk::releaseImage):
(rx::TextureVk::releaseImageViews):
(rx::TextureVk::releaseStagingBuffer):
(rx::TextureVk::getLevelCount const):
(rx::TextureVk::generateMipmapLevelsWithCPU):
(rx::TextureVk::TextureVkViews::TextureVkViews): Deleted.
(rx::TextureVk::TextureVkViews::~TextureVkViews): Deleted.
(rx::TextureVk::TextureVkViews::release): Deleted.
(rx::TextureVk::init3DRenderTargets): Deleted.
(rx::TextureVk::initCubeMapRenderTargets): Deleted.
(rx::TextureVk::getTextureViews const): Deleted.
(rx::TextureVk::initImageViewImpl): Deleted.
* src/libANGLE/renderer/vulkan/TextureVk.h:
(): Deleted.
* src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp:
(rx::TransformFeedbackVk::onBeginOrEnd):
* src/libANGLE/renderer/vulkan/UtilsVk.cpp:
(rx::UtilsVk::ensureConvertIndexIndirectResourcesInitialized):
(rx::UtilsVk::ensureConvertIndexIndirectLineLoopResourcesInitialized):
(rx::UtilsVk::convertIndexIndirectBuffer):
(rx::UtilsVk::convertLineLoopIndexIndirectBuffer):
(rx::UtilsVk::startRenderPass):
(rx::UtilsVk::clearFramebuffer):
(rx::UtilsVk::blitResolveImpl):
(rx::UtilsVk::stencilBlitResolveNoShaderExport):
(rx::UtilsVk::copyImage):
(rx::UtilsVk::cullOverlayWidgets):
(rx::UtilsVk::drawOverlay):
* src/libANGLE/renderer/vulkan/UtilsVk.h:
* src/libANGLE/renderer/vulkan/VertexArrayVk.cpp:
(rx::VertexArrayVk::destroy):
(rx::VertexArrayVk::convertIndexBufferIndirectGPU):
(rx::VertexArrayVk::handleLineLoopIndirect):
(rx::VertexArrayVk::convertVertexBufferCPU):
(rx::VertexArrayVk::syncDirtyAttrib):
(rx::VertexArrayVk::updateStreamedAttribs):
(rx::VertexArrayVk::updateDefaultAttrib):
(rx::VertexArrayVk::updateClientAttribs): Deleted.
* src/libANGLE/renderer/vulkan/VertexArrayVk.h:
(rx::VertexArrayVk::getStreamingVertexAttribsMask const):
* src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp:
(rx::HardwareBufferImageSiblingVkAndroid::initImpl):
(rx::HardwareBufferImageSiblingVkAndroid::release):
* src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.h:
* src/libANGLE/renderer/vulkan/doc/FastOpenGLStateTransitions.md:
* src/libANGLE/renderer/vulkan/doc/FormatTablesAndEmulation.md:
* src/libANGLE/renderer/vulkan/doc/OpenGLLineSegmentRasterization.md:
* src/libANGLE/renderer/vulkan/doc/ShaderModuleCompilation.md:
* src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py:
(shader_path):
* src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc:
* src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc:
* src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc:
* src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc:
* src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc:
* src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc:
* src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp:
* src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp.json:
* src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp:
* src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json:
* src/libANGLE/renderer/vulkan/vk_cache_utils.cpp:
(rx::vk::GraphicsPipelineDesc::initializePipeline const):
(rx::vk::GraphicsPipelineDesc::updateVertexInput):
(rx::vk::PipelineLayoutDesc::updatePushConstantRange):
(rx::RenderPassCache::addRenderPass):
(rx::GraphicsPipelineCache::release):
(rx::GraphicsPipelineCache::insertPipeline):
* src/libANGLE/renderer/vulkan/vk_cache_utils.h:
* src/libANGLE/renderer/vulkan/vk_caps_utils.cpp:
(rx::RendererVk::ensureCapsInitialized const):
* src/libANGLE/renderer/vulkan/vk_format_map.json:
* src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp:
(rx::vk::Format::initialize):
* src/libANGLE/renderer/vulkan/vk_format_utils.cpp:
(rx::MapSwizzleState):
* src/libANGLE/renderer/vulkan/vk_helpers.cpp:
(rx::vk::DynamicBuffer::allocate):
(rx::vk::DynamicBuffer::releaseBufferListToRenderer):
(rx::vk::DynamicBuffer::release):
(rx::vk::DynamicBuffer::releaseInFlightBuffers):
(rx::vk::DescriptorPoolHelper::release):
(rx::vk::LineLoopHelper::LineLoopHelper):
(rx::vk::LineLoopHelper::streamIndicesIndirect):
(rx::vk::LineLoopHelper::release):
(rx::vk::LineLoopHelper::destroy):
(rx::vk::BufferHelper::init):
(rx::vk::BufferHelper::release):
(rx::vk::ImageHelper::ImageHelper):
(rx::vk::ImageHelper::init):
(rx::vk::ImageHelper::initExternal):
(rx::vk::ImageHelper::releaseImage):
(rx::vk::ImageHelper::releaseStagingBuffer):
(rx::vk::ImageHelper::destroy):
(rx::vk::ImageHelper::getBaseLevel):
(rx::vk::ImageHelper::setBaseAndMaxLevels):
(rx::vk::ImageHelper::generateMipmapsWithBlit):
(rx::vk::ImageHelper::removeStagedUpdates):
(rx::vk::ImageHelper::stageSubresourceUpdate):
(rx::vk::ImageHelper::stageSubresourceUpdateAndGetData):
(rx::vk::ImageHelper::stageSubresourceUpdateFromBuffer):
(rx::vk::ImageHelper::stageSubresourceUpdateFromFramebuffer):
(rx::vk::ImageHelper::allocateStagingMemory):
(rx::vk::ImageHelper::flushStagedUpdates):
(rx::vk::ImageHelper::isUpdateStaged):
(rx::vk::ImageHelper::SubresourceUpdate::SubresourceUpdate):
(rx::vk::ImageHelper::SubresourceUpdate::release):
(rx::vk::FramebufferHelper::release):
(rx::vk::ShaderProgramHelper::release):
(rx::vk::DynamicBuffer::releaseBufferListToContext): Deleted.
(rx::vk::DynamicBuffer::releaseBufferListToDisplay): Deleted.
(rx::vk::ImageHelper::dumpResources): Deleted.
* src/libANGLE/renderer/vulkan/vk_helpers.h:
(rx::vk::ShaderProgramHelper::getShader):
(rx::vk::ShaderProgramHelper::getGraphicsPipeline):
* src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp:
(rx::vk::ShaderLibrary::destroy):
(rx::vk::ShaderLibrary::getConvertIndexIndirectLineLoop_comp):
* src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni:
* src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h:
* src/libANGLE/renderer/vulkan/vk_utils.cpp:
(rx::HasKhronosValidationLayer):
(rx::HasStandardValidationLayer):
(rx::GetAvailableValidationLayers):
(rx::vk::StagingBuffer::init):
(rx::vk::StagingBuffer::release):
(rx::vk::GarbageObject::GarbageObject):
(rx::vk::GarbageObject::operator=):
(rx::vk::GarbageObject::destroy):
(rx::gl_vk::GetSamplerMipmapMode):
(rx::vk::StagingBuffer::dumpResources): Deleted.
(rx::vk::GarbageObjectBase::GarbageObjectBase): Deleted.
(rx::vk::GarbageObjectBase::destroy): Deleted.
(rx::vk::GarbageObject::destroyIfComplete): Deleted.
* src/libANGLE/renderer/vulkan/vk_utils.h:
(rx::vk::GarbageObject::valid const):
(rx::vk::GarbageObject::Get):
(rx::vk::GetGarbage):
(rx::vk::GarbageObjectBase::GarbageObjectBase): Deleted.
* src/libANGLE/renderer/vulkan/vk_wrapper.h:
(rx::vk::WrappedObject::getHandle const):
(rx::vk::WrappedObject::valid const):
(rx::vk::WrappedObject::ptr const):
(rx::vk::WrappedObject::release):
(rx::vk::WrappedObject::WrappedObject):
(rx::vk::WrappedObject::~WrappedObject):
(rx::vk::WrappedObject::operator=):
(rx::vk::priv::CommandBuffer::SupportsQueries):
(rx::vk::priv::CommandBuffer::getMemoryUsageStats const):
(rx::vk::priv::CommandBuffer::drawIndexedIndirect):
(rx::vk::priv::CommandBuffer::drawIndirect):
(rx::vk::WrappedObject::dumpResources): Deleted.
(rx::vk::priv::CommandBuffer::getMemoryUsageStats): Deleted.
* src/libANGLE/validationEGL.cpp:
(egl::ValidateCreateContext):
(egl::ValidateMakeCurrent):
(egl::ValidateCompatibleSurface):
(egl::ValidateStreamConsumerGLTextureExternalKHR):
(egl::ValidateStreamConsumerGLTextureExternalAttribsNV):
(egl::ValidateQueryStringiANGLE):
(egl::ValidateCompatibleConfigs): Deleted.
* src/libANGLE/validationEGL.h:
* src/libANGLE/validationES.cpp:
(gl::ValidateRenderbufferStorageParametersBase):
(gl::ValidateTexStorageMultisample):
* src/libANGLE/validationES.h:
(gl::ValidateVertexFormat):
* src/libANGLE/validationES2.cpp:
(gl::ValidateES2TexStorageParameters):
* src/libANGLE/validationES3.cpp:
(gl::ValidateES3TexStorageParametersBase):
* src/libANGLE/validationES31.cpp:
(gl::err::ValidateProgramResourceIndex):
* src/libGLESv2.gni:
* src/libGLESv2/entry_points_egl_ext.cpp:
* src/tests/BUILD.gn:
* src/tests/angle_deqp_tests_main.cpp:
(main):
* src/tests/angle_end2end_tests.gni:
* src/tests/compiler_tests/DebugShaderPrecision_test.cpp:
(TEST_F):
* src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp:
(sh::TEST):
* src/tests/compiler_tests/ImmutableString_test_autogen.cpp:
(sh::TEST):
* src/tests/compiler_tests/QualificationOrder_test.cpp:
(TEST_F):
* src/tests/deqp_support/angle_deqp_gtest.cpp:
(angle::InitTestHarness):
* src/tests/deqp_support/angle_deqp_libtester_main.cpp:
* src/tests/deqp_support/deqp_egl_TestExpectations: Removed.
* src/tests/deqp_support/deqp_gles2_TestExpectations: Removed.
* src/tests/deqp_support/deqp_gles31_TestExpectations: Removed.
* src/tests/deqp_support/deqp_gles3_TestExpectations: Removed.
* src/tests/deqp_support/deqp_khr_gles2_TestExpectations: Removed.
* src/tests/deqp_support/deqp_khr_gles31_TestExpectations: Removed.
* src/tests/deqp_support/deqp_khr_gles3_TestExpectations: Removed.
* src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp:
* src/tests/deqp_support/tcuANGLEPlatform.cpp:
(tcu::ANGLEPlatform::ANGLEPlatform):
* src/tests/deqp_support/tes31Context_override.cpp:
(deqp::gles31::Context::Context):
(deqp::gles31::Context::~Context):
(deqp::gles31::Context::createRenderContext):
(deqp::gles31::Context::destroyRenderContext):
(deqp::gles31::Context::getRenderTarget const):
* src/tests/egl_tests/EGLDeviceCGLTest.cpp: Added.
(EGLDeviceCGLQueryTest::EGLDeviceCGLQueryTest):
(TEST_P):
* src/tests/egl_tests/EGLDirectCompositionTest.cpp:
* src/tests/egl_tests/EGLFeatureControlTest.cpp:
(TEST_P):
* src/tests/egl_tests/EGLNoConfigContextTest.cpp: Added.
(EGLNoConfigContextTest::EGLNoConfigContextTest):
(TEST_P):
* src/tests/gl_tests/BlendFuncExtendedTest.cpp:
(angle::EXTBlendFuncExtendedDrawTestES3::LinkProgram):
* src/tests/gl_tests/ComputeShaderTest.cpp:
* src/tests/gl_tests/CopyTexImageTest.cpp:
(angle::TEST_P):
* src/tests/gl_tests/CopyTextureTest.cpp:
(angle::CopyTextureVariationsTest::initializeSourceTexture):
(angle::CopyTextureVariationsTest::testCopyTexture):
(angle::CopyTextureVariationsTest::testCopySubTexture):
(angle::TEST_P):
* src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp:
(angle::DrawBaseVertexBaseInstanceTest::DrawBaseVertexBaseInstanceTest):
(angle::DrawBaseVertexBaseInstanceTest::vertexShaderSource300):
* src/tests/gl_tests/FramebufferTest.cpp:
(TEST_P):
* src/tests/gl_tests/GLSLTest.cpp:
* src/tests/gl_tests/IndexBufferOffsetTest.cpp:
* src/tests/gl_tests/InstancingTest.cpp:
* src/tests/gl_tests/LineLoopTest.cpp:
(LineLoopTest::checkPixels):
(LineLoopTest::runTest):
(LineLoopIndirectTest::runTest):
(TEST_P):
* src/tests/gl_tests/LinkAndRelinkTest.cpp:
(angle::TEST_P):
* src/tests/gl_tests/MipmapTest.cpp:
* src/tests/gl_tests/OcclusionQueriesTest.cpp:
* src/tests/gl_tests/ParallelShaderCompileTest.cpp:
(angle::ParallelShaderCompileTest::TaskRunner::run):
* src/tests/gl_tests/ProgramInterfaceTest.cpp:
* src/tests/gl_tests/SimpleOperationTest.cpp:
* src/tests/gl_tests/StateChangeTest.cpp:
* src/tests/gl_tests/TextureTest.cpp:
(angle::SliceFormatColor):
(angle::SliceFormatColor32F):
* src/tests/gl_tests/TimerQueriesTest.cpp:
* src/tests/gl_tests/UniformBufferTest.cpp:
* src/tests/gl_tests/VertexAttributeTest.cpp:
(angle::TypeStride):
(angle::Normalize10):
(angle::Normalize2):
(angle::Pack1010102):
(angle::VertexAttributeTest::checkPixels):
(angle::VertexAttributeTest::checkRGBPixels):
(angle::VertexAttributeTest::runTest):
(angle::TEST_P):
* src/tests/gles1_conformance_tests/ConformanceTests.cpp:
(angle::TEST_P):
* src/tests/perf_tests/ANGLEPerfTest.cpp:
* src/tests/perf_tests/DrawCallPerf.cpp:
(angle::DrawArraysPerfParams::DrawArraysPerfParams): Deleted.
(angle::DrawArraysPerfParams::story const): Deleted.
(angle::operator<<): Deleted.
(angle::CreateSimpleTexture2D): Deleted.
(angle::DrawCallPerfBenchmark::DrawCallPerfBenchmark): Deleted.
(angle::DrawCallPerfBenchmark::initializeBenchmark): Deleted.
(): Deleted.
* src/tests/perf_tests/EGLMakeCurrentPerf.cpp:
* src/tests/perf_tests/LinkProgramPerfTest.cpp:
(angle::TEST_P):
* src/tests/perf_tests/MultiviewPerf.cpp:
(angle::MultiviewCPUBoundBenchmark::initializeBenchmark):
(angle::MultiviewGPUBoundBenchmark::initializeBenchmark):
(angle::TEST_P):
* src/tests/perf_tests/UniformsPerf.cpp:
(TEST_P):
* src/tests/perf_tests/VulkanPipelineCachePerf.cpp:
(rx::VulkanPipelineCachePerfTest::step):
* src/tests/perf_tests/glmark2Benchmark.cpp:
* src/tests/test_expectations/GPUTestConfig.cpp:
(angle::GPUTestConfig::GPUTestConfig):
* src/tests/test_expectations/GPUTestConfig.h:
* src/tests/test_expectations/GPUTestExpectationsParser.cpp:
(angle::GPUTestExpectationsParser::parseLine):
* src/tests/test_utils/ANGLETest.cpp:
* src/tests/test_utils/ANGLETest.h:
* src/tests/test_utils/angle_test_configs.cpp:
(angle::PlatformParameters::initDefaultParameters):
(angle::operator<<):
(angle::egl_platform::VULKAN_SWIFTSHADER):
(angle::ES2_VULKAN_SWIFTSHADER):
* src/tests/test_utils/angle_test_configs.h:
* src/tests/test_utils/angle_test_instantiate.cpp:
(angle::IsWindows7):
* src/tests/test_utils/angle_test_instantiate.h:
* src/third_party/compiler/README.chromium:
* third_party/vulkan-headers/BUILD.gn: Removed.
* third_party/vulkan-headers/vulkan_headers_script_deps.gni: Removed.
* third_party/vulkan-loader/BUILD.gn:
* third_party/vulkan-tools/BUILD.gn: Removed.
* third_party/vulkan-validation-layers/BUILD.gn: Removed.
* third_party/vulkan-validation-layers/dummy_spirv_tools_commit_id.h: Removed.
* util/EGLWindow.cpp:
* util/fuchsia/ScenicWindow.cpp:
(ScenicWindow::resetNativeWindow):
* util/posix/crash_handler_posix.cpp: Renamed from Source/ThirdParty/ANGLE/util/posix/Posix_crash_handler.cpp.
* util/posix/test_utils_posix.cpp: Renamed from Source/ThirdParty/ANGLE/util/posix/Posix_system_utils.cpp.
* util/test_utils.h: Renamed from Source/ThirdParty/ANGLE/util/system_utils.h.
* util/util.gni:
* util/util_gl.h:
* util/windows/WGLWindow.cpp:
* util/windows/test_utils_win.cpp: Renamed from Source/ThirdParty/ANGLE/util/windows/Windows_system_utils.cpp.
(angle::PrintStackBacktrace):
* util/windows/win32/test_utils_win32.cpp: Renamed from Source/ThirdParty/ANGLE/util/windows/win32/Win32_system_utils.cpp.
* util/x11/X11Window.cpp:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251018 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/ThirdParty/ANGLE/.gitignore b/Source/ThirdParty/ANGLE/.gitignore
index e11370d..e1d5631 100644
--- a/Source/ThirdParty/ANGLE/.gitignore
+++ b/Source/ThirdParty/ANGLE/.gitignore
@@ -44,6 +44,7 @@
 /third_party/rapidjson/src
 /third_party/spirv-headers/src
 /third_party/spirv-tools/src
+/third_party/SwiftShader
 /third_party/vulkan-headers/src
 /third_party/vulkan-loader/src
 /third_party/vulkan-tools/src
diff --git a/Source/ThirdParty/ANGLE/ANGLE.plist b/Source/ThirdParty/ANGLE/ANGLE.plist
index 54d1c78..ab15d22 100644
--- a/Source/ThirdParty/ANGLE/ANGLE.plist
+++ b/Source/ThirdParty/ANGLE/ANGLE.plist
@@ -6,13 +6,13 @@
 		<key>OpenSourceProject</key>
 		<string>ANGLE</string>
 		<key>OpenSourceVersion</key>
-		<string>79ad0411911b2fc84834c3705f55707be9e4b498</string>
+		<string>c5e0ac757a112a24a0118d434e652fd7b558e6a8</string>
 		<key>OpenSourceWebsiteURL</key>
 		<string>http://code.google.com/p/angleproject/</string>
 		<key>OpenSourceSCM</key>
-		<string>git clone https://chromium.googlesource.com/angle/angle &amp;&amp; cd angle &amp;&amp; git checkout 79ad0411911b2fc84834c3705f55707be9e4b498</string>
+		<string>git clone https://chromium.googlesource.com/angle/angle &amp;&amp; cd angle &amp;&amp; git checkout c5e0ac757a112a24a0118d434e652fd7b558e6a8</string>
 		<key>OpenSourceImportDate</key>
-		<string>2019-09-10</string>
+		<string>2019-10-09</string>
 		<key>OpenSourceLicense</key>
 		<string>BSD</string>
 		<key>OpenSourceLicenseFile</key>
diff --git a/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj b/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj
index 30ea37f..a71ea3d 100644
--- a/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj
+++ b/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj
@@ -571,6 +571,8 @@
 		5CCD81B01DBFEA5C006066B8 /* ConstantUnion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD81991DBFEA5C006066B8 /* ConstantUnion.cpp */; };
 		5CCD81B51DBFEA5C006066B8 /* QualifierTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5CCD819E1DBFEA5C006066B8 /* QualifierTypes.cpp */; };
 		5CCD81B61DBFEA5C006066B8 /* QualifierTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CCD819F1DBFEA5C006066B8 /* QualifierTypes.h */; };
+		6E31A0A3234EEED400C84784 /* DeviceCGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E31A0A1234EEED400C84784 /* DeviceCGL.cpp */; };
+		6E31A0A4234EEED400C84784 /* DeviceCGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E31A0A2234EEED400C84784 /* DeviceCGL.h */; };
 		6E344AB222BC35C3001DDB2C /* entry_points_gles_ext_autogen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E344AAE22BC35C3001DDB2C /* entry_points_gles_ext_autogen.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		6E344AB322BC35C3001DDB2C /* entry_points_gles_ext_autogen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E344AAF22BC35C3001DDB2C /* entry_points_gles_ext_autogen.cpp */; };
 		6E344AB622BC57C8001DDB2C /* entry_points_gles_1_0_autogen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E344AB422BC57C8001DDB2C /* entry_points_gles_1_0_autogen.cpp */; };
@@ -693,7 +695,6 @@
 		A30307942305F959002DA972 /* proc_table_egl.h in Headers */ = {isa = PBXBuildFile; fileRef = A30307902305F959002DA972 /* proc_table_egl.h */; };
 		A30307952305F959002DA972 /* proc_table_egl_autogen.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A30307912305F959002DA972 /* proc_table_egl_autogen.cpp */; };
 		A303079923060253002DA972 /* angle_gl.h in Headers */ = {isa = PBXBuildFile; fileRef = A303079823060253002DA972 /* angle_gl.h */; };
-		A303079B230624F7002DA972 /* FrameCapture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A303079A230624F7002DA972 /* FrameCapture.cpp */; };
 		A303079D23062565002DA972 /* driver_utils_mac.mm in Sources */ = {isa = PBXBuildFile; fileRef = A303079C23062564002DA972 /* driver_utils_mac.mm */; };
 		A30307A0230625C6002DA972 /* android_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A303079E230625C6002DA972 /* android_util.cpp */; };
 		A30307A1230625C6002DA972 /* android_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A303079F230625C6002DA972 /* android_util.h */; };
@@ -718,6 +719,8 @@
 			compilerSpec = com.apple.compilers.proxy.script;
 			filePatterns = "*.h";
 			fileType = pattern.proxy;
+			inputFiles = (
+			);
 			isEditable = 1;
 			name = "Files '*.h' using Script";
 			outputFiles = (
@@ -1320,6 +1323,8 @@
 		5D7C59C51208C68B001C873E /* ANGLE.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ANGLE.xcconfig; sourceTree = "<group>"; };
 		5D7C59C61208C68B001C873E /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
 		5D7C59C71208C68B001C873E /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
+		6E31A0A1234EEED400C84784 /* DeviceCGL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceCGL.cpp; sourceTree = "<group>"; };
+		6E31A0A2234EEED400C84784 /* DeviceCGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceCGL.h; sourceTree = "<group>"; };
 		6E344AAE22BC35C3001DDB2C /* entry_points_gles_ext_autogen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = entry_points_gles_ext_autogen.h; sourceTree = "<group>"; };
 		6E344AAF22BC35C3001DDB2C /* entry_points_gles_ext_autogen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = entry_points_gles_ext_autogen.cpp; sourceTree = "<group>"; };
 		6E344AB422BC57C8001DDB2C /* entry_points_gles_1_0_autogen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = entry_points_gles_1_0_autogen.cpp; sourceTree = "<group>"; };
@@ -1443,7 +1448,6 @@
 		A30307902305F959002DA972 /* proc_table_egl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = proc_table_egl.h; sourceTree = "<group>"; };
 		A30307912305F959002DA972 /* proc_table_egl_autogen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = proc_table_egl_autogen.cpp; sourceTree = "<group>"; };
 		A303079823060253002DA972 /* angle_gl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = angle_gl.h; path = include/angle_gl.h; sourceTree = "<group>"; };
-		A303079A230624F7002DA972 /* FrameCapture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameCapture.cpp; sourceTree = "<group>"; };
 		A303079C23062564002DA972 /* driver_utils_mac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = driver_utils_mac.mm; sourceTree = "<group>"; };
 		A303079E230625C6002DA972 /* android_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = android_util.cpp; sourceTree = "<group>"; };
 		A303079F230625C6002DA972 /* android_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = android_util.h; sourceTree = "<group>"; };
@@ -1774,7 +1778,6 @@
 				5C1DBC6B1B0438D200235552 /* Framebuffer.h */,
 				5C1DBC6C1B0438D200235552 /* FramebufferAttachment.cpp */,
 				5C1DBC6D1B0438D200235552 /* FramebufferAttachment.h */,
-				A303079A230624F7002DA972 /* FrameCapture.cpp */,
 				5CCD595D2284F7960018F2D8 /* GLES1Renderer.cpp */,
 				5CCD59522284F7940018F2D8 /* GLES1Renderer.h */,
 				5CCD59552284F7950018F2D8 /* GLES1State.cpp */,
@@ -2113,6 +2116,8 @@
 			children = (
 				5CCD59722284FA820018F2D8 /* ContextCGL.cpp */,
 				5CCD59752284FA820018F2D8 /* ContextCGL.h */,
+				6E31A0A1234EEED400C84784 /* DeviceCGL.cpp */,
+				6E31A0A2234EEED400C84784 /* DeviceCGL.h */,
 				5CB301491DE39F4700D2C405 /* DisplayCGL.h */,
 				5CB3014A1DE39F4700D2C405 /* DisplayCGL.mm */,
 				5CCD59712284FA820018F2D8 /* IOSurfaceSurfaceCGL.h */,
@@ -2549,6 +2554,7 @@
 				5C55D65E22826B9F00B5BA2C /* DeclareAndInitBuiltinsForInstancedMultiview.h in Headers */,
 				5C55D68922826B9F00B5BA2C /* DeferGlobalInitializers.h in Headers */,
 				5C1DBDE71B0438D300235552 /* Device.h in Headers */,
+				6E31A0A4234EEED400C84784 /* DeviceCGL.h in Headers */,
 				5CB304E01DE4164800D2C405 /* DeviceImpl.h in Headers */,
 				31012E2718B97B9B0039062F /* Diagnostics.h in Headers */,
 				A264F8AD16974DED006FAA5A /* DiagnosticsBase.h in Headers */,
@@ -3007,6 +3013,7 @@
 				5C55D6AE22826BC800B5BA2C /* DeclareAndInitBuiltinsForInstancedMultiview.cpp in Sources */,
 				5C55D6AF22826BC800B5BA2C /* DeferGlobalInitializers.cpp in Sources */,
 				5C1DBDE61B0438D300235552 /* Device.cpp in Sources */,
+				6E31A0A3234EEED400C84784 /* DeviceCGL.cpp in Sources */,
 				5CB304DF1DE4164800D2C405 /* DeviceImpl.cpp in Sources */,
 				31012E2618B97B9B0039062F /* Diagnostics.cpp in Sources */,
 				A264F8AC16974DED006FAA5A /* DiagnosticsBase.cpp in Sources */,
@@ -3057,7 +3064,6 @@
 				5C1DBDF31B0438D300235552 /* Framebuffer.cpp in Sources */,
 				5C1DBDF51B0438D300235552 /* FramebufferAttachment.cpp in Sources */,
 				5CB301271DE39F1A00D2C405 /* FramebufferGL.cpp in Sources */,
-				A303079B230624F7002DA972 /* FrameCapture.cpp in Sources */,
 				5C55D6E422826C7900B5BA2C /* FunctionLookup.cpp in Sources */,
 				5CB3012B1DE39F1A00D2C405 /* FunctionsGL.cpp in Sources */,
 				A303070F2305F705002DA972 /* generatemip.inc in Sources */,
diff --git a/Source/ThirdParty/ANGLE/BUILD.gn b/Source/ThirdParty/ANGLE/BUILD.gn
index a2ce2a9..0eccb92 100644
--- a/Source/ThirdParty/ANGLE/BUILD.gn
+++ b/Source/ThirdParty/ANGLE/BUILD.gn
@@ -3,15 +3,18 @@
 # found in the LICENSE file.
 
 # import the use_x11 variable
-import("//build/config/linux/pkg_config.gni")
-import("//build/config/ui.gni")
-import("//testing/libfuzzer/fuzzer_test.gni")
 import("gni/angle.gni")
-if (is_android) {
-  # android/rules.gni can only be imported for Android targets
-  import("//build/config/android/config.gni")
-  import("//build/config/android/rules.gni")
-  import("android/angle_apk.gni")
+if (angle_has_build) {
+  import("//build/config/linux/pkg_config.gni")
+  import("//build/config/ui.gni")
+  import("//testing/libfuzzer/fuzzer_test.gni")
+
+  if (is_android) {
+    # android/rules.gni can only be imported for Android targets
+    import("//build/config/android/config.gni")
+    import("//build/config/android/rules.gni")
+    import("android/angle_apk.gni")
+  }
 }
 
 declare_args() {
@@ -25,9 +28,13 @@
   # Defaults to capture building to $root_out_dir/angle_libs/with_capture.
   # Switch on to build capture to $root_out_dir.
   angle_with_capture_by_default = false
+
+  # Don't build extra (test, samples etc) for Windows UWP. We don't have
+  # infrastructure (e.g. windowing helper functions) in place to run them.
+  angle_build_all = !angle_is_winuwp && angle_has_build
 }
 
-if (!build_with_chromium) {
+if (!build_with_chromium && angle_build_all) {
   group("all") {
     testonly = true
     deps = [
@@ -96,12 +103,6 @@
     defines += [ "ANGLE_IS_32_BIT_CPU" ]
   }
 
-  if (angle_enable_vulkan) {
-    if (angle_enable_vulkan_gpu_trace_events) {
-      defines += [ "ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS=1" ]
-    }
-  }
-
   if (angle_enable_trace) {
     defines += [ "ANGLE_ENABLE_DEBUG_TRACE=1" ]
   }
@@ -139,6 +140,10 @@
       "-Wshorten-64-to-32",
     ]
   }
+
+  if (angle_is_winuwp) {
+    cflags += [ "/wd4447" ]  # 'main' signature found without threading model.
+  }
 }
 
 # This config adds build-ids to the associated library.
@@ -157,9 +162,11 @@
   }
 }
 
+_use_copy_compiler_dll = angle_has_build && is_win && target_cpu != "arm64"
+
 # Windows ARM64 is available since 10.0.16299 so no need to copy
 # d3dcompiler_47.dll because this file is available as inbox.
-if (is_win && target_cpu != "arm64") {
+if (_use_copy_compiler_dll) {
   # We also ship an older DLL for compatiblity with Windows 7 machines without
   # the UCRT. This DLL isn't available in the standard SDK distribution.
   _old_compiler = "$windows_sdk_path/Redist/D3D/$target_cpu/d3dcompiler_old.dll"
@@ -196,6 +203,7 @@
 
   public_deps = [
     ":angle_common",
+    ":angle_translator_headers",
   ]
 }
 
@@ -222,7 +230,7 @@
   }
 }
 
-if (is_win) {
+if (is_win && !angle_is_winuwp) {
   angle_source_set("angle_stack_walker") {
     sources = [
       "util/windows/third_party/StackWalker/src/StackWalker.cpp",
@@ -250,13 +258,15 @@
   configs -= [ "${angle_root}:extra_warnings" ]
 }
 
-fuzzer_test("xxhash_fuzzer") {
-  sources = [
-    "src/common/third_party/xxhash/xxhash_fuzzer.cpp",
-  ]
-  deps = [
-    ":xxhash",
-  ]
+if (angle_has_build) {
+  fuzzer_test("xxhash_fuzzer") {
+    sources = [
+      "src/common/third_party/xxhash/xxhash_fuzzer.cpp",
+    ]
+    deps = [
+      ":xxhash",
+    ]
+  }
 }
 
 angle_static_library("angle_common") {
@@ -278,7 +288,7 @@
   ]
   public_configs += [ ":angle_common_config" ]
   all_dependent_configs = [ ":angle_release_asserts_config" ]
-  if (use_fuzzing_engine) {
+  if (angle_has_build && use_fuzzing_engine) {
     all_dependent_configs += [ ":angle_disable_pool_alloc" ]
   }
 }
@@ -290,11 +300,18 @@
   ]
 }
 
+angle_source_set("angle_image_util_headers") {
+  sources = libangle_image_util_headers
+  public_deps = [
+    ":angle_common",
+  ]
+}
+
 angle_static_library("angle_image_util") {
   sources = libangle_image_util_sources
   public_configs += [ ":angle_image_util_config" ]
   public_deps = [
-    ":angle_common",
+    ":angle_image_util_headers",
   ]
 }
 
@@ -338,7 +355,9 @@
 
   if (is_win) {
     sources += libangle_gpu_info_util_win_sources
-    libs += [ "setupapi.lib" ]
+    if (!angle_is_winuwp) {
+      libs += [ "setupapi.lib" ]
+    }
     libs += [ "dxgi.lib" ]
   }
 
@@ -374,6 +393,13 @@
   }
 }
 
+angle_source_set("angle_translator_headers") {
+  sources = angle_translator_exported_headers
+  public_deps = [
+    ":includes",
+  ]
+}
+
 angle_static_library("translator") {
   sources = angle_translator_sources
   defines = []
@@ -407,6 +433,7 @@
 
   public_deps = [
     ":angle_common",
+    ":angle_translator_headers",
   ]
 
   if (is_win) {
@@ -493,15 +520,13 @@
       defines += [ "ANGLE_ENABLE_OPENGL_NULL" ]
     }
   }
-  if (angle_enable_vulkan) {
-    defines += [ "ANGLE_ENABLE_VULKAN" ]
-    if (angle_enable_custom_vulkan_cmd_buffers) {
-      defines += [ "ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS=1" ]
-    }
-  }
   if (angle_enable_null) {
     defines += [ "ANGLE_ENABLE_NULL" ]
   }
+
+  if (angle_enable_vulkan) {
+    configs = [ "src/libANGLE/renderer/vulkan:angle_vulkan_backend_config" ]
+  }
 }
 
 config("libANGLE_config") {
@@ -533,53 +558,12 @@
   }
 }
 
-if (angle_enable_vulkan) {
-  config("vulkan_config") {
-    defines = [
-      "ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"",
-      "ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"",
-    ]
-    if (is_android) {
-      libs = [ "vulkan" ]
-    }
-  }
-
-  # Use this target to include everything ANGLE needs for Vulkan.
-  group("angle_vulkan") {
-    public_deps = [
-      "$angle_root/third_party/vulkan-headers:vulkan_headers",
-    ]
-    public_configs = [ ":vulkan_config" ]
-    data_deps = []
-    if (!is_android && !is_fuchsia) {
-      deps = [
-        "$angle_root/third_party/vulkan-loader:libvulkan",
-      ]
-      data_deps += [ "$angle_root/third_party/vulkan-tools:VkICD_mock_icd" ]
-      public_configs +=
-          [ "$angle_root/third_party/vulkan-loader:vulkan_loader_config" ]
-    }
-    if (is_fuchsia) {
-      public_deps += [
-        "$angle_root/src/common/fuchsia_egl",
-        "//third_party/fuchsia-sdk:vulkan_base",
-        "//third_party/fuchsia-sdk/sdk:vulkan",
-      ]
-    }
-
-    if (angle_enable_vulkan_validation_layers) {
-      if (is_fuchsia) {
-        deps = [
-          "//third_party/fuchsia-sdk:vulkan_validation",
-        ]
-      } else {
-        data_deps += [ "$angle_root/third_party/vulkan-validation-layers:vulkan_validation_layers" ]
-        if (!is_android) {
-          data_deps += [ "$angle_root/third_party/vulkan-validation-layers:vulkan_gen_json_files" ]
-        }
-      }
-    }
-  }
+angle_source_set("libANGLE_headers") {
+  sources = libangle_headers
+  public_deps = [
+    ":angle_common",
+    ":angle_translator_headers",
+  ]
 }
 
 angle_source_set("libANGLE_base") {
@@ -596,6 +580,7 @@
     ":angle_common",
     ":angle_gpu_info_util",
     ":angle_version",
+    ":libANGLE_headers",
     ":translator",
   ]
   deps = [
@@ -603,6 +588,10 @@
     ":includes",
   ]
 
+  if (angle_enable_vulkan) {
+    public_deps += [ "src/libANGLE/renderer/vulkan:angle_vulkan_backend" ]
+  }
+
   # Enable extra Chromium style warnings for libANGLE.
   if (is_clang) {
     suppressed_configs -= [ "//build/config/clang:find_bad_constructs" ]
@@ -622,7 +611,13 @@
 
   if (angle_enable_d3d11) {
     sources += libangle_d3d11_sources
-    sources += libangle_d3d11_win32_sources
+
+    if (angle_is_winuwp) {
+      sources += libangle_d3d11_winuwp_sources
+    } else {
+      sources += libangle_d3d11_win32_sources
+    }
+
     libs += [ "dxguid.lib" ]
     import("src/libANGLE/renderer/d3d/d3d11/d3d11_blit_shaders_autogen.gni")
     sources += libangle_d3d11_blit_shaders
@@ -671,38 +666,6 @@
     }
   }
 
-  if (angle_enable_vulkan) {
-    sources += libangle_vulkan_sources
-    if (is_win) {
-      sources += libangle_vulkan_win32_sources
-    }
-    if (is_linux) {
-      sources += libangle_vulkan_xcb_sources
-    }
-    if (is_fuchsia) {
-      sources += libangle_vulkan_fuchsia_sources
-      deps += [
-        "$angle_root/src/common/fuchsia_egl",
-        "$angle_root/src/common/fuchsia_egl:backend",
-      ]
-    }
-    if (is_android) {
-      sources += libangle_vulkan_android_sources
-      libs += [ "vulkan" ]
-    }
-    deps += [
-      ":angle_vulkan",
-      "${angle_glslang_dir}:glslang_default_resource_limits_sources",
-      "${angle_glslang_dir}:glslang_sources",
-      "${angle_spirv_tools_dir}:spvtools_val",
-    ]
-    public_deps += [ "$angle_root/third_party/vulkan-headers:vulkan_headers" ]
-
-    # Include generated shaders.
-    import("src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni")
-    sources += angle_vulkan_internal_shaders
-  }
-
   if (angle_enable_null) {
     sources += libangle_null_sources
   }
@@ -727,7 +690,7 @@
 
   # Windows ARM64 is available since 10.0.16299 so no need to copy
   # d3dcompiler_47.dll because this file is available as inbox.
-  if (is_win && target_cpu != "arm64") {
+  if (_use_copy_compiler_dll) {
     data_deps = [
       ":copy_compiler_dll",
     ]
@@ -748,7 +711,7 @@
   ]
   public_configs = [ ":angle_frame_capture_disabled" ]
   sources = [
-    "src/libANGLE/FrameCapture.cpp",
+    "src/libANGLE/FrameCapture_mock.cpp",
   ]
 
   # gl_enum_utils defaults included in with_capture build
@@ -852,7 +815,7 @@
   }
 }
 
-if (is_win) {
+if (is_win && !angle_is_winuwp) {
   angle_shared_library("libGL") {
     sources = libgl_sources
 
@@ -1006,7 +969,7 @@
     "util/util_export.h",
   ]
 
-  if (is_win) {
+  if (is_win && !angle_is_winuwp) {
     sources += [ "util/windows/wgl_loader_autogen.h" ]
   }
 
@@ -1023,7 +986,7 @@
     "util/gles_loader_autogen.cpp",
   ]
 
-  if (is_win) {
+  if (is_win && !angle_is_winuwp) {
     sources += [ "util/windows/wgl_loader_autogen.cpp" ]
   }
 
@@ -1069,7 +1032,7 @@
     public_deps = []
     libs = []
 
-    if (is_win) {
+    if (is_win && !angle_is_winuwp) {
       sources += util_win_sources
       deps += [ ":angle_stack_walker" ]
     }
@@ -1112,6 +1075,7 @@
       sources += util_fuchsia_sources
       public_deps += [
         "$angle_root/src/common/fuchsia_egl",
+        "src/libANGLE/renderer/vulkan:angle_vulkan",
         "//third_party/fuchsia-sdk/sdk:async_loop_cpp",
         "//third_party/fuchsia-sdk/sdk:async_loop_default",
         "//third_party/fuchsia-sdk/sdk:fdio",
@@ -1128,7 +1092,7 @@
     if (is_shared_library) {
       defines = [ "LIBANGLE_UTIL_IMPLEMENTATION" ]
 
-      if (is_win) {
+      if (is_win && !angle_is_winuwp) {
         sources += util_win_shared_sources
       }
 
@@ -1164,45 +1128,47 @@
   ]
 }
 
-config("angle_feature_support_config") {
-  include_dirs = [
-    "include",
-    "src",
-  ]
-  defines = [ "LIBFEATURE_SUPPORT_IMPLEMENTATION" ]
-  if (is_debug) {
-    defines += [ "ANGLE_FEATURE_UTIL_LOG_VERBOSE" ]
-  }
-}
-
-angle_shared_library("libfeature_support") {
-  output_name = "libfeature_support${angle_libs_suffix}"
-
-  if (is_android) {
-    libs = [ "log" ]
+if (angle_has_build) {
+  config("angle_feature_support_config") {
+    include_dirs = [
+      "include",
+      "src",
+    ]
+    defines = [ "LIBFEATURE_SUPPORT_IMPLEMENTATION" ]
+    if (is_debug) {
+      defines += [ "ANGLE_FEATURE_UTIL_LOG_VERBOSE" ]
+    }
   }
 
-  public_configs += [
-    ":angle_feature_support_config",
-    "${angle_jsoncpp_dir}:jsoncpp_config",
-  ]
+  angle_shared_library("libfeature_support") {
+    output_name = "libfeature_support${angle_libs_suffix}"
 
-  if (is_mac && !is_component_build) {
-    ldflags = [
-      "-install_name",
-      "@rpath/${target_name}.dylib",
+    if (is_android) {
+      libs = [ "log" ]
+    }
+
+    public_configs += [
+      ":angle_feature_support_config",
+      "${angle_jsoncpp_dir}:jsoncpp_config",
+    ]
+
+    if (is_mac && !is_component_build) {
+      ldflags = [
+        "-install_name",
+        "@rpath/${target_name}.dylib",
+      ]
+    }
+
+    sources = [
+      "src/feature_support_util/feature_support_util.cpp",
+      "src/feature_support_util/feature_support_util.h",
+    ]
+
+    deps = [
+      ":angle_gpu_info_util",
+      "${angle_jsoncpp_dir}:jsoncpp",
     ]
   }
-
-  sources = [
-    "src/feature_support_util/feature_support_util.cpp",
-    "src/feature_support_util/feature_support_util.h",
-  ]
-
-  deps = [
-    ":angle_gpu_info_util",
-    "${angle_jsoncpp_dir}:jsoncpp",
-  ]
 }
 
 if (!is_component_build && is_android && symbol_level != 0) {
@@ -1227,8 +1193,9 @@
 
     if (angle_enable_vulkan_validation_layers) {
       foreach(_layer, vulkan_validation_layers) {
-        deps +=
-            [ "${angle_root}/third_party/vulkan-validation-layers:${_layer}" ]
+        deps += [
+          "${angle_root}/third_party/vulkan-validation-layers/src:${_layer}",
+        ]
       }
     }
 
@@ -1268,3 +1235,11 @@
     ]
   }
 }
+
+# Note: libGLESv1_CM is not presently included because most Chrome users don't care about it.
+group("angle") {
+  data_deps = [
+    ":libGLESv2",
+    ":libEGL",
+  ]
+}
diff --git a/Source/ThirdParty/ANGLE/CMakeLists.txt b/Source/ThirdParty/ANGLE/CMakeLists.txt
index ab6902a..0edf1f9 100644
--- a/Source/ThirdParty/ANGLE/CMakeLists.txt
+++ b/Source/ThirdParty/ANGLE/CMakeLists.txt
@@ -57,7 +57,9 @@
     ${angle_translator_essl_sources}
     ${angle_translator_glsl_sources}
     ${angle_translator_sources}
-    ${libangle_capture_sources}
+    # Add this in if frame capture is desired, and add the appropriate
+    # definitions.
+    # ${libangle_capture_sources}
 )
 
 if (UNIX)
diff --git a/Source/ThirdParty/ANGLE/CONTRIBUTORS b/Source/ThirdParty/ANGLE/CONTRIBUTORS
index 14afabb..caad859 100644
--- a/Source/ThirdParty/ANGLE/CONTRIBUTORS
+++ b/Source/ThirdParty/ANGLE/CONTRIBUTORS
@@ -115,6 +115,7 @@
  Shawn Hargreaves
  Rafael Cintron
  James Clarke
+ Nathan Zabriskie
 
 Microsoft Open Technologies, Inc.
  Cooper Partin
@@ -155,8 +156,10 @@
  Hyunseok Ko
  Jaedon Lee
  Jeff Vigil
+ Kyeongmin Kim
  Minkyu Jeong
  Mohan Maiya
+ Sangwon Park
 
 Arm Ltd.
  Fei Yang
diff --git a/Source/ThirdParty/ANGLE/ChangeLog b/Source/ThirdParty/ANGLE/ChangeLog
index dd3a6c5..0635fb2 100644
--- a/Source/ThirdParty/ANGLE/ChangeLog
+++ b/Source/ThirdParty/ANGLE/ChangeLog
@@ -1,3 +1,1286 @@
+2019-10-11  Kenneth Russell  <kbr@chromium.org>
+
+        Roll ANGLE for ETC extensions and EGL_ANGLE_device_cgl
+        https://bugs.webkit.org/show_bug.cgi?id=202780
+
+        Roll ANGLE to c5e0ac757a112a24a0118d434e652fd7b558e6a8 via new
+        update-angle.sh script.
+
+        Reviewed by Alex Christensen.
+
+        * .gitignore:
+        * ANGLE.plist:
+        * ANGLE.xcodeproj/project.pbxproj:
+        * BUILD.gn:
+        * CMakeLists.txt:
+        * CONTRIBUTORS:
+        * DEPS:
+        * GLESv2.cmake:
+        * OWNERS:
+        * PRESUBMIT.py:
+        (_CheckExportValidity):
+        (CheckChangeOnUpload):
+        (CheckChangeOnCommit):
+        * README.md:
+        * android/angle_apk.gni:
+        * build_overrides/angle.gni:
+        * changes.diff:
+        * doc/DevSetup.md:
+        * dotfile_settings.gni:
+        * extensions/ANGLE_compressed_texture_etc.txt: Added.
+        * extensions/EGL_ANGLE_device_cgl.txt: Added.
+        * extensions/EGL_ANGLE_feature_control.txt:
+        * extensions/EGL_ANGLE_platform_angle_d3d11on12.txt: Added.
+        * extensions/EGL_ANGLE_platform_angle_device_type_swiftshader.txt: Added.
+        * extensions/EGL_ANGLE_platform_angle_metal.txt: Added.
+        * gni/angle.gni:
+        * include/EGL/eglext_angle.h:
+        * include/platform/Feature.h:
+        (angle::Feature::Feature):
+        * include/platform/FeaturesD3D.h:
+        * include/platform/FeaturesGL.h:
+        * include/platform/FeaturesVk.h:
+        * include/platform/FrontendFeatures.h:
+        * samples/WindowTest/WindowTest.cpp:
+        * samples/gles1/DrawTexture.cpp:
+        * samples/multi_texture/MultiTexture.cpp:
+        * samples/multiple_draw_buffers/MultipleDrawBuffers.cpp:
+        * samples/particle_system/ParticleSystem.cpp:
+        * samples/sample_util/SampleApplication.cpp:
+        (SampleApplication::SampleApplication):
+        * samples/sample_util/SampleApplication.h:
+        * scripts/code_generation_hashes/ANGLE_format.json:
+        * scripts/code_generation_hashes/ANGLE_load_functions_table.json:
+        * scripts/code_generation_hashes/D3D11_format.json:
+        * scripts/code_generation_hashes/DXGI_format.json:
+        * scripts/code_generation_hashes/GL_EGL_WGL_loader.json:
+        * scripts/code_generation_hashes/GL_EGL_entry_points.json:
+        * scripts/code_generation_hashes/OpenGL_dispatch_table.json:
+        * scripts/code_generation_hashes/Static_builtins.json:
+        * scripts/code_generation_hashes/Vulkan_format.json:
+        * scripts/code_generation_hashes/Vulkan_internal_shader_programs.json:
+        * scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json:
+        * scripts/code_generation_hashes/proc_table.json:
+        * scripts/export_targets.py:
+        (has_all_includes):
+        * scripts/generate_entry_points.py:
+        (get_resource_id_types):
+        (format_resource_id_types):
+        (write_capture_helper_header):
+        (get_resource_id_type_from_param_type):
+        (format_param_type_to_resource_id_type_case):
+        (format_param_type_resource_id_cases):
+        (format_resource_id_type_name_case):
+        (write_capture_helper_source):
+        * scripts/generate_vulkan_layers_json.py:
+        (main):
+        * scripts/registry_xml.py:
+        * src/common/PackedEnums.cpp:
+        (gl::operator<<):
+        * src/common/PackedEnums.h:
+        (angle::EnumSize<E>):
+        (gl::FromGLenum<VertexAttribType>):
+        (gl::ToGLenum):
+        (gl::ValueEquals):
+        (gl::operator==):
+        (gl::operator!=):
+        * src/common/android_util.cpp:
+        (angle::android::NativePixelFormatToGLInternalFormat):
+        * src/common/angleutils.h:
+        * src/common/debug.h:
+        * src/common/platform.h:
+        * src/common/system_utils_winuwp.cpp: Added.
+        (angle::SetEnvironmentVar):
+        (angle::GetEnvironmentVar):
+        (angle::GetSharedLibraryExtension):
+        (angle::GetPathSeparator):
+        (angle::GetCurrentTime):
+        (angle::UwpLibrary::UwpLibrary):
+        (angle::OpenSharedLibrary):
+        (angle::IsDebuggerAttached):
+        (angle::BreakDebugger):
+        * src/common/tls.cpp:
+        (CreateTLSIndex):
+        (DestroyTLSIndex):
+        (SetTLSValue):
+        (GetTLSValue):
+        * src/common/tls.h:
+        * src/common/utilities.cpp:
+        (gl::StripLastArrayIndex):
+        * src/common/utilities.h:
+        * src/compiler.gni:
+        * src/compiler/translator/Compiler.cpp:
+        (sh::TCompiler::compileTreeImpl):
+        * src/compiler/translator/ImmutableString_ESSL_autogen.cpp:
+        * src/compiler/translator/ImmutableString_autogen.cpp:
+        * src/compiler/translator/IntermNode.h:
+        (sh::TIntermPreprocessorDirective::getDirective const): Deleted.
+        (sh::TIntermPreprocessorDirective::getCommand const): Deleted.
+        * src/compiler/translator/ParseContext.cpp:
+        (sh::TParseContext::TParseContext):
+        (sh::TParseContext::checkIsValidArraySize):
+        (sh::TParseContext::parseFunctionDeclarator):
+        * src/compiler/translator/ParseContext.h:
+        (sh::TParseContext::getOutputType const):
+        * src/compiler/translator/ShaderVars.cpp:
+        (sh::ShaderVariable::operator=):
+        * src/compiler/translator/SymbolTable.cpp:
+        (sh::TSymbolTable::setGlInArraySize):
+        (sh::TSymbolTable::gl_FragData const):
+        (sh::TSymbolTable::gl_SecondaryFragDataEXT const):
+        (sh::SymbolRule::get const):
+        (sh::FindMangledBuiltIn):
+        (sh::UnmangledEntry::matches const):
+        * src/compiler/translator/SymbolTable.h:
+        (sh::SymbolRule::SymbolRule):
+        (sh::SymbolRule::Get):
+        (sh::UnmangledEntry::UnmangledEntry):
+        (sh::SymbolEntry::SymbolEntry): Deleted.
+        * src/compiler/translator/SymbolTable_ESSL_autogen.cpp:
+        (sh::BuiltInVariable::angle_BaseInstance):
+        (sh::BuiltInVariable::angle_BaseVertex):
+        (sh::BuiltInVariable::gl_BaseInstance):
+        (sh::BuiltInVariable::gl_BaseVertex):
+        (sh::BuiltInVariable::gl_DrawID):
+        (sh::BuiltInVariable::gl_FragColor):
+        (sh::BuiltInVariable::gl_FragCoord):
+        (sh::BuiltInVariable::gl_FragDepth):
+        (sh::BuiltInVariable::gl_FrontFacing):
+        (sh::BuiltInVariable::gl_GlobalInvocationID):
+        (sh::BuiltInVariable::gl_InstanceID):
+        (sh::BuiltInVariable::gl_InstanceIndex):
+        (sh::BuiltInVariable::gl_InvocationID):
+        (sh::BuiltInVariable::gl_LastFragColor):
+        (sh::BuiltInVariable::gl_LastFragColorARM):
+        (sh::BuiltInVariable::gl_Layer):
+        (sh::BuiltInVariable::gl_LayerGS):
+        (sh::BuiltInVariable::gl_LayerVS):
+        (sh::BuiltInVariable::gl_LocalInvocationID):
+        (sh::BuiltInVariable::gl_LocalInvocationIndex):
+        (sh::BuiltInVariable::gl_NumWorkGroups):
+        (sh::BuiltInVariable::gl_PointCoord):
+        (sh::BuiltInVariable::gl_PointSize):
+        (sh::BuiltInVariable::gl_Position):
+        (sh::BuiltInVariable::gl_PrimitiveID):
+        (sh::BuiltInVariable::gl_PrimitiveIDGS):
+        (sh::BuiltInVariable::gl_PrimitiveIDIn):
+        (sh::BuiltInVariable::gl_SecondaryFragColorEXT):
+        (sh::BuiltInVariable::gl_VertexID):
+        (sh::BuiltInVariable::gl_VertexIndex):
+        (sh::BuiltInVariable::gl_ViewID_OVR):
+        (sh::BuiltInVariable::gl_ViewportIndex):
+        (sh::BuiltInVariable::gl_WorkGroupID):
+        (sh::BuiltInVariable::gl_WorkGroupSize):
+        (sh::TSymbolTable::initializeBuiltInVariables):
+        (sh::TSymbolTable::findBuiltIn const):
+        (sh::TSymbolTable::isUnmangledBuiltInName const):
+        (sh::TSymbolTable::getSymbol const): Deleted.
+        (sh::TSymbolTable::getUnmangled const): Deleted.
+        (sh::TSymbolTable::getUnmangledBuiltInForShaderVersion): Deleted.
+        * src/compiler/translator/SymbolTable_autogen.cpp:
+        (sh::BuiltInVariable::angle_BaseInstance):
+        (sh::BuiltInVariable::angle_BaseVertex):
+        (sh::BuiltInVariable::gl_BaseInstance):
+        (sh::BuiltInVariable::gl_BaseVertex):
+        (sh::BuiltInVariable::gl_DrawID):
+        (sh::BuiltInVariable::gl_FragColor):
+        (sh::BuiltInVariable::gl_FragCoord):
+        (sh::BuiltInVariable::gl_FragDepth):
+        (sh::BuiltInVariable::gl_FrontFacing):
+        (sh::BuiltInVariable::gl_GlobalInvocationID):
+        (sh::BuiltInVariable::gl_InstanceID):
+        (sh::BuiltInVariable::gl_InstanceIndex):
+        (sh::BuiltInVariable::gl_InvocationID):
+        (sh::BuiltInVariable::gl_LastFragColor):
+        (sh::BuiltInVariable::gl_LastFragColorARM):
+        (sh::BuiltInVariable::gl_Layer):
+        (sh::BuiltInVariable::gl_LayerGS):
+        (sh::BuiltInVariable::gl_LayerVS):
+        (sh::BuiltInVariable::gl_LocalInvocationID):
+        (sh::BuiltInVariable::gl_LocalInvocationIndex):
+        (sh::BuiltInVariable::gl_NumWorkGroups):
+        (sh::BuiltInVariable::gl_PointCoord):
+        (sh::BuiltInVariable::gl_PointSize):
+        (sh::BuiltInVariable::gl_Position):
+        (sh::BuiltInVariable::gl_PrimitiveID):
+        (sh::BuiltInVariable::gl_PrimitiveIDGS):
+        (sh::BuiltInVariable::gl_PrimitiveIDIn):
+        (sh::BuiltInVariable::gl_SecondaryFragColorEXT):
+        (sh::BuiltInVariable::gl_VertexID):
+        (sh::BuiltInVariable::gl_VertexIndex):
+        (sh::BuiltInVariable::gl_ViewID_OVR):
+        (sh::BuiltInVariable::gl_ViewportIndex):
+        (sh::BuiltInVariable::gl_WorkGroupID):
+        (sh::BuiltInVariable::gl_WorkGroupSize):
+        (sh::TSymbolTable::initializeBuiltInVariables):
+        (sh::TSymbolTable::findBuiltIn const):
+        (sh::TSymbolTable::isUnmangledBuiltInName const):
+        (sh::TSymbolTable::getSymbol const): Deleted.
+        (sh::TSymbolTable::getUnmangled const): Deleted.
+        (sh::TSymbolTable::getUnmangledBuiltInForShaderVersion): Deleted.
+        * src/compiler/translator/SymbolTable_autogen.h:
+        * src/compiler/translator/TranslatorVulkan.cpp:
+        (sh::TranslatorVulkan::translate):
+        * src/compiler/translator/gen_builtin_symbols.py:
+        (get_shader_version_for_level):
+        (GroupedList.__init__):
+        (GroupedList.add_entry):
+        (GroupedList.format_rule):
+        (GroupedList):
+        (GroupedList.format_rules):
+        (GroupedList.get_rules):
+        (GroupedList.get_names):
+        (GroupedList.get_offsets):
+        (GroupedList.update_arrays):
+        (GroupedList.update_arrays.add_rule):
+        (UnmangledGroupedList.add_entry):
+        (UnmangledGroupedList.get_array):
+        (define_constexpr_variable):
+        (process_single_function_group):
+        (process_function_group):
+        (process_single_variable_group):
+        (GroupedList.add_obj): Deleted.
+        (GroupedList.get_array): Deleted.
+        (UnmangledGroupedList.add_obj): Deleted.
+        * src/feature_support_util/feature_support_util.cpp:
+        * src/gpu_info_util/SystemInfo_win.cpp:
+        (angle::GetSystemInfo):
+        * src/image_util/loadimage.cpp:
+        (angle::LoadD24S8ToD32F):
+        (angle::LoadD32ToD32FX32):
+        (angle::LoadD32ToD32F):
+        * src/image_util/loadimage.h:
+        * src/libANGLE/Buffer.cpp:
+        (gl::Buffer::Buffer):
+        * src/libANGLE/Buffer.h:
+        * src/libANGLE/Caps.cpp:
+        (gl::DetermineHalfFloatTextureFilteringSupport):
+        (gl::DetermineFloatTextureFilteringSupport):
+        (gl::Extensions::setTextureExtensionSupport):
+        (gl::GetExtensionInfoMap):
+        (egl::DisplayExtensions::getStrings const):
+        (egl::DeviceExtensions::getStrings const):
+        (egl::ClientExtensions::getStrings const):
+        * src/libANGLE/Caps.h:
+        * src/libANGLE/Constants.h:
+        * src/libANGLE/Context.cpp:
+        (gl::Context::Context):
+        (gl::Context::initialize):
+        (gl::Context::onDestroy):
+        (gl::Context::bindImageTexture):
+        (gl::Context::getQueryiv):
+        (gl::Context::detachTexture):
+        (gl::Context::generateSupportedExtensions const):
+        (gl::Context::initCaps):
+        (gl::Context::onSubjectStateChange):
+        (gl::StateCache::updateActiveAttribsMask):
+        (gl::StateCache::updateVertexAttribTypesValidation):
+        * src/libANGLE/Context.h:
+        * src/libANGLE/Device.cpp:
+        (egl::Device::getAttribute):
+        (egl::Device::getDevice): Deleted.
+        * src/libANGLE/Device.h:
+        * src/libANGLE/Display.cpp:
+        (egl::Display::createContext):
+        (egl::GenerateClientExtensions):
+        (egl::Display::isValidNativeDisplay):
+        (egl::Display::initializeFrontendFeatures):
+        (egl::Display::queryStringi):
+        * src/libANGLE/ErrorStrings.h:
+        * src/libANGLE/Fence.h:
+        * src/libANGLE/FrameCapture.cpp:
+        (angle::ParamCapture::ParamCapture):
+        (angle::ParamCapture::operator=):
+        (angle::ParamBuffer::ParamBuffer):
+        (angle::ParamBuffer::operator=):
+        (angle::ParamBuffer::getParam):
+        (angle::ParamBuffer::getParam const):
+        (angle::ParamBuffer::addParam):
+        (angle::ParamBuffer::addReturnValue):
+        (angle::ParamBuffer::getClientArrayPointerParameter):
+        (angle::CallCapture::CallCapture):
+        (angle::CallCapture::operator=):
+        (angle::CallCapture::name const):
+        (angle::ReplayContext::ReplayContext):
+        (angle::ReplayContext::~ReplayContext):
+        (angle::FrameCapture::FrameCapture):
+        (angle::FrameCapture::maybeCaptureClientData):
+        (angle::FrameCapture::captureCall):
+        (angle::FrameCapture::captureUpdateResourceIDs):
+        (angle::FrameCapture::maybeUpdateResourceIDs):
+        (angle::FrameCapture::captureClientArraySnapshot):
+        (angle::FrameCapture::onEndFrame):
+        (angle::DataCounters::getAndIncrement):
+        (angle::FrameCapture::reset):
+        (angle::CaptureGenHandlesImpl):
+        (angle::WriteParamValueToStream<ParamType::TBufferID>):
+        (angle::WriteParamValueToStream<ParamType::TFenceNVID>):
+        (angle::WriteParamValueToStream<ParamType::TFramebufferID>):
+        (angle::WriteParamValueToStream<ParamType::TMemoryObjectID>):
+        (angle::WriteParamValueToStream<ParamType::TPathID>):
+        (angle::WriteParamValueToStream<ParamType::TProgramPipelineID>):
+        (angle::WriteParamValueToStream<ParamType::TQueryID>):
+        (angle::WriteParamValueToStream<ParamType::TRenderbufferID>):
+        (angle::WriteParamValueToStream<ParamType::TSamplerID>):
+        (angle::WriteParamValueToStream<ParamType::TSemaphoreID>):
+        (angle::WriteParamValueToStream<ParamType::TShaderProgramID>):
+        (angle::WriteParamValueToStream<ParamType::TTextureID>):
+        (angle::WriteParamValueToStream<ParamType::TTransformFeedbackID>):
+        (angle::WriteParamValueToStream<ParamType::TVertexArrayID>):
+        (angle::CallCapture::~CallCapture): Deleted.
+        (angle::ParamBuffer::~ParamBuffer): Deleted.
+        (angle::ParamCapture::~ParamCapture): Deleted.
+        (angle::FrameCapture::~FrameCapture): Deleted.
+        (angle::FrameCapture::anyClientArray const): Deleted.
+        (angle::FrameCapture::saveCapturedFrameAsCpp): Deleted.
+        (angle::FrameCapture::getAndIncrementCounter): Deleted.
+        (angle::FrameCapture::writeStringPointerParamReplay): Deleted.
+        (angle::FrameCapture::writeRenderbufferIDPointerParamReplay): Deleted.
+        (angle::FrameCapture::writeBinaryParamReplay): Deleted.
+        (angle::FrameCapture::writeCallReplay): Deleted.
+        * src/libANGLE/FrameCapture.h:
+        (angle::CaptureGenHandles):
+        * src/libANGLE/FrameCapture_mock.cpp: Added.
+        (angle::CallCapture::~CallCapture):
+        (angle::ParamBuffer::~ParamBuffer):
+        (angle::ParamCapture::~ParamCapture):
+        (angle::FrameCapture::FrameCapture):
+        (angle::FrameCapture::~FrameCapture):
+        (angle::FrameCapture::onEndFrame):
+        (angle::FrameCapture::replay):
+        * src/libANGLE/Framebuffer.cpp:
+        (gl::Framebuffer::formsRenderingFeedbackLoopWith const):
+        (gl::Framebuffer::formsCopyingFeedbackLoopWith const):
+        * src/libANGLE/Framebuffer.h:
+        * src/libANGLE/FramebufferAttachment.cpp:
+        (gl::FramebufferAttachment::getRedSize const):
+        (gl::FramebufferAttachment::getGreenSize const):
+        (gl::FramebufferAttachment::getBlueSize const):
+        (gl::FramebufferAttachment::getAlphaSize const):
+        (gl::FramebufferAttachment::getDepthSize const):
+        (gl::FramebufferAttachment::getStencilSize const):
+        * src/libANGLE/FramebufferAttachment.h:
+        * src/libANGLE/GLES1State.cpp:
+        (gl::GLES1State::getActiveAttributesMask const):
+        * src/libANGLE/GLES1State.h:
+        * src/libANGLE/ImageIndex.cpp:
+        * src/libANGLE/ImageIndex.h:
+        * src/libANGLE/MemoryObject.cpp:
+        (gl::MemoryObject::MemoryObject):
+        * src/libANGLE/MemoryObject.h:
+        * src/libANGLE/MemoryProgramCache.cpp:
+        * src/libANGLE/Program.cpp:
+        (gl::ProgramBindings::bindLocation):
+        (gl::ProgramBindings::getBindingByName const):
+        (gl::ProgramBindings::getBinding const):
+        (gl::ProgramBindings::begin const):
+        (gl::ProgramBindings::end const):
+        (gl::ProgramAliasedBindings::ProgramAliasedBindings):
+        (gl::ProgramAliasedBindings::~ProgramAliasedBindings):
+        (gl::ProgramAliasedBindings::bindLocation):
+        (gl::ProgramAliasedBindings::getBindingByName const):
+        (gl::ProgramAliasedBindings::getBinding const):
+        (gl::ProgramAliasedBindings::begin const):
+        (gl::ProgramAliasedBindings::end const):
+        (gl::ProgramState::getAttributeLocation const):
+        (gl::ProgramState::getFirstAttachedShaderStageType const):
+        (gl::ProgramState::getLastAttachedShaderStageType const):
+        (gl::Program::getFragmentInputBindingInfo const):
+        (gl::Program::link):
+        (gl::ProgramState::updateProgramInterfaceInputs):
+        (gl::ProgramState::updateProgramInterfaceOutputs):
+        (gl::Program::unlink):
+        (gl::Program::getActiveAttribute const):
+        (gl::Program::getActiveAttributeCount const):
+        (gl::Program::getActiveAttributeMaxLength const):
+        (gl::Program::getAttributes const):
+        (gl::Program::getInputResource const):
+        (gl::Program::getInputResourceIndex const):
+        (gl::Program::getResourceMaxNameSize const):
+        (gl::Program::getInputResourceMaxNameSize const):
+        (gl::Program::getOutputResourceMaxNameSize const):
+        (gl::Program::getResourceLocation const):
+        (gl::Program::getInputResourceLocation const):
+        (gl::Program::getOutputResourceLocation const):
+        (gl::Program::getOutputResourceIndex const):
+        (gl::Program::getResourceName const):
+        (gl::Program::getInputResourceName const):
+        (gl::Program::getOutputResourceName const):
+        (gl::Program::getUniformResourceName const):
+        (gl::Program::getBufferVariableResourceName const):
+        (gl::Program::getOutputResource const):
+        (gl::Program::getUniformLocationBindings const):
+        (gl::Program::linkUniforms):
+        (gl::Program::linkAttributes):
+        (gl::Program::linkValidateGlobalNames const):
+        (gl::Program::getMergedVaryings const):
+        (gl::Program::linkOutputVariables):
+        (gl::Program::serialize const):
+        (gl::Program::deserialize):
+        * src/libANGLE/Program.h:
+        (gl::ProgramVaryingRef::get const):
+        * src/libANGLE/ProgramLinkedResources.cpp:
+        (gl::UniformLinker::link):
+        (gl::UniformLinker::indexUniforms):
+        (gl::UniformLinker::gatherUniformLocationsAndCheckConflicts):
+        * src/libANGLE/ProgramLinkedResources.h:
+        * src/libANGLE/ProgramPipeline.cpp:
+        (gl::ProgramPipeline::ProgramPipeline):
+        * src/libANGLE/ProgramPipeline.h:
+        * src/libANGLE/Query.cpp:
+        (gl::Query::Query):
+        * src/libANGLE/Query.h:
+        * src/libANGLE/RefCountObject.h:
+        (gl::RefCountObject::RefCountObject):
+        (gl::RefCountObject::id const):
+        (gl::BindingPointer::id const):
+        * src/libANGLE/Renderbuffer.cpp:
+        (gl::Renderbuffer::Renderbuffer):
+        (gl::Renderbuffer::getId const):
+        * src/libANGLE/Renderbuffer.h:
+        * src/libANGLE/Sampler.cpp:
+        (gl::Sampler::Sampler):
+        * src/libANGLE/Sampler.h:
+        * src/libANGLE/Semaphore.cpp:
+        (gl::Semaphore::Semaphore):
+        * src/libANGLE/Semaphore.h:
+        * src/libANGLE/Shader.cpp:
+        (gl::Shader::resolveCompile):
+        (gl::Shader::getTransformFeedbackVaryingMappedName):
+        * src/libANGLE/State.cpp:
+        (gl::State::getSamplerTextureId const):
+        (gl::State::detachTexture):
+        (gl::State::detachSampler):
+        (gl::State::detachRenderbuffer):
+        (gl::State::removeTransformFeedbackBinding):
+        (gl::State::getActiveQueryId const):
+        (gl::State::detachBuffer):
+        (gl::State::getIntegerv):
+        (gl::State::getIntegeri_v):
+        (gl::State::syncImages):
+        (gl::State::onImageStateChange):
+        * src/libANGLE/State.h:
+        (gl::State::getSamplerId const):
+        (gl::State::getRenderbufferId const):
+        * src/libANGLE/Texture.cpp:
+        (gl::Texture::Texture):
+        (gl::Texture::setStorage):
+        (gl::Texture::getId const):
+        * src/libANGLE/Texture.h:
+        * src/libANGLE/TransformFeedback.cpp:
+        (gl::TransformFeedback::TransformFeedback):
+        (gl::TransformFeedback::detachBuffer):
+        * src/libANGLE/TransformFeedback.h:
+        * src/libANGLE/VaryingPacking.cpp:
+        (gl::VaryingPacking::collectAndPackUserVaryings):
+        (gl::VaryingPacking::packUserVaryings):
+        * src/libANGLE/VertexArray.cpp:
+        (gl::VertexArray::detachBuffer):
+        (gl::VertexArray::bindVertexBufferImpl):
+        * src/libANGLE/VertexArray.h:
+        * src/libANGLE/capture_gles_2_0_params.cpp:
+        (gl::CaptureDeleteBuffers_buffersPacked):
+        (gl::CaptureDeleteFramebuffers_framebuffersPacked):
+        (gl::CaptureDeleteTextures_texturesPacked):
+        (gl::CaptureGenBuffers_buffersPacked):
+        (gl::CaptureGenFramebuffers_framebuffersPacked):
+        (gl::CaptureGenRenderbuffers_renderbuffersPacked):
+        (gl::CaptureGenTextures_texturesPacked):
+        (gl::CaptureShaderSource_string):
+        * src/libANGLE/capture_gles_3_0_params.cpp:
+        (gl::CaptureDeleteQueries_idsPacked):
+        (gl::CaptureDeleteSamplers_samplersPacked):
+        (gl::CaptureDeleteTransformFeedbacks_idsPacked):
+        (gl::CaptureDeleteVertexArrays_arraysPacked):
+        (gl::CaptureGenQueries_idsPacked):
+        (gl::CaptureGenSamplers_samplersPacked):
+        (gl::CaptureGenTransformFeedbacks_idsPacked):
+        (gl::CaptureGenVertexArrays_arraysPacked):
+        * src/libANGLE/capture_gles_3_1_params.cpp:
+        (gl::CaptureDeleteProgramPipelines_pipelinesPacked):
+        (gl::CaptureGenProgramPipelines_pipelinesPacked):
+        * src/libANGLE/capture_gles_ext_params.cpp:
+        (gl::CaptureDeleteQueriesEXT_idsPacked):
+        (gl::CaptureGenQueriesEXT_idsPacked):
+        * src/libANGLE/features.h:
+        * src/libANGLE/formatutils.cpp:
+        (gl::UnsizedHalfFloatOESRGBATextureAttachmentSupport):
+        (gl::BuildInternalFormatInfoMap):
+        (gl::InternalFormat::computeDepthPitch const):
+        (gl::GetVertexFormatID):
+        (gl::GetVertexFormatFromID):
+        (gl::GetVertexFormatSize):
+        * src/libANGLE/frame_capture_utils_autogen.cpp:
+        (angle::GetResourceIDTypeFromParamType):
+        (angle::GetResourceIDTypeName):
+        * src/libANGLE/frame_capture_utils_autogen.h:
+        * src/libANGLE/queryutils.cpp:
+        (gl::GetBufferVariableResourceProperty):
+        (gl::QueryProgramResourceLocation):
+        (gl::QueryProgramResourceiv):
+        (egl::QueryContextAttrib):
+        * src/libANGLE/renderer/DeviceImpl.h:
+        * src/libANGLE/renderer/Format.h:
+        (angle::Format::isVertexTypeHalfFloat const):
+        * src/libANGLE/renderer/FormatID_autogen.h:
+        * src/libANGLE/renderer/Format_table_autogen.cpp:
+        (angle::Format::InternalFormatToID):
+        * src/libANGLE/renderer/angle_format.py:
+        (gl_format_channels):
+        (get_vertex_copy_function):
+        * src/libANGLE/renderer/angle_format_map.json:
+        * src/libANGLE/renderer/copyvertex.h:
+        * src/libANGLE/renderer/copyvertex.inc.h:
+        (rx::CopyTo32FVertexData):
+        (rx::CopyXYZ10ToXYZW32FVertexData):
+        (rx::CopyW2XYZ10ToXYZW32FVertexData):
+        * src/libANGLE/renderer/d3d/DeviceD3D.cpp:
+        (rx::DeviceD3D::getAttribute):
+        (rx::DeviceD3D::getDevice): Deleted.
+        * src/libANGLE/renderer/d3d/DeviceD3D.h:
+        * src/libANGLE/renderer/d3d/HLSLCompiler.cpp:
+        (rx::HLSLCompiler::ensureInitialized):
+        (rx::HLSLCompiler::compileToBinary):
+        * src/libANGLE/renderer/d3d/ProgramD3D.cpp:
+        (rx::ProgramD3D::getVertexExecutableForCachedInputLayout):
+        * src/libANGLE/renderer/d3d/RendererD3D.cpp:
+        (rx::DefaultGLErrorCode):
+        * src/libANGLE/renderer/d3d/ShaderD3D.cpp:
+        (rx::ShaderD3D::compile):
+        * src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp:
+        (rx::Buffer11::getConstantBufferRange):
+        (rx::Buffer11::NativeStorage::FillBufferDesc):
+        * src/libANGLE/renderer/d3d/d3d11/Context11.cpp:
+        (rx::Context11::drawArrays):
+        (rx::Context11::drawArraysInstanced):
+        (rx::Context11::drawArraysInstancedBaseInstance):
+        (rx::Context11::drawArraysIndirect):
+        * src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp:
+        (rx::DebugAnnotator11::initialize):
+        * src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp:
+        (rx::Renderer11::Renderer11):
+        (rx::Renderer11::initialize):
+        (rx::Renderer11::callD3D11On12CreateDevice):
+        (rx::Renderer11::initializeD3DDevice):
+        (rx::Renderer11::generateDisplayExtensions const):
+        (rx::Renderer11::isValidNativeWindow const):
+        (rx::Renderer11::createNativeWindow const):
+        (rx::Renderer11::drawArrays):
+        (rx::Renderer11::release):
+        (rx::Renderer11::getShareHandleSupport const):
+        (rx::Renderer11::copyImageInternal):
+        * src/libANGLE/renderer/d3d/d3d11/Renderer11.h:
+        * src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp:
+        (rx::TextureStorage11::getSRVForImage):
+        (rx::TextureStorage11::getUAVForImage):
+        * src/libANGLE/renderer/d3d/d3d11/Trim11.cpp:
+        (rx::Trim11::trim):
+        (rx::Trim11::registerForRendererTrimRequest):
+        (rx::Trim11::unregisterForRendererTrimRequest):
+        * src/libANGLE/renderer/d3d/d3d11/Trim11.h:
+        * src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp:
+        (rx::RoHelper::SupportedWindowsRelease):
+        * src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp:
+        (rx::d3d11_gl::GenerateCaps):
+        (rx::d3d11::InitializeFeatures):
+        * src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h:
+        * src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp:
+        (rx::NativeWindow11WinRT::createSwapChain):
+        * src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h:
+        * src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h:
+        * src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp:
+        (rx::d3d9::InitializeFeatures):
+        * src/libANGLE/renderer/gen_angle_format_table.py:
+        (ceil_int):
+        (get_channel_struct):
+        (get_mip_generation_function):
+        * src/libANGLE/renderer/gl/BlitGL.cpp:
+        (rx::BlitGL::copyImageToLUMAWorkaroundTexture):
+        (rx::BlitGL::copySubImageToLUMAWorkaroundTexture):
+        (rx::BlitGL::blitColorBufferWithShader):
+        (rx::BlitGL::copySubTexture):
+        (rx::BlitGL::copySubTextureCPUReadback):
+        (rx::BlitGL::copyTexSubImage):
+        (rx::BlitGL::clearRenderableTexture):
+        (rx::BlitGL::clearRenderbuffer):
+        (rx::BlitGL::clearFramebuffer):
+        (rx::BlitGL::clearRenderableTextureAlphaToOne):
+        (rx::BlitGL::initializeResources):
+        (rx::BlitGL::orphanScratchTextures):
+        (rx::BlitGL::setScratchTextureParameter):
+        (rx::BlitGL::getBlitProgram):
+        (rx::BlitGL::getBlitProgramType): Deleted.
+        * src/libANGLE/renderer/gl/BlitGL.h:
+        * src/libANGLE/renderer/gl/ContextGL.cpp:
+        (rx::ContextGL::createRenderbuffer):
+        (rx::ContextGL::setDrawArraysState):
+        (rx::ContextGL::setDrawElementsState):
+        (rx::ContextGL::drawArrays):
+        (rx::ContextGL::updateAttributesForBaseInstance):
+        (rx::ContextGL::resetUpdatedAttributes):
+        (rx::ContextGL::drawArraysInstancedBaseInstance):
+        (rx::ContextGL::drawElements):
+        (rx::ContextGL::drawElementsInstancedBaseVertexBaseInstance):
+        (rx::ContextGL::validateState const):
+        * src/libANGLE/renderer/gl/ContextGL.h:
+        * src/libANGLE/renderer/gl/ProgramGL.cpp:
+        (rx::ProgramGL::link):
+        * src/libANGLE/renderer/gl/RenderbufferGL.cpp:
+        (rx::RenderbufferGL::RenderbufferGL):
+        (rx::RenderbufferGL::~RenderbufferGL):
+        (rx::RenderbufferGL::onDestroy):
+        (rx::RenderbufferGL::setStorage):
+        (rx::RenderbufferGL::setStorageMultisample):
+        (rx::RenderbufferGL::initializeContents):
+        * src/libANGLE/renderer/gl/RenderbufferGL.h:
+        * src/libANGLE/renderer/gl/ShaderGL.cpp:
+        (rx::ShaderGL::compile):
+        * src/libANGLE/renderer/gl/StateManagerGL.cpp:
+        (rx::StateManagerGL::bindBufferBase):
+        (rx::StateManagerGL::bindBufferRange):
+        (rx::StateManagerGL::validateState const):
+        * src/libANGLE/renderer/gl/StateManagerGL.h:
+        * src/libANGLE/renderer/gl/SurfaceGL.cpp:
+        (rx::SurfaceGL::initializeContents):
+        * src/libANGLE/renderer/gl/TextureGL.cpp:
+        (rx::TextureGL::setImageHelper):
+        (rx::TextureGL::setSubImage):
+        (rx::TextureGL::setCompressedImage):
+        (rx::TextureGL::setCompressedSubImage):
+        (rx::TextureGL::copyImage):
+        (rx::TextureGL::copySubTextureHelper):
+        (rx::TextureGL::setStorage):
+        (rx::TextureGL::setImageExternal):
+        (rx::TextureGL::setStorageMultisample):
+        (rx::TextureGL::setStorageExternalMemory):
+        (rx::TextureGL::setEGLImageTarget):
+        (rx::TextureGL::setLevelInfo):
+        (rx::TextureGL::initializeContents):
+        * src/libANGLE/renderer/gl/VertexArrayGL.cpp:
+        (rx::VertexArrayGL::streamAttributes const):
+        (rx::VertexArrayGL::validateState const):
+        * src/libANGLE/renderer/gl/VertexArrayGL.h:
+        * src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp: Added.
+        (rx::DeviceCGL::DeviceCGL):
+        (rx::DeviceCGL::~DeviceCGL):
+        (rx::DeviceCGL::initialize):
+        (rx::DeviceCGL::getAttribute):
+        (rx::DeviceCGL::getType):
+        (rx::DeviceCGL::generateExtensions const):
+        * src/libANGLE/renderer/gl/cgl/DeviceCGL.h: Added.
+        * src/libANGLE/renderer/gl/cgl/DisplayCGL.h:
+        * src/libANGLE/renderer/gl/cgl/DisplayCGL.mm:
+        (rx::DisplayCGL::createDevice):
+        (rx::DisplayCGL::getCGLPixelFormat const):
+        (rx::DisplayCGL::generateExtensions const):
+        * src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm:
+        (rx::IOSurfaceSurfaceCGL::initializeAlphaChannel):
+        * src/libANGLE/renderer/gl/egl/DisplayEGL.cpp:
+        (rx::DisplayEGL::generateExtensions const):
+        * src/libANGLE/renderer/gl/glx/DisplayGLX.cpp:
+        (rx::DisplayGLX::makeCurrent):
+        * src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp:
+        (rx::WindowSurfaceGLX::initialize):
+        * src/libANGLE/renderer/gl/renderergl_utils.cpp:
+        (rx::nativegl_gl::GenerateCaps):
+        (rx::nativegl_gl::InitializeFeatures):
+        (rx::nativegl_gl::InitializeFrontendFeatures):
+        (rx::nativegl::SupportsCompute):
+        (rx::nativegl::GetBufferBindingQuery):
+        (rx::nativegl::GetBufferBindingString):
+        * src/libANGLE/renderer/gl/renderergl_utils.h:
+        * src/libANGLE/renderer/load_functions_data.json:
+        * src/libANGLE/renderer/load_functions_table_autogen.cpp:
+        (angle::GetLoadFunctionsMap):
+        * src/libANGLE/renderer/null/DeviceNULL.cpp:
+        (rx::DeviceNULL::getAttribute):
+        (rx::DeviceNULL::getDevice): Deleted.
+        * src/libANGLE/renderer/null/DeviceNULL.h:
+        * src/libANGLE/renderer/renderer_utils.cpp:
+        (rx::ShouldUseDebugLayers):
+        * src/libANGLE/renderer/vulkan/BufferVk.cpp:
+        (rx::BufferVk::release):
+        (rx::BufferVk::mapRangeImpl):
+        (rx::BufferVk::setDataImpl):
+        * src/libANGLE/renderer/vulkan/CommandGraph.cpp:
+        (rx::vk::CommandGraphResource::CommandGraphResource):
+        (rx::vk::CommandGraphResource::~CommandGraphResource):
+        (rx::vk::CommandGraphResource::isResourceInUse const):
+        (rx::vk::CommandGraphResource::recordCommands):
+        (rx::vk::CommandGraphResource::addWriteDependency):
+        (rx::vk::CommandGraphResource::addReadDependency):
+        (rx::vk::CommandGraphResource::startNewCommands):
+        (rx::vk::CommandGraphResource::onWriteImpl):
+        (rx::vk::SharedGarbage::SharedGarbage):
+        (rx::vk::SharedGarbage::operator=):
+        (rx::vk::SharedGarbage::destroyIfComplete):
+        (rx::vk::CommandGraph::~CommandGraph):
+        (rx::vk::CommandGraph::submitCommands):
+        (rx::vk::CommandGraph::releaseResourceUses):
+        (rx::vk::CommandGraph::releaseResourceUsesAndUpdateSerials):
+        (rx::vk::CommandGraphResource::resetQueueSerial): Deleted.
+        * src/libANGLE/renderer/vulkan/CommandGraph.h:
+        (rx::vk::CommandGraphResource::getLatestSerial const):
+        (rx::vk::CommandGraphResource::hasStartedRenderPass const):
+        (rx::vk::CommandGraphResource::updateCurrentAccessNodes):
+        (rx::vk::CommandGraphResource::onGraphAccess):
+        (rx::vk::CommandGraphResource::appendToStartedRenderPass):
+        (rx::vk::CommandGraphResource::renderPassStartedButEmpty const):
+        (rx::vk::CommandGraphResource::clearRenderPassColorAttachment):
+        (rx::vk::CommandGraphResource::clearRenderPassDepthAttachment):
+        (rx::vk::CommandGraphResource::clearRenderPassStencilAttachment):
+        (rx::vk::CommandGraphResource::invalidateRenderPassColorAttachment):
+        (rx::vk::CommandGraphResource::invalidateRenderPassDepthAttachment):
+        (rx::vk::CommandGraphResource::invalidateRenderPassStencilAttachment):
+        (rx::vk::CommandGraphResource::getRenderPassRenderArea const):
+        (rx::vk::CommandGraphResource::addGlobalMemoryBarrier):
+        (rx::vk::CommandGraphResource::hasChildlessWritingNode const):
+        (rx::vk::CommandGraph::onResourceUse):
+        (rx::vk::CommandGraphResource::getStoredQueueSerial const): Deleted.
+        (rx::vk::CommandGraphResource::updateQueueSerial): Deleted.
+        * src/libANGLE/renderer/vulkan/ContextVk.cpp:
+        (rx::CommandBatch::CommandBatch):
+        (rx::CommandBatch::operator=):
+        (rx::CommandBatch::destroy):
+        (rx::CommandQueue::destroy):
+        (rx::CommandQueue::init):
+        (rx::CommandQueue::checkCompletedCommands):
+        (rx::CommandQueue::releaseToCommandBatch):
+        (rx::CommandQueue::clearAllGarbage):
+        (rx::CommandQueue::allocatePrimaryCommandBuffer):
+        (rx::CommandQueue::releasePrimaryCommandBuffer):
+        (rx::CommandQueue::handleDeviceLost):
+        (rx::CommandQueue::hasInFlightCommands const):
+        (rx::CommandQueue::finishToSerialOrTimeout):
+        (rx::CommandQueue::submitFrame):
+        (rx::CommandQueue::getLastSubmittedFence const):
+        (rx::ContextVk::ContextVk):
+        (rx::ContextVk::onDestroy):
+        (rx::ContextVk::initialize):
+        (rx::ContextVk::setupDraw):
+        (rx::ContextVk::setupIndirectDraw):
+        (rx::ContextVk::setupIndexedIndirectDraw):
+        (rx::ContextVk::setupLineLoopIndexedIndirectDraw):
+        (rx::ContextVk::handleDirtyGraphicsVertexBuffers):
+        (rx::ContextVk::handleDirtyGraphicsIndexBuffer):
+        (rx::ContextVk::submitFrame):
+        (rx::ContextVk::flushCommandGraph):
+        (rx::ContextVk::synchronizeCpuGpuTime):
+        (rx::ContextVk::traceGpuEventImpl):
+        (rx::ContextVk::checkCompletedGpuEvents):
+        (rx::ContextVk::flushGpuEvents):
+        (rx::ContextVk::clearAllGarbage):
+        (rx::ContextVk::handleDeviceLost):
+        (rx::ContextVk::drawArraysIndirect):
+        (rx::ContextVk::drawElementsIndirect):
+        (rx::ContextVk::syncState):
+        (rx::ContextVk::onMakeCurrent):
+        (rx::ContextVk::dispatchComputeIndirect):
+        (rx::ContextVk::memoryBarrier):
+        (rx::ContextVk::writeAtomicCounterBufferDriverUniformOffsets):
+        (rx::ContextVk::updateActiveTextures):
+        (rx::ContextVk::updateActiveImages):
+        (rx::ContextVk::shouldFlush):
+        (rx::ContextVk::flushImpl):
+        (rx::ContextVk::finishImpl):
+        (rx::ContextVk::isSerialInUse const):
+        (rx::ContextVk::checkCompletedCommands):
+        (rx::ContextVk::finishToSerial):
+        (rx::ContextVk::finishToSerialOrTimeout):
+        (rx::ContextVk::getCompatibleRenderPass):
+        (rx::ContextVk::getRenderPassWithOps):
+        (rx::ContextVk::ensureSubmitFenceInitialized):
+        (rx::ContextVk::getNextSubmitFence):
+        (rx::ContextVk::getLastSubmittedFence const):
+        (rx::ContextVk::getTimestamp):
+        (rx::ContextVk::updateDefaultAttribute):
+        (rx::ContextVk::waitForSwapchainImageIfNecessary):
+        (rx::ContextVk::CommandBatch::CommandBatch): Deleted.
+        (rx::ContextVk::CommandBatch::operator=): Deleted.
+        (rx::ContextVk::CommandBatch::destroy): Deleted.
+        (rx::ContextVk::releaseToCommandBatch): Deleted.
+        (rx::ContextVk::recycleCommandBatch): Deleted.
+        (rx::ContextVk::getCommandGraph): Deleted.
+        * src/libANGLE/renderer/vulkan/ContextVk.h:
+        (rx::ContextVk::onVertexAttributeChange):
+        (rx::ContextVk::getCurrentQueueSerial const):
+        (rx::ContextVk::getLastSubmittedQueueSerial const):
+        (rx::ContextVk::getLastCompletedQueueSerial const):
+        (rx::ContextVk::addGarbage):
+        (rx::ContextVk::getCommandGraph):
+        (rx::ContextVk::releaseObject): Deleted.
+        * src/libANGLE/renderer/vulkan/DeviceVk.cpp:
+        (rx::DeviceVk::getAttribute):
+        (rx::DeviceVk::getDevice): Deleted.
+        * src/libANGLE/renderer/vulkan/DeviceVk.h:
+        * src/libANGLE/renderer/vulkan/DisplayVk.cpp:
+        (rx::DisplayVk::generateExtensions const):
+        * src/libANGLE/renderer/vulkan/FramebufferVk.cpp:
+        (rx::FramebufferVk::destroy):
+        (rx::FramebufferVk::invalidate):
+        (rx::FramebufferVk::invalidateSub):
+        (rx::FramebufferVk::clearImpl):
+        (rx::FramebufferVk::getImplementationColorReadType const):
+        (rx::FramebufferVk::blitWithCommand):
+        (rx::FramebufferVk::blit):
+        (rx::FramebufferVk::resolveColorWithCommand):
+        (rx::FramebufferVk::readPixelsImpl):
+        (rx::FramebufferVk::onScissorChange):
+        * src/libANGLE/renderer/vulkan/FramebufferVk.h:
+        (rx::FramebufferVk::appendToStartedRenderPass):
+        * src/libANGLE/renderer/vulkan/GlslangWrapper.cpp:
+        * src/libANGLE/renderer/vulkan/ImageVk.cpp:
+        (rx::ImageVk::onDestroy):
+        (rx::ImageVk::orphan):
+        * src/libANGLE/renderer/vulkan/ImageVk.h:
+        * src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp:
+        (rx::MemoryObjectVk::createImage):
+        * src/libANGLE/renderer/vulkan/OverlayVk.cpp:
+        (rx::OverlayVk::createFont):
+        (rx::OverlayVk::cullWidgets):
+        (rx::OverlayVk::onPresent):
+        * src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp:
+        (rx::vk::PersistentCommandPool::destroy):
+        (rx::vk::PersistentCommandPool::allocate):
+        (rx::vk::PersistentCommandPool::alloc): Deleted.
+        * src/libANGLE/renderer/vulkan/PersistentCommandPool.h:
+        * src/libANGLE/renderer/vulkan/ProgramVk.cpp:
+        (rx::ProgramVk::reset):
+        (rx::ProgramVk::initDefaultUniformLayoutMapping):
+        (rx::ProgramVk::updateDefaultUniformsDescriptorSet):
+        (rx::ProgramVk::updateBuffersDescriptorSet):
+        (rx::ProgramVk::updateAtomicCounterBuffersDescriptorSet):
+        (rx::ProgramVk::updateImagesDescriptorSet):
+        (rx::ProgramVk::updateTransformFeedbackDescriptorSetImpl):
+        (rx::ProgramVk::updateDescriptorSets):
+        * src/libANGLE/renderer/vulkan/ProgramVk.h:
+        (rx::ProgramVk::getGraphicsPipeline):
+        * src/libANGLE/renderer/vulkan/README.md:
+        * src/libANGLE/renderer/vulkan/RenderTargetVk.cpp:
+        (rx::RenderTargetVk::RenderTargetVk):
+        (rx::RenderTargetVk::init):
+        (rx::RenderTargetVk::reset):
+        (rx::RenderTargetVk::onColorDraw):
+        (rx::RenderTargetVk::onDepthStencilDraw):
+        (rx::RenderTargetVk::updateSwapchainImage):
+        (rx::RenderTargetVk::getImageForRead):
+        (rx::RenderTargetVk::getImageForWrite const):
+        (rx::RenderTargetVk::getFetchImageView const): Deleted.
+        * src/libANGLE/renderer/vulkan/RenderTargetVk.h:
+        * src/libANGLE/renderer/vulkan/RenderbufferVk.cpp:
+        (rx::RenderbufferVk::setStorageImpl):
+        (rx::RenderbufferVk::setStorageEGLImageTarget):
+        (rx::RenderbufferVk::releaseImage):
+        * src/libANGLE/renderer/vulkan/RenderbufferVk.h:
+        * src/libANGLE/renderer/vulkan/RendererVk.cpp:
+        (rx::RendererVk::~RendererVk):
+        (rx::RendererVk::onDestroy):
+        (rx::RendererVk::notifyDeviceLost):
+        (rx::RendererVk::initialize):
+        (rx::RendererVk::initializeDevice):
+        (rx::RendererVk::initFeatures):
+        (rx::RendererVk::queueSubmit):
+        (rx::RendererVk::cleanupGarbage):
+        (rx::RendererVk::getMaxFenceWaitTimeNs const):
+        (rx::RendererVk::onCompletedSerial):
+        (rx::RendererVk::nextSerial): Deleted.
+        (rx::RendererVk::addGarbage): Deleted.
+        * src/libANGLE/renderer/vulkan/RendererVk.h:
+        (rx::CollectGarbage):
+        (rx::RendererVk::getMaxVertexAttribDivisor const):
+        (rx::RendererVk::collectGarbageAndReinit):
+        (rx::RendererVk::getCurrentQueueSerial const):
+        (rx::RendererVk::getLastSubmittedQueueSerial const):
+        (rx::RendererVk::getLastCompletedQueueSerial const):
+        (rx::RendererVk::shouldCleanupGarbage):
+        * src/libANGLE/renderer/vulkan/SamplerVk.cpp:
+        (rx::SamplerVk::onDestroy):
+        (rx::SamplerVk::syncState):
+        * src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp:
+        (rx::vk::priv::SecondaryCommandBuffer::executeCommands):
+        (rx::vk::priv::SecondaryCommandBuffer::dumpCommands const):
+        * src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h:
+        (rx::vk::priv::SecondaryCommandBuffer::drawIndirect):
+        (rx::vk::priv::SecondaryCommandBuffer::drawIndexedIndirect):
+        * src/libANGLE/renderer/vulkan/SemaphoreVk.cpp:
+        (rx::SemaphoreVk::onDestroy):
+        * src/libANGLE/renderer/vulkan/SurfaceVk.cpp:
+        (rx::OffscreenSurfaceVk::AttachmentImage::initialize):
+        (rx::OffscreenSurfaceVk::AttachmentImage::destroy):
+        (rx::OffscreenSurfaceVk::OffscreenSurfaceVk):
+        (rx::WindowSurfaceVk::WindowSurfaceVk):
+        (rx::WindowSurfaceVk::createSwapChain):
+        (rx::WindowSurfaceVk::releaseSwapchainImages):
+        (rx::WindowSurfaceVk::destroySwapChainImages):
+        (rx::WindowSurfaceVk::present):
+        (rx::WindowSurfaceVk::nextSwapchainImage):
+        * src/libANGLE/renderer/vulkan/SyncVk.cpp:
+        (rx::vk::SyncHelper::SyncHelper):
+        (rx::vk::SyncHelper::~SyncHelper):
+        (rx::vk::SyncHelper::releaseToRenderer):
+        (rx::vk::SyncHelper::initialize):
+        (rx::vk::SyncHelper::clientWait):
+        (rx::vk::SyncHelper::serverWait):
+        (rx::vk::SyncHelper::getStatus):
+        (rx::SyncVk::onDestroy):
+        (rx::SyncVk::serverWait):
+        (rx::EGLSyncVk::onDestroy):
+        (rx::EGLSyncVk::serverWait):
+        (rx::FenceSyncVk::FenceSyncVk): Deleted.
+        (rx::FenceSyncVk::~FenceSyncVk): Deleted.
+        (rx::FenceSyncVk::onDestroy): Deleted.
+        (rx::FenceSyncVk::initialize): Deleted.
+        (rx::FenceSyncVk::clientWait): Deleted.
+        (rx::FenceSyncVk::serverWait): Deleted.
+        (rx::FenceSyncVk::getStatus): Deleted.
+        * src/libANGLE/renderer/vulkan/SyncVk.h:
+        * src/libANGLE/renderer/vulkan/TextureVk.cpp:
+        (rx::TextureVk::onDestroy):
+        (rx::TextureVk::copySubImageImpl):
+        (rx::TextureVk::copySubTextureImpl):
+        (rx::TextureVk::copySubImageImplWithTransfer):
+        (rx::TextureVk::copySubImageImplWithDraw):
+        (rx::TextureVk::setStorageExternalMemory):
+        (rx::TextureVk::setEGLImageTarget):
+        (rx::TextureVk::ensureImageAllocated):
+        (rx::TextureVk::setImageHelper):
+        (rx::TextureVk::copyImageDataToBufferAndGetData):
+        (rx::TextureVk::copyImageDataToBuffer):
+        (rx::TextureVk::generateMipmapsWithCPU):
+        (rx::TextureVk::generateMipmap):
+        (rx::TextureVk::setBaseLevel):
+        (rx::TextureVk::changeLevels):
+        (rx::TextureVk::bindTexImage):
+        (rx::TextureVk::getAttachmentRenderTarget):
+        (rx::TextureVk::ensureImageInitialized):
+        (rx::TextureVk::initLayerRenderTargets):
+        (rx::TextureVk::syncState):
+        (rx::TextureVk::getReadImageView const):
+        (rx::TextureVk::getFetchImageView const):
+        (rx::TextureVk::getLayerLevelDrawImageView):
+        (rx::TextureVk::getLayerLevelStorageImageView):
+        (rx::TextureVk::initImage):
+        (rx::TextureVk::initImageViews):
+        (rx::TextureVk::releaseImage):
+        (rx::TextureVk::releaseImageViews):
+        (rx::TextureVk::releaseStagingBuffer):
+        (rx::TextureVk::getLevelCount const):
+        (rx::TextureVk::generateMipmapLevelsWithCPU):
+        (rx::TextureVk::TextureVkViews::TextureVkViews): Deleted.
+        (rx::TextureVk::TextureVkViews::~TextureVkViews): Deleted.
+        (rx::TextureVk::TextureVkViews::release): Deleted.
+        (rx::TextureVk::init3DRenderTargets): Deleted.
+        (rx::TextureVk::initCubeMapRenderTargets): Deleted.
+        (rx::TextureVk::getTextureViews const): Deleted.
+        (rx::TextureVk::initImageViewImpl): Deleted.
+        * src/libANGLE/renderer/vulkan/TextureVk.h:
+        (): Deleted.
+        * src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp:
+        (rx::TransformFeedbackVk::onBeginOrEnd):
+        * src/libANGLE/renderer/vulkan/UtilsVk.cpp:
+        (rx::UtilsVk::ensureConvertIndexIndirectResourcesInitialized):
+        (rx::UtilsVk::ensureConvertIndexIndirectLineLoopResourcesInitialized):
+        (rx::UtilsVk::convertIndexIndirectBuffer):
+        (rx::UtilsVk::convertLineLoopIndexIndirectBuffer):
+        (rx::UtilsVk::startRenderPass):
+        (rx::UtilsVk::clearFramebuffer):
+        (rx::UtilsVk::blitResolveImpl):
+        (rx::UtilsVk::stencilBlitResolveNoShaderExport):
+        (rx::UtilsVk::copyImage):
+        (rx::UtilsVk::cullOverlayWidgets):
+        (rx::UtilsVk::drawOverlay):
+        * src/libANGLE/renderer/vulkan/UtilsVk.h:
+        * src/libANGLE/renderer/vulkan/VertexArrayVk.cpp:
+        (rx::VertexArrayVk::destroy):
+        (rx::VertexArrayVk::convertIndexBufferIndirectGPU):
+        (rx::VertexArrayVk::handleLineLoopIndirect):
+        (rx::VertexArrayVk::convertVertexBufferCPU):
+        (rx::VertexArrayVk::syncDirtyAttrib):
+        (rx::VertexArrayVk::updateStreamedAttribs):
+        (rx::VertexArrayVk::updateDefaultAttrib):
+        (rx::VertexArrayVk::updateClientAttribs): Deleted.
+        * src/libANGLE/renderer/vulkan/VertexArrayVk.h:
+        (rx::VertexArrayVk::getStreamingVertexAttribsMask const):
+        * src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp:
+        (rx::HardwareBufferImageSiblingVkAndroid::initImpl):
+        (rx::HardwareBufferImageSiblingVkAndroid::release):
+        * src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.h:
+        * src/libANGLE/renderer/vulkan/doc/FastOpenGLStateTransitions.md:
+        * src/libANGLE/renderer/vulkan/doc/FormatTablesAndEmulation.md:
+        * src/libANGLE/renderer/vulkan/doc/OpenGLLineSegmentRasterization.md:
+        * src/libANGLE/renderer/vulkan/doc/ShaderModuleCompilation.md:
+        * src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py:
+        (shader_path):
+        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc:
+        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc:
+        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc:
+        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc:
+        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc:
+        * src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc:
+        * src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp:
+        * src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp.json:
+        * src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp:
+        * src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json:
+        * src/libANGLE/renderer/vulkan/vk_cache_utils.cpp:
+        (rx::vk::GraphicsPipelineDesc::initializePipeline const):
+        (rx::vk::GraphicsPipelineDesc::updateVertexInput):
+        (rx::vk::PipelineLayoutDesc::updatePushConstantRange):
+        (rx::RenderPassCache::addRenderPass):
+        (rx::GraphicsPipelineCache::release):
+        (rx::GraphicsPipelineCache::insertPipeline):
+        * src/libANGLE/renderer/vulkan/vk_cache_utils.h:
+        * src/libANGLE/renderer/vulkan/vk_caps_utils.cpp:
+        (rx::RendererVk::ensureCapsInitialized const):
+        * src/libANGLE/renderer/vulkan/vk_format_map.json:
+        * src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp:
+        (rx::vk::Format::initialize):
+        * src/libANGLE/renderer/vulkan/vk_format_utils.cpp:
+        (rx::MapSwizzleState):
+        * src/libANGLE/renderer/vulkan/vk_helpers.cpp:
+        (rx::vk::DynamicBuffer::allocate):
+        (rx::vk::DynamicBuffer::releaseBufferListToRenderer):
+        (rx::vk::DynamicBuffer::release):
+        (rx::vk::DynamicBuffer::releaseInFlightBuffers):
+        (rx::vk::DescriptorPoolHelper::release):
+        (rx::vk::LineLoopHelper::LineLoopHelper):
+        (rx::vk::LineLoopHelper::streamIndicesIndirect):
+        (rx::vk::LineLoopHelper::release):
+        (rx::vk::LineLoopHelper::destroy):
+        (rx::vk::BufferHelper::init):
+        (rx::vk::BufferHelper::release):
+        (rx::vk::ImageHelper::ImageHelper):
+        (rx::vk::ImageHelper::init):
+        (rx::vk::ImageHelper::initExternal):
+        (rx::vk::ImageHelper::releaseImage):
+        (rx::vk::ImageHelper::releaseStagingBuffer):
+        (rx::vk::ImageHelper::destroy):
+        (rx::vk::ImageHelper::getBaseLevel):
+        (rx::vk::ImageHelper::setBaseAndMaxLevels):
+        (rx::vk::ImageHelper::generateMipmapsWithBlit):
+        (rx::vk::ImageHelper::removeStagedUpdates):
+        (rx::vk::ImageHelper::stageSubresourceUpdate):
+        (rx::vk::ImageHelper::stageSubresourceUpdateAndGetData):
+        (rx::vk::ImageHelper::stageSubresourceUpdateFromBuffer):
+        (rx::vk::ImageHelper::stageSubresourceUpdateFromFramebuffer):
+        (rx::vk::ImageHelper::allocateStagingMemory):
+        (rx::vk::ImageHelper::flushStagedUpdates):
+        (rx::vk::ImageHelper::isUpdateStaged):
+        (rx::vk::ImageHelper::SubresourceUpdate::SubresourceUpdate):
+        (rx::vk::ImageHelper::SubresourceUpdate::release):
+        (rx::vk::FramebufferHelper::release):
+        (rx::vk::ShaderProgramHelper::release):
+        (rx::vk::DynamicBuffer::releaseBufferListToContext): Deleted.
+        (rx::vk::DynamicBuffer::releaseBufferListToDisplay): Deleted.
+        (rx::vk::ImageHelper::dumpResources): Deleted.
+        * src/libANGLE/renderer/vulkan/vk_helpers.h:
+        (rx::vk::ShaderProgramHelper::getShader):
+        (rx::vk::ShaderProgramHelper::getGraphicsPipeline):
+        * src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp:
+        (rx::vk::ShaderLibrary::destroy):
+        (rx::vk::ShaderLibrary::getConvertIndexIndirectLineLoop_comp):
+        * src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni:
+        * src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h:
+        * src/libANGLE/renderer/vulkan/vk_utils.cpp:
+        (rx::HasKhronosValidationLayer):
+        (rx::HasStandardValidationLayer):
+        (rx::GetAvailableValidationLayers):
+        (rx::vk::StagingBuffer::init):
+        (rx::vk::StagingBuffer::release):
+        (rx::vk::GarbageObject::GarbageObject):
+        (rx::vk::GarbageObject::operator=):
+        (rx::vk::GarbageObject::destroy):
+        (rx::gl_vk::GetSamplerMipmapMode):
+        (rx::vk::StagingBuffer::dumpResources): Deleted.
+        (rx::vk::GarbageObjectBase::GarbageObjectBase): Deleted.
+        (rx::vk::GarbageObjectBase::destroy): Deleted.
+        (rx::vk::GarbageObject::destroyIfComplete): Deleted.
+        * src/libANGLE/renderer/vulkan/vk_utils.h:
+        (rx::vk::GarbageObject::valid const):
+        (rx::vk::GarbageObject::Get):
+        (rx::vk::GetGarbage):
+        (rx::vk::GarbageObjectBase::GarbageObjectBase): Deleted.
+        * src/libANGLE/renderer/vulkan/vk_wrapper.h:
+        (rx::vk::WrappedObject::getHandle const):
+        (rx::vk::WrappedObject::valid const):
+        (rx::vk::WrappedObject::ptr const):
+        (rx::vk::WrappedObject::release):
+        (rx::vk::WrappedObject::WrappedObject):
+        (rx::vk::WrappedObject::~WrappedObject):
+        (rx::vk::WrappedObject::operator=):
+        (rx::vk::priv::CommandBuffer::SupportsQueries):
+        (rx::vk::priv::CommandBuffer::getMemoryUsageStats const):
+        (rx::vk::priv::CommandBuffer::drawIndexedIndirect):
+        (rx::vk::priv::CommandBuffer::drawIndirect):
+        (rx::vk::WrappedObject::dumpResources): Deleted.
+        (rx::vk::priv::CommandBuffer::getMemoryUsageStats): Deleted.
+        * src/libANGLE/validationEGL.cpp:
+        (egl::ValidateCreateContext):
+        (egl::ValidateMakeCurrent):
+        (egl::ValidateCompatibleSurface):
+        (egl::ValidateStreamConsumerGLTextureExternalKHR):
+        (egl::ValidateStreamConsumerGLTextureExternalAttribsNV):
+        (egl::ValidateQueryStringiANGLE):
+        (egl::ValidateCompatibleConfigs): Deleted.
+        * src/libANGLE/validationEGL.h:
+        * src/libANGLE/validationES.cpp:
+        (gl::ValidateRenderbufferStorageParametersBase):
+        (gl::ValidateTexStorageMultisample):
+        * src/libANGLE/validationES.h:
+        (gl::ValidateVertexFormat):
+        * src/libANGLE/validationES2.cpp:
+        (gl::ValidateES2TexStorageParameters):
+        * src/libANGLE/validationES3.cpp:
+        (gl::ValidateES3TexStorageParametersBase):
+        * src/libANGLE/validationES31.cpp:
+        (gl::err::ValidateProgramResourceIndex):
+        * src/libGLESv2.gni:
+        * src/libGLESv2/entry_points_egl_ext.cpp:
+        * src/tests/BUILD.gn:
+        * src/tests/angle_deqp_tests_main.cpp:
+        (main):
+        * src/tests/angle_end2end_tests.gni:
+        * src/tests/compiler_tests/DebugShaderPrecision_test.cpp:
+        (TEST_F):
+        * src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp:
+        (sh::TEST):
+        * src/tests/compiler_tests/ImmutableString_test_autogen.cpp:
+        (sh::TEST):
+        * src/tests/compiler_tests/QualificationOrder_test.cpp:
+        (TEST_F):
+        * src/tests/deqp_support/angle_deqp_gtest.cpp:
+        (angle::InitTestHarness):
+        * src/tests/deqp_support/angle_deqp_libtester_main.cpp:
+        * src/tests/deqp_support/deqp_egl_TestExpectations: Removed.
+        * src/tests/deqp_support/deqp_gles2_TestExpectations: Removed.
+        * src/tests/deqp_support/deqp_gles31_TestExpectations: Removed.
+        * src/tests/deqp_support/deqp_gles3_TestExpectations: Removed.
+        * src/tests/deqp_support/deqp_khr_gles2_TestExpectations: Removed.
+        * src/tests/deqp_support/deqp_khr_gles31_TestExpectations: Removed.
+        * src/tests/deqp_support/deqp_khr_gles3_TestExpectations: Removed.
+        * src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp:
+        * src/tests/deqp_support/tcuANGLEPlatform.cpp:
+        (tcu::ANGLEPlatform::ANGLEPlatform):
+        * src/tests/deqp_support/tes31Context_override.cpp:
+        (deqp::gles31::Context::Context):
+        (deqp::gles31::Context::~Context):
+        (deqp::gles31::Context::createRenderContext):
+        (deqp::gles31::Context::destroyRenderContext):
+        (deqp::gles31::Context::getRenderTarget const):
+        * src/tests/egl_tests/EGLDeviceCGLTest.cpp: Added.
+        (EGLDeviceCGLQueryTest::EGLDeviceCGLQueryTest):
+        (TEST_P):
+        * src/tests/egl_tests/EGLDirectCompositionTest.cpp:
+        * src/tests/egl_tests/EGLFeatureControlTest.cpp:
+        (TEST_P):
+        * src/tests/egl_tests/EGLNoConfigContextTest.cpp: Added.
+        (EGLNoConfigContextTest::EGLNoConfigContextTest):
+        (TEST_P):
+        * src/tests/gl_tests/BlendFuncExtendedTest.cpp:
+        (angle::EXTBlendFuncExtendedDrawTestES3::LinkProgram):
+        * src/tests/gl_tests/ComputeShaderTest.cpp:
+        * src/tests/gl_tests/CopyTexImageTest.cpp:
+        (angle::TEST_P):
+        * src/tests/gl_tests/CopyTextureTest.cpp:
+        (angle::CopyTextureVariationsTest::initializeSourceTexture):
+        (angle::CopyTextureVariationsTest::testCopyTexture):
+        (angle::CopyTextureVariationsTest::testCopySubTexture):
+        (angle::TEST_P):
+        * src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp:
+        (angle::DrawBaseVertexBaseInstanceTest::DrawBaseVertexBaseInstanceTest):
+        (angle::DrawBaseVertexBaseInstanceTest::vertexShaderSource300):
+        * src/tests/gl_tests/FramebufferTest.cpp:
+        (TEST_P):
+        * src/tests/gl_tests/GLSLTest.cpp:
+        * src/tests/gl_tests/IndexBufferOffsetTest.cpp:
+        * src/tests/gl_tests/InstancingTest.cpp:
+        * src/tests/gl_tests/LineLoopTest.cpp:
+        (LineLoopTest::checkPixels):
+        (LineLoopTest::runTest):
+        (LineLoopIndirectTest::runTest):
+        (TEST_P):
+        * src/tests/gl_tests/LinkAndRelinkTest.cpp:
+        (angle::TEST_P):
+        * src/tests/gl_tests/MipmapTest.cpp:
+        * src/tests/gl_tests/OcclusionQueriesTest.cpp:
+        * src/tests/gl_tests/ParallelShaderCompileTest.cpp:
+        (angle::ParallelShaderCompileTest::TaskRunner::run):
+        * src/tests/gl_tests/ProgramInterfaceTest.cpp:
+        * src/tests/gl_tests/SimpleOperationTest.cpp:
+        * src/tests/gl_tests/StateChangeTest.cpp:
+        * src/tests/gl_tests/TextureTest.cpp:
+        (angle::SliceFormatColor):
+        (angle::SliceFormatColor32F):
+        * src/tests/gl_tests/TimerQueriesTest.cpp:
+        * src/tests/gl_tests/UniformBufferTest.cpp:
+        * src/tests/gl_tests/VertexAttributeTest.cpp:
+        (angle::TypeStride):
+        (angle::Normalize10):
+        (angle::Normalize2):
+        (angle::Pack1010102):
+        (angle::VertexAttributeTest::checkPixels):
+        (angle::VertexAttributeTest::checkRGBPixels):
+        (angle::VertexAttributeTest::runTest):
+        (angle::TEST_P):
+        * src/tests/gles1_conformance_tests/ConformanceTests.cpp:
+        (angle::TEST_P):
+        * src/tests/perf_tests/ANGLEPerfTest.cpp:
+        * src/tests/perf_tests/DrawCallPerf.cpp:
+        (angle::DrawArraysPerfParams::DrawArraysPerfParams): Deleted.
+        (angle::DrawArraysPerfParams::story const): Deleted.
+        (angle::operator<<): Deleted.
+        (angle::CreateSimpleTexture2D): Deleted.
+        (angle::DrawCallPerfBenchmark::DrawCallPerfBenchmark): Deleted.
+        (angle::DrawCallPerfBenchmark::initializeBenchmark): Deleted.
+        (): Deleted.
+        * src/tests/perf_tests/EGLMakeCurrentPerf.cpp:
+        * src/tests/perf_tests/LinkProgramPerfTest.cpp:
+        (angle::TEST_P):
+        * src/tests/perf_tests/MultiviewPerf.cpp:
+        (angle::MultiviewCPUBoundBenchmark::initializeBenchmark):
+        (angle::MultiviewGPUBoundBenchmark::initializeBenchmark):
+        (angle::TEST_P):
+        * src/tests/perf_tests/UniformsPerf.cpp:
+        (TEST_P):
+        * src/tests/perf_tests/VulkanPipelineCachePerf.cpp:
+        (rx::VulkanPipelineCachePerfTest::step):
+        * src/tests/perf_tests/glmark2Benchmark.cpp:
+        * src/tests/test_expectations/GPUTestConfig.cpp:
+        (angle::GPUTestConfig::GPUTestConfig):
+        * src/tests/test_expectations/GPUTestConfig.h:
+        * src/tests/test_expectations/GPUTestExpectationsParser.cpp:
+        (angle::GPUTestExpectationsParser::parseLine):
+        * src/tests/test_utils/ANGLETest.cpp:
+        * src/tests/test_utils/ANGLETest.h:
+        * src/tests/test_utils/angle_test_configs.cpp:
+        (angle::PlatformParameters::initDefaultParameters):
+        (angle::operator<<):
+        (angle::egl_platform::VULKAN_SWIFTSHADER):
+        (angle::ES2_VULKAN_SWIFTSHADER):
+        * src/tests/test_utils/angle_test_configs.h:
+        * src/tests/test_utils/angle_test_instantiate.cpp:
+        (angle::IsWindows7):
+        * src/tests/test_utils/angle_test_instantiate.h:
+        * src/third_party/compiler/README.chromium:
+        * third_party/vulkan-headers/BUILD.gn: Removed.
+        * third_party/vulkan-headers/vulkan_headers_script_deps.gni: Removed.
+        * third_party/vulkan-loader/BUILD.gn:
+        * third_party/vulkan-tools/BUILD.gn: Removed.
+        * third_party/vulkan-validation-layers/BUILD.gn: Removed.
+        * third_party/vulkan-validation-layers/dummy_spirv_tools_commit_id.h: Removed.
+        * util/EGLWindow.cpp:
+        * util/fuchsia/ScenicWindow.cpp:
+        (ScenicWindow::resetNativeWindow):
+        * util/posix/crash_handler_posix.cpp: Renamed from Source/ThirdParty/ANGLE/util/posix/Posix_crash_handler.cpp.
+        * util/posix/test_utils_posix.cpp: Renamed from Source/ThirdParty/ANGLE/util/posix/Posix_system_utils.cpp.
+        * util/test_utils.h: Renamed from Source/ThirdParty/ANGLE/util/system_utils.h.
+        * util/util.gni:
+        * util/util_gl.h:
+        * util/windows/WGLWindow.cpp:
+        * util/windows/test_utils_win.cpp: Renamed from Source/ThirdParty/ANGLE/util/windows/Windows_system_utils.cpp.
+        (angle::PrintStackBacktrace):
+        * util/windows/win32/test_utils_win32.cpp: Renamed from Source/ThirdParty/ANGLE/util/windows/win32/Win32_system_utils.cpp.
+        * util/x11/X11Window.cpp:
+
 2019-10-01  Fujii Hironori  <Hironori.Fujii@sony.com>
 
         [WinCairo][Clang][ANGLE] global_state.cpp(39,1): error: static_assert failed due to requirement 'std::is_trivially_constructible<std::atomic<std::mutex *>>::value' "global mutex is not trivially constructible"
diff --git a/Source/ThirdParty/ANGLE/DEPS b/Source/ThirdParty/ANGLE/DEPS
index ff76c41..0c20ff2 100644
--- a/Source/ThirdParty/ANGLE/DEPS
+++ b/Source/ThirdParty/ANGLE/DEPS
@@ -5,6 +5,7 @@
 vars = {
   'android_git': 'https://android.googlesource.com',
   'chromium_git': 'https://chromium.googlesource.com',
+  'swiftshader_git': 'https://swiftshader.googlesource.com',
 
   # This variable is set on the Chrome infra for compatiblity with gclient.
   'angle_root': '.',
@@ -20,46 +21,46 @@
   'deqp_revision': 'd3eef28e67ce6795ba3a2124aaa977819729d45f',
 
   # Current revision of glslang, the Khronos SPIRV compiler.
-  'glslang_revision': '664ad418f8455159fb066e9e27d159f191f976a9',
+  'glslang_revision': '4b97a1108114107a8082a55e9e0721a40f9536d3',
 
   # Current revision fo the SPIRV-Headers Vulkan support library.
-  'spirv_headers_revision': '123dc278f204f8e833e1a88d31c46d0edf81d4b2',
+  'spirv_headers_revision': '842ec90674627ed2ffef609e3cd79d1562eded01',
 
   # Current revision of SPIRV-Tools for Vulkan.
-  'spirv_tools_revision': '7f7236f1eba0afae2669ea777896f0435be4c96d',
+  'spirv_tools_revision': '3c7ff8d4f0a1c0f27328871fe64879170a4f0930',
 
   # Current revision of Khronos Vulkan-Headers.
-  'vulkan_headers_revision': '982f0f84dccf6f281b48318c77261a9028000126',
+  'vulkan_headers_revision': '5b44df19e040fca0048ab30c553a8c2d2cb9623e',
 
   # Current revision of Khronos Vulkan-Loader.
-  'vulkan_loader_revision': '2f0abfcf9eb04018e6e92125a70bc28665aa17fe',
+  'vulkan_loader_revision': 'b5a0995324fa9fb2a6152197b442400e7d7be5b6',
 
   # Current revision of Khronos Vulkan-Tools.
-  'vulkan_tools_revision': 'f392e71b994036c92b896c2a62cc63d042b7f9b1',
+  'vulkan_tools_revision': '40cd2166a44647a4283517e31af4589410c654eb',
 
   # Current revision of Khronos Vulkan-ValidationLayers.
-  'vulkan_validation_revision': 'ff80a937c8a505abbdddb95d8ffaa446820c8391',
+  'vulkan_validation_revision': '9fba37afae13a11bd49ae942bf82e5bf1098e381',
 }
 
 deps = {
 
   '{angle_root}/angle-internal': {
-    'url': 'https://chrome-internal.googlesource.com/angle/angle-internal.git@05522f9eb159afbbe35a246d5027893c56926a76',
+    'url': 'https://chrome-internal.googlesource.com/angle/angle-internal.git@f682552d8131422e91f45661a7af83e885ff70ce',
     'condition': 'checkout_src_internal',
   },
 
   '{angle_root}/build': {
-    'url': '{chromium_git}/chromium/src/build.git@af1bbc9483aed572f1ea1a32e43bb504c3edb357',
+    'url': '{chromium_git}/chromium/src/build.git@fd0d28db8039e2aaf9fa35e53e3af6dc9ead8055',
     'condition': 'not build_with_chromium',
   },
 
   '{angle_root}/buildtools': {
-    'url': '{chromium_git}/chromium/src/buildtools.git@74cfb57006f83cfe050817526db359d5c8a11628',
+    'url': '{chromium_git}/chromium/src/buildtools.git@cf454b247c611167388742c7a31ef138a6031172',
     'condition': 'not build_with_chromium',
   },
 
   '{angle_root}/testing': {
-    'url': '{chromium_git}/chromium/src/testing@78e8d947158ba72b0e457abc9ea3fb30c2252646',
+    'url': '{chromium_git}/chromium/src/testing@9d2d0dad367ac7e98e64cc6881044c482e1c7eb8',
     'condition': 'not build_with_chromium',
   },
 
@@ -94,7 +95,7 @@
   },
 
   '{angle_root}/third_party/googletest/src': {
-    'url': '{chromium_git}/external/github.com/google/googletest.git@3f5b5b8f8493a03fa25f1e4a7eae7678514a431d',
+    'url': '{chromium_git}/external/github.com/google/googletest.git@cd17fa2abda2a2e4111cdabd62a87aea16835014',
     'condition': 'not build_with_chromium',
   },
 
@@ -160,6 +161,11 @@
     'condition': 'not build_with_chromium',
   },
 
+  '{angle_root}/third_party/SwiftShader': {
+    'url': '{swiftshader_git}/SwiftShader@036463457e5f11a9257553fadb5e8c193bec6f7e',
+    'condition': 'not build_with_chromium',
+  },
+
   '{angle_root}/third_party/vulkan-headers/src': {
     'url': '{chromium_git}/external/github.com/KhronosGroup/Vulkan-Headers@{vulkan_headers_revision}',
   },
@@ -177,7 +183,7 @@
   },
 
   '{angle_root}/third_party/yasm': {
-    'url': '{chromium_git}/chromium/src/third_party/yasm@15439370afd9df5359a0ff12244c2ccb2111c787',
+    'url': '{chromium_git}/chromium/src/third_party/yasm@cc10bc0f1d96a4bae0e775f2ac2b6ac5b08078c6',
     'condition': 'not build_with_chromium',
   },
 
@@ -187,12 +193,12 @@
   },
 
   '{angle_root}/third_party/zlib': {
-    'url': '{chromium_git}/chromium/src/third_party/zlib@0044d0424c7f7d15436541ed1ecc89479b8bfda4',
+    'url': '{chromium_git}/chromium/src/third_party/zlib@ddebad26cfadeb4ecdfe3da8beb396a85cf90c91',
     'condition': 'not build_with_chromium',
   },
 
   '{angle_root}/tools/clang': {
-    'url': '{chromium_git}/chromium/src/tools/clang.git@2fef805e5b05b26a8c87c47865590b5f43218611',
+    'url': '{chromium_git}/chromium/src/tools/clang.git@6bc727d9d80f2c3a97587676bb38c5472afe7e60',
     'condition': 'not build_with_chromium',
   },
 
diff --git a/Source/ThirdParty/ANGLE/GLESv2.cmake b/Source/ThirdParty/ANGLE/GLESv2.cmake
index 421de343..3920026 100644
--- a/Source/ThirdParty/ANGLE/GLESv2.cmake
+++ b/Source/ThirdParty/ANGLE/GLESv2.cmake
@@ -837,6 +837,8 @@
 set(libangle_gl_cgl_sources
     src/libANGLE/renderer/gl/cgl/ContextCGL.cpp
     src/libANGLE/renderer/gl/cgl/ContextCGL.h
+    src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp
+    src/libANGLE/renderer/gl/cgl/DeviceCGL.h
     src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
     src/libANGLE/renderer/gl/cgl/DisplayCGL.h
     src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm
diff --git a/Source/ThirdParty/ANGLE/OWNERS b/Source/ThirdParty/ANGLE/OWNERS
index b700861..57a833b 100644
--- a/Source/ThirdParty/ANGLE/OWNERS
+++ b/Source/ThirdParty/ANGLE/OWNERS
@@ -5,4 +5,5 @@
 syoussefi@chromium.org
 ynovikov@chromium.org
 
-# COMPONENT: Internals>GPU>Angle
+# COMPONENT: Internals>GPU>ANGLE
+# TEAM: angleproject@googlegroups.com
diff --git a/Source/ThirdParty/ANGLE/PRESUBMIT.py b/Source/ThirdParty/ANGLE/PRESUBMIT.py
index de83d12..25b7d87 100644
--- a/Source/ThirdParty/ANGLE/PRESUBMIT.py
+++ b/Source/ThirdParty/ANGLE/PRESUBMIT.py
@@ -7,7 +7,11 @@
 for more details on the presubmit API built into depot_tools.
 """
 
-from subprocess import call
+import os
+import shutil
+import subprocess
+import sys
+import tempfile
 
 # Fragment of a regular expression that matches C++ and Objective-C++ implementation files.
 _IMPLEMENTATION_EXTENSIONS = r'\.(cc|cpp|cxx|mm)$'
@@ -15,6 +19,13 @@
 # Fragment of a regular expression that matches C++ and Objective-C++ header files.
 _HEADER_EXTENSIONS = r'\.(h|hpp|hxx)$'
 
+_PRIMARY_EXPORT_TARGETS = [
+    '//:libEGL',
+    '//:libGLESv1_CM',
+    '//:libGLESv2',
+    '//:translator',
+]
+
 
 def _CheckChangeHasBugField(input_api, output_api):
     """Requires that the changelist have a Bug: field."""
@@ -102,12 +113,46 @@
     return []
 
 
+def _CheckExportValidity(input_api, output_api):
+    outdir = tempfile.mkdtemp()
+    # shell=True is necessary on Windows, as otherwise subprocess fails to find
+    # either 'gn' or 'vpython3' even if they are findable via PATH.
+    use_shell = input_api.is_windows
+    try:
+        try:
+            subprocess.check_output(['gn', 'gen', outdir], shell=use_shell)
+        except subprocess.CalledProcessError as e:
+            return [
+                output_api.PresubmitError(
+                    'Unable to run gn gen for export_targets.py: %s' % e.output)
+            ]
+        export_target_script = os.path.join(input_api.PresubmitLocalPath(), 'scripts',
+                                            'export_targets.py')
+        try:
+            subprocess.check_output(
+                ['vpython3', export_target_script, outdir] + _PRIMARY_EXPORT_TARGETS,
+                stderr=subprocess.STDOUT,
+                shell=use_shell)
+        except subprocess.CalledProcessError as e:
+            if input_api.is_committing:
+                return [output_api.PresubmitError('export_targets.py failed: %s' % e.output)]
+            return [
+                output_api.PresubmitPromptWarning(
+                    'export_targets.py failed, this may just be due to your local checkout: %s' %
+                    e.output)
+            ]
+        return []
+    finally:
+        shutil.rmtree(outdir)
+
+
 def CheckChangeOnUpload(input_api, output_api):
     results = []
     results.extend(_CheckCodeGeneration(input_api, output_api))
     results.extend(_CheckChangeHasBugField(input_api, output_api))
     results.extend(input_api.canned_checks.CheckChangeHasDescription(input_api, output_api))
     results.extend(_CheckNewHeaderWithoutGnChange(input_api, output_api))
+    results.extend(_CheckExportValidity(input_api, output_api))
     results.extend(
         input_api.canned_checks.CheckPatchFormatted(
             input_api, output_api, result_factory=output_api.PresubmitError))
@@ -121,5 +166,6 @@
         input_api.canned_checks.CheckPatchFormatted(
             input_api, output_api, result_factory=output_api.PresubmitError))
     results.extend(_CheckChangeHasBugField(input_api, output_api))
+    results.extend(_CheckExportValidity(input_api, output_api))
     results.extend(input_api.canned_checks.CheckChangeHasDescription(input_api, output_api))
     return results
diff --git a/Source/ThirdParty/ANGLE/README.md b/Source/ThirdParty/ANGLE/README.md
index 3ae7e15..aed11cd 100644
--- a/Source/ThirdParty/ANGLE/README.md
+++ b/Source/ThirdParty/ANGLE/README.md
@@ -77,4 +77,5 @@
 * Learn about the past, present, and future of the ANGLE implementation in [this presentation](https://docs.google.com/presentation/d/1CucIsdGVDmdTWRUbg68IxLE5jXwCb2y1E9YVhQo0thg/pub?start=false&loop=false).
 * Watch a [short presentation](https://youtu.be/QrIKdjmpmaA) on the Vulkan back-end.
 * Track the [dEQP test conformance](doc/dEQP-Charts.md)
+* Read design docs on the [Vulkan back-end](src/libANGLE/renderer/vulkan/README.md)
 * If you use ANGLE in your own project, we'd love to hear about it!
diff --git a/Source/ThirdParty/ANGLE/android/angle_apk.gni b/Source/ThirdParty/ANGLE/android/angle_apk.gni
index 39f3c8a..c561c40 100644
--- a/Source/ThirdParty/ANGLE/android/angle_apk.gni
+++ b/Source/ThirdParty/ANGLE/android/angle_apk.gni
@@ -5,13 +5,7 @@
 import("//build/config/android/rules.gni")
 import("//third_party/angle/gni/angle.gni")
 
-vulkan_validation_layers = [
-  "VkLayer_core_validation",
-  "VkLayer_object_lifetimes",
-  "VkLayer_stateless_validation",
-  "VkLayer_thread_safety",
-  "VkLayer_unique_objects",
-]
+vulkan_validation_layers = [ "VkLayer_khronos_validation" ]
 
 angle_libraries = [
   "libEGL",
diff --git a/Source/ThirdParty/ANGLE/build_overrides/angle.gni b/Source/ThirdParty/ANGLE/build_overrides/angle.gni
index 96647fc..5bf1aa2 100644
--- a/Source/ThirdParty/ANGLE/build_overrides/angle.gni
+++ b/Source/ThirdParty/ANGLE/build_overrides/angle.gni
@@ -5,6 +5,9 @@
 # Override for angle_root
 angle_root = "//"
 
+# True if ANGLE can access build/, testing/ and other Chrome folders.
+angle_has_build = true
+
 # Overrides for ANGLE's dependencies
 angle_glslang_dir = "//third_party/glslang/src"
 angle_googletest_dir = "//third_party/googletest/src"
diff --git a/Source/ThirdParty/ANGLE/changes.diff b/Source/ThirdParty/ANGLE/changes.diff
index 8b5316c..3174c41 100644
--- a/Source/ThirdParty/ANGLE/changes.diff
+++ b/Source/ThirdParty/ANGLE/changes.diff
@@ -1,4 +1,4 @@
-From e4a3241f67b63b2c3b5ac018236ad9e7d07adbe8 Mon Sep 17 00:00:00 2001
+From e29224ba15b723527c541859d0767393b1f2e905 Mon Sep 17 00:00:00 2001
 From: Don <don.j.olmstead@gmail.com>
 Date: Thu, 9 May 2019 12:12:42 -0700
 Subject: [PATCH 1/2] Add licensing clarification
@@ -10,7 +10,7 @@
  3 files changed, 6 insertions(+)
 
 diff --git a/src/compiler/preprocessor/ExpressionParser.cpp b/src/compiler/preprocessor/ExpressionParser.cpp
-index 1b71ef7..5c2b9e7 100644
+index 1b71ef75a..5c2b9e7a0 100644
 --- a/src/compiler/preprocessor/ExpressionParser.cpp
 +++ b/src/compiler/preprocessor/ExpressionParser.cpp
 @@ -1,5 +1,7 @@
@@ -22,7 +22,7 @@
  
     Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
 diff --git a/src/compiler/translator/glslang_tab.cpp b/src/compiler/translator/glslang_tab.cpp
-index e49325c..5fe7c49 100644
+index e49325c03..5fe7c4943 100644
 --- a/src/compiler/translator/glslang_tab.cpp
 +++ b/src/compiler/translator/glslang_tab.cpp
 @@ -1,5 +1,7 @@
@@ -34,7 +34,7 @@
  
     Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
 diff --git a/src/compiler/translator/glslang_tab.h b/src/compiler/translator/glslang_tab.h
-index 5ffee8a..3774e91 100644
+index 5ffee8a4c..3774e91d1 100644
 --- a/src/compiler/translator/glslang_tab.h
 +++ b/src/compiler/translator/glslang_tab.h
 @@ -1,5 +1,7 @@
@@ -49,7 +49,7 @@
 2.19.0.605.g01d371f741-goog
 
 
-From 4b85bdc63dfe66cb25abab5ddd1c475fd68e3ecf Mon Sep 17 00:00:00 2001
+From c17fff937db47af831017b044acf11d20286620f Mon Sep 17 00:00:00 2001
 From: James Darpinian <jdarpinian@chromium.org>
 Date: Wed, 11 Sep 2019 18:12:01 -0700
 Subject: [PATCH 2/2] Disable -Wglobal-constructors false positives
@@ -60,7 +60,7 @@
  2 files changed, 6 insertions(+)
 
 diff --git a/src/common/utilities.cpp b/src/common/utilities.cpp
-index a3f0faa..e463694 100644
+index 44f925dad..38ddd43d7 100644
 --- a/src/common/utilities.cpp
 +++ b/src/common/utilities.cpp
 @@ -6,6 +6,9 @@
@@ -74,7 +74,7 @@
  #include <GLSLANG/ShaderVars.h>
  #include "common/mathutil.h"
 diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
-index b15fcfc..dca047a 100644
+index cbd3f6632..1421b8636 100644
 --- a/src/libANGLE/State.cpp
 +++ b/src/libANGLE/State.cpp
 @@ -6,6 +6,9 @@
diff --git a/Source/ThirdParty/ANGLE/doc/DevSetup.md b/Source/ThirdParty/ANGLE/doc/DevSetup.md
index c55439d..f00abc0 100644
--- a/Source/ThirdParty/ANGLE/doc/DevSetup.md
+++ b/Source/ThirdParty/ANGLE/doc/DevSetup.md
@@ -1,36 +1,32 @@
 # ANGLE Development
 
-ANGLE provides OpenGL ES 2.0 and EGL 1.4 libraries and dlls.  You can use these to build and run OpenGL ES 2.0 applications on Windows, Linux, Mac and Android.
+ANGLE provides OpenGL ES 3.1 and EGL 1.5 libraries and tests. You can use these to build and run OpenGL ES applications on Windows, Linux, Mac and Android.
 
 ## Development setup
 
 ### Version Control
-ANGLE uses git for version control. If you are not familiar with git, helpful documentation can be found at [http://git-scm.com/documentation](http://git-scm.com/documentation).
+ANGLE uses git for version control. Helpful documentation can be found at [http://git-scm.com/documentation](http://git-scm.com/documentation).
 
 ### Required Tools
 On all platforms:
 
- * GN is the build system.  GYP support has been removed.
- * Clang will be set up by the build system and used by default.  See below for platform-specific compiler choices.
- * [depot_tools](http://dev.chromium.org/developers/how-tos/install-depot-tools)
-   * Required to generate projects and build files, contribute patches, run the unit tests or build the shader compiler on non-Windows systems.
+ * [depot_tools](https://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up)
+   * Required to download dependencies (with gclient), generate build files (with GN), and compile ANGLE (with ninja).
+   * Ensure `depot_tools` is in your path as it provides ninja for compilation.
 
 On Windows:
 
- * [Visual Studio Community 2017 Update 3.2](https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes)
-   * Put `is_clang = false` in your gn args to compile with the Microsoft Visual C++ compiler instead of clang.
-   * See the [Chromium Windows build instructions](https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md) for more info.
-   * Required for the packaged Windows 10 SDK.
+ * ***IMPORTANT: Set `DEPOT_TOOLS_WIN_TOOLCHAIN=0` in your environment if you are not a Googler.***
+ * [Visual Studio Community 2019](https://visualstudio.microsoft.com/vs/)
  * [Windows 10 Standalone SDK version 10.0.17134 exactly](https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk).
    * Comes with additional features that aid development, such as the Debug runtime for D3D11. Required for the D3D Compiler DLL.
- * [Cygwin's Bison, flex, and patch](https://cygwin.com/setup-x86_64.exe) (optional)
+ * (optional) [Cygwin's Bison, flex, and patch](https://cygwin.com/setup-x86_64.exe)
    * This is only required if you need to modify GLSL ES grammar files (`glslang.l` and `glslang.y` under `src/compiler/translator`, or `ExpressionParser.y` and `Tokenizer.l` in `src/compiler/preprocessor`).
-     Use the latest versions of bison, flex and patch from the 64-bit cygwin distribution.
- * **IMPORTANT**: Non-googlers need to set `DEPOT_TOOLS_WIN_TOOLCHAIN` environment variable to 0.
+ * (optional) See the [Chromium Windows build instructions](https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md) for more info.
 
 On Linux:
 
- * Development packages for OpenGL, X11 and libpci (all of these dependencies should be installed automatically when running `install-build-deps.sh` later on).
+ * Install package dependencies by running `install-build-deps.sh` later on.
  * Bison and flex are not needed as we only support generating the translator grammar on Windows.
 
 On MacOS:
@@ -58,38 +54,47 @@
 gn gen out/Debug
 ```
 
-GN will generate ninja files by default.  To change the default build options run `gn args out/Debug`.  Some commonly used options are:
+On Windows only, ensure you **set `DEPOT_TOOLS_WIN_TOOLCHAIN=0` in your environment** (if you are not a Googler).
+
+GN will generate ninja files. To change the default build options run `gn args out/Debug`.  Some commonly used options are:
 ```
-target_cpu = "x64"  (or "x86")
-is_clang = false    (to use system default compiler instead of clang)
-is_debug = true     (enable debugging, true is the default)
+target_cpu = "x86"        (default is "x64")
+is_clang = false          (to use system default compiler instead of clang)
+is_debug = true           (enable debugging, true is the default)
+dcheck_always_on = true   (enable release asserts and debug layers)
 ```
+
 For a release build run `gn args out/Release` and set `is_debug = false`.
 
+On Windows, you can build for the Universal Windows Platform (UWP) by setting `target_os = "winuwp"` in the args.
+
 For more information on GN run `gn help`.
 
 Ninja can be used to compile on all platforms with one of the following commands:
 ```
-ninja -C out/Debug
-ninja -C out/Release
+autoninja -C out/Debug
+autoninja -C out/Release
 ```
 Ninja automatically calls GN to regenerate the build files on any configuration change.
+
 Ensure `depot_tools` is in your path as it provides ninja.
 
 ### Building with Visual Studio
 
 To generate the Visual Studio solution in `out/Debug/angle-debug.sln`:
 ```
-gn gen out/Debug --sln=angle-debug --ide=vs<2017/2019>
+gn gen out/Debug --sln=angle-debug --ide=vs2019
 ```
 
 In Visual Studio:
  1. Open the ANGLE solution file `out/Debug/angle-debug.sln`.
- 2. Right click the "all" solution and select build.  "Build Solution" is not functional with GN; instead build one target at a time."
+ 2. It is recommended you still use `autoninja` from the command line to build.
+ 3. If you do want to build in the solution, "Build Solution" is not functional with GN. Build one target at a time.
 
-Once the build completes all ANGLE libraries, tests, and samples will be located in out/Debug.
+Once the build completes all ANGLE libraries, tests, and samples will be located in `out/Debug`.
 
 ### Building ANGLE for Android
+
 Building ANGLE for Android is heavily dependent on the Chromium toolchain. It is not currently possible to build ANGLE for Android without a Chromium checkout. See http://anglebug.com/2344 for more details on why.
 Please follow the steps in
 [Checking out and building Chromium for Android](https://chromium.googlesource.com/chromium/src/+/master/docs/android_build_instructions.md).
diff --git a/Source/ThirdParty/ANGLE/dotfile_settings.gni b/Source/ThirdParty/ANGLE/dotfile_settings.gni
index 8c370c3..baf6e60 100644
--- a/Source/ThirdParty/ANGLE/dotfile_settings.gni
+++ b/Source/ThirdParty/ANGLE/dotfile_settings.gni
@@ -8,9 +8,10 @@
 angle_dotfile_settings = {
   exec_script_whitelist = [
     get_path_info("BUILD.gn", "abspath"),
-    get_path_info("third_party/vulkan-headers/BUILD.gn", "abspath"),
-    get_path_info("third_party/vulkan-loader/BUILD.gn", "abspath"),
-    get_path_info("third_party/vulkan-tools/BUILD.gn", "abspath"),
-    get_path_info("third_party/vulkan-validation-layers/BUILD.gn", "abspath"),
+    get_path_info("third_party/vulkan-headers/src/BUILD.gn", "abspath"),
+    get_path_info("third_party/vulkan-loader/src/BUILD.gn", "abspath"),
+    get_path_info("third_party/vulkan-tools/src/BUILD.gn", "abspath"),
+    get_path_info("third_party/vulkan-validation-layers/src/BUILD.gn",
+                  "abspath"),
   ]
 }
diff --git a/Source/ThirdParty/ANGLE/extensions/ANGLE_compressed_texture_etc.txt b/Source/ThirdParty/ANGLE/extensions/ANGLE_compressed_texture_etc.txt
new file mode 100644
index 0000000..8118e1d
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/extensions/ANGLE_compressed_texture_etc.txt
@@ -0,0 +1,73 @@
+Name
+
+    ANGLE_compressed_texture_etc
+
+Name Strings
+
+    GL_ANGLE_compressed_texture_etc
+
+Version
+
+    Last Modifed Date: October 5, 2019
+
+Dependencies
+
+    OpenGL ES 2.0 is required.
+
+Overview
+
+    This extension exposes the OpenGL ES 3.0 core compressed texture
+    formats in OpenGL ES 2.0.
+
+New Procedures and Functions
+
+    None
+
+New Tokens
+
+    Accepted by the <internalformat> parameter of CompressedTexImage2D and the
+    <format> parameter of CompressedTexSubImage2D:
+
+        COMPRESSED_R11_EAC                                0x9270
+        COMPRESSED_SIGNED_R11_EAC                         0x9271
+        COMPRESSED_RG11_EAC                               0x9272
+        COMPRESSED_SIGNED_RG11_EAC                        0x9273
+        COMPRESSED_RGB8_ETC2                              0x9274
+        COMPRESSED_SRGB8_ETC2                             0x9275
+        COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2          0x9276
+        COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2         0x9277
+        COMPRESSED_RGBA8_ETC2_EAC                         0x9278
+        COMPRESSED_SRGB8_ALPHA8_ETC2_EAC                  0x9279
+
+    Querying COMPRESSED_TEXTURE_FORMATS will include these new formats.
+
+New Procedures and Functions
+
+    None.
+
+Errors
+
+    The error INVALID_VALUE is generated if the <internalformat> parameter of
+    CompressedTexImage2D or the <format> parameter of CompressedTexSubImage2D is
+    COMPRESSED_R11_EAC, COMPRESSED_SIGNED_R11_EAC, COMPRESSED_RGB8_ETC2,
+    COMPRESSED_SRGB8_ETC2, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 or
+    COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, and imageSize is not
+
+        floor((width + 3) / 4) * floor((height + 3) / 4) * 8
+
+    The error INVALID_VALUE is generated if the <internalformat> parameter of
+    CompressedTexImage2D or the <format> paremeter of CompressedTexSubImage2D is
+    COMPRESSED_RG11_EAC, COMPRESSED_SIGNED_RG11_EAC, COMPRESSED_RGBA8_ETC2_EAC,
+    or COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, and imageSize is not
+
+        floor((width + 3) / 4) * floor((height + 3) / 4) * 16
+
+
+New State
+
+    None.
+
+Revision History
+
+    9/19/2016   First revision
+    10/5/2019   Rename to ANGLE_compressed_texture_etc
diff --git a/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_device_cgl.txt b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_device_cgl.txt
new file mode 100644
index 0000000..7cdfd62
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_device_cgl.txt
@@ -0,0 +1,94 @@
+Name
+
+    ANGLE_device_cgl
+
+Name Strings
+
+    EGL_ANGLE_device_cgl
+
+Contributors
+
+    Ken Russell   (kbr 'at' google.com)
+    Geoff Lang    (geofflang 'at' google.com)
+
+Contact
+
+    Ken Russell   (kbr 'at' google.com)
+
+Status
+
+    Draft
+
+Version
+
+    Version 1, October 4, 2019
+
+Number
+
+    EGL Extension #XXX
+
+Extension Type
+
+    EGL device extension
+
+Dependencies
+
+    This extension is written against the language of EGL 1.5 as
+    modified by EGL_EXT_device_query.
+
+    EGL_EXT_device_query is required.
+
+Overview
+
+    ANGLE on macOS internally uses an OpenGL context allocated via CGL.
+    This extension defines a mapping from an EGL device to the underlying
+    CGLContextObj and its associated CGLPixelFormatObj, after it's been
+    queried from an EGL display.
+
+IP Status
+
+    No known claims.
+
+New Types
+
+    None.
+
+New Procedures and Functions
+
+    None.
+
+New Tokens
+
+    Accepted as a queried <attribute> in eglQueryDeviceAttribEXT:
+
+        EGL_CGL_CONTEXT_ANGLE           0x3485
+        EGL_CGL_PIXEL_FORMAT_ANGLE      0x3486
+
+Add a new section 2.1.3 (CGL Devices) after 2.1.2 (Devices)
+
+    On macOS the underlying CGLContextObj and CGLPixelFormatObj can be queried
+    from the EGL device. The intented purpose is to allow applications to create
+    new CGL contexts which share resources with this one.
+
+Changes to section 3.2 (Devices)
+
+    Replace the paragraph immediately following the prototype for
+    eglQueryDeviceAttribEXT:
+
+    <attribute> may be either EGL_CGLCONTEXT_DEVICE_ANGLE or
+    EGL_CGLPIXELFORMAT_DEVICE_ANGLE.  On success, EGL_TRUE is returned, and a
+    valid CGLContextObj or CGLPixelFormatObj corresponding to the EGL device is
+    returned in <value>. These objects are compatible with OpenGL and CGL API
+    functions. If the EGL device is not currently associated with a CGL context,
+    EGL_BAD_ATTRIBUTE is returned, and <value> is left unchanged.
+
+Issues
+
+    None
+
+Revision History
+
+    Version 1, October 4, 2019 (Ken Russell)
+        - Initial Draft
+    Version 2, October 8, 2019 (Ken Russell)
+        - Address feedback from Geoff Lang
diff --git a/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_feature_control.txt b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_feature_control.txt
index 3a3256f..ee86d79 100644
--- a/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_feature_control.txt
+++ b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_feature_control.txt
@@ -74,6 +74,7 @@
         EGL_FEATURE_DESCRIPTION_ANGLE   0x3462
         EGL_FEATURE_BUG_ANGLE           0x3463
         EGL_FEATURE_STATUS_ANGLE        0x3464
+        EGL_FEATURE_CONDITION_ANGLE     0x3468
 
     Accepted as a queried <attribute> in eglQueryDisplayAttribANGLE
 
@@ -122,6 +123,9 @@
     with corresponding indices to the array of names. Each string has
     the value "enabled" if the feature is currently enabled, or
     "disabled" if the feature is currently disabled.
+        The EGL_FEATURE_CONDITION_ANGLE array contains strings that
+    describe to the condition that sets the corresponding value in
+    the EGL_FEATURE_STATUS_ANGLE array.
 
     Errors
 
diff --git a/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_d3d11on12.txt b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_d3d11on12.txt
new file mode 100644
index 0000000..21fab86
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_d3d11on12.txt
@@ -0,0 +1,81 @@
+Name
+
+    ANGLE_platform_angle_d3d11on12
+
+Name Strings
+
+    EGL_ANGLE_platform_angle_d3d11on12
+
+Contributors
+
+    Nathan Zabriskie, Microsoft
+
+Contacts
+
+    Nathan Zabriskie, Microsoft (nazabris 'at' microsoft 'dot' com)
+
+Status
+
+    Draft
+
+Version
+
+    Version 1, 2019-10-07
+
+Number
+
+    EGL Extension XXX
+
+Extension Type
+
+    EGL client extension
+
+Dependencies
+
+    Requires ANGLE_platform_angle_d3d.
+
+Overview
+
+    This extension enables the creation of a D3D11on12 display.
+
+New Types
+
+    None
+
+New Procedures and Functions
+
+    None
+
+New Tokens
+
+    Accepted as an attribute name in the <attrib_list> argument of
+    eglGetPlatformDisplayEXT:
+
+        EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE          0x3488
+
+Additions to the EGL Specification
+
+    None.
+
+New Behavior
+
+    To request a D3D11on12 display the value of
+    EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE should be set to EGL_TRUE.
+
+    If EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE is included in the
+    <attrib_list> argument of eglGetPlatformDisplayEXT and
+    EGL_PLATFORM_ANGLE_TYPE_ANGLE is not set to
+    EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE, an EGL_BAD_ATTRIBUTE error is
+    generated and EGL_NO_DISPLAY is returned.
+
+    EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE can be combined with
+    EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE if it is set to
+    EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE or
+    EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE. Other device types
+    will generate an EGL_BAD_ATTRIBUTE error and return
+    EGL_NO_DISPLAY.
+
+Revision History
+
+    Version 1, 2019-10-07 (Nathan Zabriskie)
+      - Initial draft
diff --git a/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_device_type_swiftshader.txt b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_device_type_swiftshader.txt
new file mode 100644
index 0000000..cb0ddea
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_device_type_swiftshader.txt
@@ -0,0 +1,82 @@
+Name
+
+    ANGLE_platform_angle_device_type_swiftshader
+
+Name Strings
+
+    EGL_ANGLE_platform_angle_device_type_swiftshader
+
+Contributors
+
+    Jamie Madill, Google
+
+Contacts
+
+    Jamie Madill, Google (jmadill 'at' google 'dot' com)
+
+Status
+
+    Draft
+
+Version
+
+    Version 1, 2019-08-24
+
+Number
+
+    EGL Extension XXX
+
+Extension Type
+
+    EGL client extension
+
+Dependencies
+
+    Requires EGL_ANGLE_platform_angle_vulkan.
+
+Overview
+
+    This extension enables choosing the SwiftShader Vulkan implementation
+    when it is available.
+
+New Types
+
+    None
+
+New Procedures and Functions
+
+    None
+
+New Tokens
+
+    Accepted as values for the EGL_PLATFORM_ANGLE_TYPE_ANGLE attribute:
+
+        EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE     0x3487
+
+Additions to the EGL Specification
+
+    None.
+
+New Behavior
+
+    When calling eglGetPlatformDisplay:
+
+    To request a SwiftShader-backed Vulkan implementation with ANGLE, the value
+    of EGL_PLATFORM_ANGLE_TYPE_ANGLE should be EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE
+    and the value of EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE should be
+    EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE.
+
+    If EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE is
+    EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE and
+    EGL_PLATFORM_ANGLE_TYPE_ANGLE is not
+    EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE then an EGL_BAD_ATTRIBUTE
+    error is generated and EGL_NO_DISPLAY is returned.
+
+Issues
+
+    None
+
+Revision History
+
+    Version 1, 2019-08-29 (Jamie Madill)
+      - Initial draft
diff --git a/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_metal.txt b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_metal.txt
new file mode 100644
index 0000000..86e5209
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/extensions/EGL_ANGLE_platform_angle_metal.txt
@@ -0,0 +1,76 @@
+Name
+
+    ANGLE_platform_angle_metal
+
+Name Strings
+
+    EGL_ANGLE_platform_angle_metal
+
+Contributors
+
+    Jamie Madill, Google
+
+Contacts
+
+    Jamie Madill, Google (jmadill 'at' google 'dot' com)
+
+Status
+
+    Draft
+
+Version
+
+    Version 2, 2019-10-09
+
+Number
+
+    EGL Extension XXX
+
+Extension Type
+
+    EGL client extension
+
+Dependencies
+
+    Requires ANGLE_platform_angle.
+
+Overview
+
+    This extension enables selection of Metal display types.
+
+New Types
+
+    None
+
+New Procedures and Functions
+
+    None
+
+New Tokens
+
+    Accepted as values for the EGL_PLATFORM_ANGLE_TYPE_ANGLE attribute:
+
+        EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE               0x3489
+
+Additions to the EGL Specification
+
+    None.
+
+New Behavior
+
+    To request a display that is backed by a Metal driver, the value of
+    EGL_PLATFORM_ANGLE_TYPE_ANGLE should be
+    EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE.
+
+Issues
+
+    1) Should the application be able to choose a specific version of Metal?
+
+        RESOLVED: No, use the default returned by the system. It doesn't
+        seem like recommended practice to choose a Metal version when
+        initializing a Metal device.
+
+Revision History
+
+    Version 1, 2019-10-09 (Jamie Madill)
+      - Initial draft
diff --git a/Source/ThirdParty/ANGLE/gni/angle.gni b/Source/ThirdParty/ANGLE/gni/angle.gni
index 1ba4132..e0ca7aa 100644
--- a/Source/ThirdParty/ANGLE/gni/angle.gni
+++ b/Source/ThirdParty/ANGLE/gni/angle.gni
@@ -2,14 +2,32 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//build/config/dcheck_always_on.gni")
-import("//build/config/sanitizers/sanitizers.gni")
-import("//build/config/ui.gni")  # import the use_x11 variable
 import("//build_overrides/angle.gni")
-import("//build_overrides/build.gni")
-import("//testing/test.gni")
-if (is_android) {
-  import("//build/config/android/config.gni")
+
+if (angle_has_build) {
+  import("//build/config/dcheck_always_on.gni")
+  import("//build/config/sanitizers/sanitizers.gni")
+  import("//build/config/ui.gni")  # import the use_x11 variable
+  import("//build_overrides/build.gni")
+  import("//testing/test.gni")
+  if (is_android) {
+    import("//build/config/android/config.gni")
+  }
+
+  if (is_win) {
+    import("//build/config/win/visual_studio_version.gni")
+  }
+} else {
+  declare_args() {
+    is_ubsan = false
+    is_tsan = false
+    is_asan = false
+    build_with_chromium = false
+    dcheck_always_on = false
+    use_x11 = is_linux
+    use_ozone = false
+    use_fuzzing_engine = false
+  }
 }
 
 if (build_with_chromium) {
@@ -47,6 +65,9 @@
   }
   angle_shared_libvulkan = false
 
+  # There's no "is_winuwp" helper in BUILDCONFIG.gn, so we define one ourselves
+  angle_is_winuwp = is_win && current_os == "winuwp"
+
   # Default to using "_angle" suffix on Android
   if (is_android) {
     angle_libs_suffix = "_angle"
@@ -56,16 +77,19 @@
 }
 
 declare_args() {
-  angle_enable_d3d9 = is_win
+  angle_enable_d3d9 = is_win && !angle_is_winuwp
   angle_enable_d3d11 = is_win
-  angle_enable_gl = (ozone_platform_gbm || !is_linux ||
-                     (use_x11 && !is_chromeos)) && !is_fuchsia
+  angle_enable_gl =
+      (ozone_platform_gbm || !is_linux || (use_x11 && !is_chromeos)) &&
+      !is_fuchsia && !angle_is_winuwp
 
   # ANGLE Vulkan backend on Android requires API level 26, i.e. Oreo, due to
   # Vulkan Validation Layers compatibility issues, see http://crrev/c/1405714.
   # Otherwise, API level 24 would have been enough.
-  angle_enable_vulkan = is_win || (is_linux && use_x11 && !is_chromeos) ||
-                        (is_android && ndk_api_level_at_least_26) || is_fuchsia
+  angle_enable_vulkan =
+      angle_has_build &&
+      ((is_win && !angle_is_winuwp) || (is_linux && use_x11 && !is_chromeos) ||
+       (is_android && ndk_api_level_at_least_26) || is_fuchsia)
   angle_enable_null = true
   angle_enable_essl = true
   angle_enable_glsl = true
@@ -81,33 +105,25 @@
       angle_enable_vulkan && !is_ubsan && !is_tsan && !is_asan &&
       (is_debug || dcheck_always_on)
 
-  if (angle_enable_vulkan) {
-    # Enable Vulkan GPU trace event capability
-    angle_enable_vulkan_gpu_trace_events = false
-
-    # Enable custom (cpu-side) secondary command buffers
-    angle_enable_custom_vulkan_cmd_buffers = true
-  }
-
   # Disable overlay by default
   angle_enable_overlay = false
 }
 
-if (is_win) {
-  import("//build/config/win/visual_studio_version.gni")
-}
-
 angle_common_configs = [
   angle_root + ":better_linux_stack_traces",
   angle_root + ":extra_warnings",
   angle_root + ":internal_config",
 ]
 
-angle_remove_configs = [ "//build/config/compiler:default_include_dirs" ]
+angle_remove_configs = []
+
+if (angle_has_build) {
+  angle_remove_configs += [ "//build/config/compiler:default_include_dirs" ]
+}
 angle_better_stack_traces =
     (is_debug || dcheck_always_on) && is_linux && !is_asan && !is_cfi
 
-if (is_clang) {
+if (angle_has_build && is_clang) {
   angle_remove_configs += [ "//build/config/clang:find_bad_constructs" ]
 
   # Disabled to enable better stack traces.
@@ -143,7 +159,16 @@
 set_defaults("angle_test") {
   configs = angle_common_configs
   public_configs = []
+  public_deps = []
+  sources = []
+  data = []
+  main = ""
   suppressed_configs = angle_remove_configs
+
+  # TODO(jmadill): Migrate to standalone harness. http://anglebug.com/3162
+  if (build_with_chromium) {
+    suppressed_configs -= [ "//build/config/compiler:default_include_dirs" ]
+  }
 }
 
 template("angle_executable") {
@@ -226,6 +251,18 @@
 }
 
 template("angle_test") {
+  _googletest_deps = [
+    "//testing/gmock",
+    "//testing/gtest",
+    "//third_party/googletest:gmock",
+    "//third_party/googletest:gtest",
+  ]
+
+  # TODO(jmadill): Migrate to standalone harness. http://anglebug.com/3162
+  if (build_with_chromium) {
+    _googletest_deps += [ "//base/test:test_support" ]
+  }
+
   test(target_name) {
     forward_variables_from(invoker,
                            "*",
@@ -251,5 +288,16 @@
       configs += [ angle_root + ":build_id_config" ]
       configs -= [ "//build/config/android:hide_all_but_jni" ]
     }
+
+    deps += _googletest_deps + [
+              "$angle_root:angle_common",
+              "$angle_root:includes",
+            ]
+
+    if (build_with_chromium) {
+      sources += [ "//gpu/${invoker.main}.cc" ]
+    } else {
+      sources += [ "${invoker.main}.cpp" ]
+    }
   }
 }
diff --git a/Source/ThirdParty/ANGLE/include/EGL/eglext_angle.h b/Source/ThirdParty/ANGLE/include/EGL/eglext_angle.h
index 71118b6..ab5cb8d 100644
--- a/Source/ThirdParty/ANGLE/include/EGL/eglext_angle.h
+++ b/Source/ThirdParty/ANGLE/include/EGL/eglext_angle.h
@@ -65,6 +65,11 @@
 #define EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE 0x320F
 #endif /* EGL_ANGLE_platform_angle_d3d */
 
+#ifndef EGL_ANGLE_platform_angle_d3d11on12
+#define EGL_ANGLE_platform_angle_d3d11on12 1
+#define EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE 0x3488
+#endif /* EGL_ANGLE_platform_angle_d3d11on12 */
+
 #ifndef EGL_ANGLE_platform_angle_opengl
 #define EGL_ANGLE_platform_angle_opengl 1
 #define EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE 0x320D
@@ -82,6 +87,16 @@
 #define EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE 0x3450
 #endif /* EGL_ANGLE_platform_angle_vulkan */
 
+#ifndef EGL_ANGLE_platform_angle_metal
+#define EGL_ANGLE_platform_angle_metal 1
+#define EGL_PLATFORM_ANGLE_TYPE_METAL_ANGLE 0x3489
+#endif /* EGL_ANGLE_platform_angle_metal  */
+
+#ifndef EGL_ANGLE_platform_angle_device_type_swiftshader
+#define EGL_ANGLE_platform_angle_device_type_swiftshader
+#define EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE 0x3487
+#endif /* EGL_ANGLE_platform_angle_device_type_swiftshader */
+
 #ifndef EGL_ANGLE_platform_angle_context_virtualization
 #define EGL_ANGLE_platform_angle_context_virtualization 1
 #define EGL_PLATFORM_ANGLE_CONTEXT_VIRTUALIZATION_ANGLE 0x3481
@@ -219,6 +234,7 @@
 #define EGL_FEATURE_COUNT_ANGLE 0x3465
 #define EGL_FEATURE_OVERRIDES_ENABLED_ANGLE 0x3466
 #define EGL_FEATURE_OVERRIDES_DISABLED_ANGLE 0x3467
+#define EGL_FEATURE_CONDITION_ANGLE 0x3468
 typedef const char *(EGLAPIENTRYP PFNEGLQUERYSTRINGIANGLEPROC) (EGLDisplay dpy, EGLint name, EGLint index);
 typedef EGLBoolean (EGLAPIENTRYP PFNEGLQUERYDISPLAYATTRIBANGLEPROC) (EGLDisplay dpy, EGLint attribute, EGLAttrib *value);
 #ifdef EGL_EGLEXT_PROTOTYPES
@@ -237,6 +253,12 @@
 #define EGL_CONTEXT_OPENGL_BACKWARDS_COMPATIBLE_ANGLE 0x3483
 #endif /* EGL_ANGLE_create_context_backwards_compatible */
 
+#ifndef EGL_ANGLE_device_cgl
+#define EGL_ANGLE_device_cgl 1
+#define EGL_CGL_CONTEXT_ANGLE 0x3485
+#define EGL_CGL_PIXEL_FORMAT_ANGLE 0x3486
+#endif
+
 // clang-format on
 
 #endif  // INCLUDE_EGL_EGLEXT_ANGLE_
diff --git a/Source/ThirdParty/ANGLE/include/platform/Feature.h b/Source/ThirdParty/ANGLE/include/platform/Feature.h
index 657e07b..31a7c04 100644
--- a/Source/ThirdParty/ANGLE/include/platform/Feature.h
+++ b/Source/ThirdParty/ANGLE/include/platform/Feature.h
@@ -13,6 +13,10 @@
 #include <string>
 #include <vector>
 
+#define ANGLE_FEATURE_CONDITION(set, feature, cond) \
+    set->feature.enabled   = cond;                  \
+    set->feature.condition = ANGLE_STRINGIFY(cond);
+
 namespace angle
 {
 
@@ -110,6 +114,9 @@
     // Whether the workaround is enabled or not. Determined by heuristics like vendor ID and
     // version, but may be overriden to any value.
     bool enabled = false;
+
+    // A stingified version of the condition used to set 'enabled'. ie "IsNvidia() && IsApple()"
+    const char *condition;
 };
 
 inline Feature::Feature(const Feature &other) = default;
@@ -118,7 +125,12 @@
                         const char *description,
                         FeatureMap *const mapPtr,
                         const char *bug = "")
-    : name(name), category(category), description(description), bug(bug), enabled(false)
+    : name(name),
+      category(category),
+      description(description),
+      bug(bug),
+      enabled(false),
+      condition(nullptr)
 {
     if (mapPtr != nullptr)
     {
diff --git a/Source/ThirdParty/ANGLE/include/platform/FeaturesD3D.h b/Source/ThirdParty/ANGLE/include/platform/FeaturesD3D.h
index 65a6167..6cf00c3 100644
--- a/Source/ThirdParty/ANGLE/include/platform/FeaturesD3D.h
+++ b/Source/ThirdParty/ANGLE/include/platform/FeaturesD3D.h
@@ -35,9 +35,9 @@
     // We can fix this by optimizing those out of the shader. At the same time, we can
     // work around a bug on some nVidia drivers that they ignore "null" render targets
     // in D3D11, by compacting the active color attachments list to omit null entries.
-    Feature mrtPerfWorkaround = {
-        "mrt_perf_workaround", FeatureCategory::D3DWorkarounds,
-        "Some NVIDIA D3D11 drivers have a bug where they ignore null render targets", &members};
+    Feature mrtPerfWorkaround = {"mrt_perf_workaround", FeatureCategory::D3DWorkarounds,
+                                 "Some drivers have a bug where they ignore null render targets",
+                                 &members};
 
     Feature setDataFasterThanImageUpload = {"set_data_faster_than_image_upload",
                                             FeatureCategory::D3DWorkarounds,
@@ -50,9 +50,9 @@
     // application creates a mipmapped texture2D, but sets GL_TEXTURE_MIN_FILTER to GL_NEAREST
     // (i.e disables mipmaps). To work around this, D3D11 FL9_3 has to create two copies of the
     // texture. The textures' level zeros are identical, but only one texture has mips.
-    Feature zeroMaxLodWorkaround = {
-        "zero_max_lod", FeatureCategory::D3DWorkarounds,
-        "D3D11 is missing an option to disable mipmaps on a mipmapped texture", &members};
+    Feature zeroMaxLodWorkaround = {"zero_max_lod", FeatureCategory::D3DWorkarounds,
+                                    "Missing an option to disable mipmaps on a mipmapped texture",
+                                    &members};
 
     // Some renderers do not support Geometry Shaders so the Geometry Shader-based PointSprite
     // emulation will not work. To work around this, D3D11 FL9_3 has to use a different pointsprite
@@ -68,8 +68,8 @@
     // (See: http://anglebug.com/1452)
     Feature depthStencilBlitExtraCopy = {
         "depth_stencil_blit_extra_copy", FeatureCategory::D3DWorkarounds,
-        "Bug in NVIDIA D3D11 Driver version <=347.88 and >368.81 triggers a TDR when using "
-        "CopySubresourceRegion from a staging texture to a depth/stencil",
+        "Bug in some drivers triggers a TDR when using CopySubresourceRegion from a staging "
+        "texture to a depth/stencil",
         &members, "http://anglebug.com/1452"};
 
     // The HLSL optimizer has a bug with optimizing "pow" in certain integer-valued expressions.
@@ -84,7 +84,7 @@
     // feedback is used to repeatedly write to the same buffer positions.
     Feature flushAfterEndingTransformFeedback = {
         "flush_after_ending_transform_feedback", FeatureCategory::D3DWorkarounds,
-        "NVIDIA drivers sometimes write out-of-order results to StreamOut buffers when transform "
+        "Some drivers sometimes write out-of-order results to StreamOut buffers when transform "
         "feedback is used to repeatedly write to the same buffer positions",
         &members};
 
@@ -92,7 +92,7 @@
     // of the HLSL GetDimensions builtin.
     Feature getDimensionsIgnoresBaseLevel = {
         "get_dimensions_ignores_base_level", FeatureCategory::D3DWorkarounds,
-        "Some NVIDIA drivers do not take into account the base level of the "
+        "Some drivers do not take into account the base level of the "
         "texture in the results of the HLSL GetDimensions builtin",
         &members};
 
@@ -104,8 +104,8 @@
     // by adding Offset directly to Location before reading the texture.
     Feature preAddTexelFetchOffsets = {
         "pre_add_texel_fetch_offsets", FeatureCategory::D3DWorkarounds,
-        "On some Intel drivers, HLSL's function texture.Load returns 0 when the parameter Location "
-        "is negative, even if the sum of Offset and Location is in range",
+        "HLSL's function texture.Load returns 0 when the parameter Location is negative, even if "
+        "the sum of Offset and Location is in range",
         &members};
 
     // On some AMD drivers, 1x1 and 2x2 mips of depth/stencil textures aren't sampled correctly.
@@ -113,8 +113,7 @@
     // before we sample.
     Feature emulateTinyStencilTextures = {
         "emulate_tiny_stencil_textures", FeatureCategory::D3DWorkarounds,
-        "On some AMD drivers, 1x1 and 2x2 mips of depth/stencil textures aren't sampled correctly",
-        &members};
+        "1x1 and 2x2 mips of depth/stencil textures aren't sampled correctly", &members};
 
     // In Intel driver, the data with format DXGI_FORMAT_B5G6R5_UNORM will be parsed incorrectly.
     // This workaroud will disable B5G6R5 support when it's Intel driver. By default, it will use
@@ -122,7 +121,7 @@
     // On older AMD drivers, the data in DXGI_FORMAT_B5G6R5_UNORM becomes corrupted for unknown
     // reasons.
     Feature disableB5G6R5Support = {"disable_b5g6r5_support", FeatureCategory::D3DWorkarounds,
-                                    "On Intel and AMD drivers, textures with the format "
+                                    "Textures with the format "
                                     "DXGI_FORMAT_B5G6R5_UNORM have incorrect data",
                                     &members};
 
@@ -131,35 +130,33 @@
     // This driver bug is fixed in 20.19.15.4624.
     Feature rewriteUnaryMinusOperator = {
         "rewrite_unary_minus_operator", FeatureCategory::D3DWorkarounds,
-        "On some Intel drivers, evaluating unary minus operator on integer may "
-        "get wrong answer in vertex shaders",
+        "Evaluating unary minus operator on integer may get wrong answer in vertex shaders",
         &members};
 
     // On some Intel drivers, using isnan() on highp float will get wrong answer. To work around
     // this bug, we use an expression to emulate function isnan().
     // Tracking bug: https://crbug.com/650547
     // This driver bug is fixed in 21.20.16.4542.
-    Feature emulateIsnanFloat = {
-        "emulate_isnan_float", FeatureCategory::D3DWorkarounds,
-        "On some Intel drivers, using isnan() on highp float will get wrong answer", &members,
-        "https://crbug.com/650547"};
+    Feature emulateIsnanFloat = {"emulate_isnan_float", FeatureCategory::D3DWorkarounds,
+                                 "Using isnan() on highp float will get wrong answer", &members,
+                                 "https://crbug.com/650547"};
 
     // On some Intel drivers, using clear() may not take effect. To work around this bug, we call
     // clear() twice on these platforms.
     // Tracking bug: https://crbug.com/655534
     Feature callClearTwice = {"call_clear_twice", FeatureCategory::D3DWorkarounds,
-                              "On some Intel drivers, using clear() may not take effect", &members,
+                              "Using clear() may not take effect", &members,
                               "https://crbug.com/655534"};
 
     // On some Intel drivers, copying from staging storage to constant buffer storage does not
     // seem to work. Work around this by keeping system memory storage as a canonical reference
     // for buffer data.
     // D3D11-only workaround. See http://crbug.com/593024.
-    Feature useSystemMemoryForConstantBuffers = {
-        "use_system_memory_for_constant_buffers", FeatureCategory::D3DWorkarounds,
-        "On some Intel drivers, copying from staging storage to constant buffer "
-        "storage does not work",
-        &members, "https://crbug.com/593024"};
+    Feature useSystemMemoryForConstantBuffers = {"use_system_memory_for_constant_buffers",
+                                                 FeatureCategory::D3DWorkarounds,
+                                                 "Copying from staging storage to constant buffer "
+                                                 "storage does not work",
+                                                 &members, "https://crbug.com/593024"};
 
     // This workaround is for the ANGLE_multiview extension. If enabled the viewport or render
     // target slice will be selected in the geometry shader stage. The workaround flag is added to
@@ -181,8 +178,7 @@
     // So we add a dummy texture as render target in such case. See http://anglebug.com/2152
     Feature addDummyTextureNoRenderTarget = {
         "add_dummy_texture_no_render_target", FeatureCategory::D3DWorkarounds,
-        "On D3D ntel drivers <4815 when rendering with no render target, two "
-        "bugs lead to incorrect behavior",
+        "On some drivers when rendering with no render target, two bugs lead to incorrect behavior",
         &members, "http://anglebug.com/2152"};
 
     // Don't use D3D constant register zero when allocating space for uniforms in the vertex shader.
@@ -190,9 +186,7 @@
     // specific cases the driver would not handle constant register zero correctly.
     Feature skipVSConstantRegisterZero = {
         "skip_vs_constant_register_zero", FeatureCategory::D3DWorkarounds,
-        "On NVIDIA D3D driver v388.59 in specific cases the driver doesn't "
-        "handle constant register zero correctly",
-        &members};
+        "In specific cases the driver doesn't handle constant register zero correctly", &members};
 
     // Forces the value returned from an atomic operations to be always be resolved. This is
     // targeted to workaround a bug in NVIDIA D3D driver where the return value from
@@ -201,8 +195,8 @@
     // http://anglebug.com/3246
     Feature forceAtomicValueResolution = {
         "force_atomic_value_resolution", FeatureCategory::D3DWorkarounds,
-        "On an NVIDIA D3D driver, the return value from RWByteAddressBuffer.InterlockedAdd does "
-        "not resolve when used in the .yzw components of a RWByteAddressBuffer.Store operation",
+        "On some drivers the return value from RWByteAddressBuffer.InterlockedAdd does not resolve "
+        "when used in the .yzw components of a RWByteAddressBuffer.Store operation",
         &members, "http://anglebug.com/3246"};
 
     // Match chromium's robust resource init behaviour by always prefering to upload texture data
diff --git a/Source/ThirdParty/ANGLE/include/platform/FeaturesGL.h b/Source/ThirdParty/ANGLE/include/platform/FeaturesGL.h
index 1f320a2..caf5ef8 100644
--- a/Source/ThirdParty/ANGLE/include/platform/FeaturesGL.h
+++ b/Source/ThirdParty/ANGLE/include/platform/FeaturesGL.h
@@ -23,19 +23,19 @@
     // one of the two closest normalized integer representations (although round to nearest is
     // preferred) (see section 2.3.5.2 of the GL 4.5 core specification). OpenGL ES requires that
     // round-to-nearest is used (see "Conversion from Floating-Point to Framebuffer Fixed-Point" in
-    // section 2.1.2 of the OpenGL ES 2.0.25 spec).  This issue only shows up on Intel and AMD
-    // drivers on framebuffer formats that have 1-bit alpha, work around this by using higher
-    // precision formats instead.
-    Feature avoid1BitAlphaTextureFormats = {
-        "avoid_1_bit_alpha_texture_formats", FeatureCategory::OpenGLWorkarounds,
-        "Issue on Intel and AMD drivers with 1-bit alpha framebuffer formats", &members};
+    // section 2.1.2 of the OpenGL ES 2.0.25 spec).  This issue only shows up on AMD drivers on
+    // framebuffer formats that have 1-bit alpha, work around this by using higher precision formats
+    // instead.
+    Feature avoid1BitAlphaTextureFormats = {"avoid_1_bit_alpha_texture_formats",
+                                            FeatureCategory::OpenGLWorkarounds,
+                                            "Issue with 1-bit alpha framebuffer formats", &members};
 
     // On some older Intel drivers, GL_RGBA4 is not color renderable, glCheckFramebufferStatus
     // returns GL_FRAMEBUFFER_UNSUPPORTED. Work around this by using a known color-renderable
     // format.
-    Feature rgba4IsNotSupportedForColorRendering = {
-        "rgba4_is_not_supported_for_color_rendering", FeatureCategory::OpenGLWorkarounds,
-        "Issue on older Intel drivers, GL_RGBA4 is not color renderable", &members};
+    Feature rgba4IsNotSupportedForColorRendering = {"rgba4_is_not_supported_for_color_rendering",
+                                                    FeatureCategory::OpenGLWorkarounds,
+                                                    "GL_RGBA4 is not color renderable", &members};
 
     // When clearing a framebuffer on Intel or AMD drivers, when GL_FRAMEBUFFER_SRGB is enabled, the
     // driver clears to the linearized clear color despite the framebuffer not supporting SRGB
@@ -43,8 +43,7 @@
     // attachments appear to get the correct clear color.
     Feature doesSRGBClearsOnLinearFramebufferAttachments = {
         "does_srgb_clears_on_linear_framebuffer_attachments", FeatureCategory::OpenGLWorkarounds,
-        "Issue clearing framebuffers with linear attachments on Intel or AMD "
-        "drivers when GL_FRAMEBUFFER_SRGB is enabled",
+        "Issue clearing framebuffers with linear attachments when GL_FRAMEBUFFER_SRGB is enabled",
         &members};
 
     // On Mac some GLSL constructs involving do-while loops cause GPU hangs, such as the following:
@@ -56,23 +55,21 @@
     // Work around this by rewriting the do-while to use another GLSL construct (block + while)
     Feature doWhileGLSLCausesGPUHang = {
         "do_while_glsl_causes_gpu_hang", FeatureCategory::OpenGLWorkarounds,
-        "On Mac, some GLSL constructs involving do-while loops cause GPU hangs", &members};
+        "Some GLSL constructs involving do-while loops cause GPU hangs", &members};
 
     // On Mac AMD GPU gl_VertexID in GLSL vertex shader doesn't include base vertex value,
     // Work aronud this by replace gl_VertexID with (gl_VertexID - angle_BaseVertex) when
     // angle_BaseVertex is present.
     Feature addBaseVertexToVertexID = {
         "vertex_id_does_not_include_base_vertex", FeatureCategory::OpenGLWorkarounds,
-        "On Mac AMD GPU gl_VertexID in GLSL vertex shader doesn't include base vertex value",
-        &members};
+        "gl_VertexID in GLSL vertex shader doesn't include base vertex value", &members};
 
     // Calling glFinish doesn't cause all queries to report that the result is available on some
     // (NVIDIA) drivers.  It was found that enabling GL_DEBUG_OUTPUT_SYNCHRONOUS before the finish
     // causes it to fully finish.
     Feature finishDoesNotCauseQueriesToBeAvailable = {
         "finish_does_not_cause_queries_to_be_available", FeatureCategory::OpenGLWorkarounds,
-        "On some NVIDIA drivers, glFinish doesn't cause all queries to report available result",
-        &members};
+        "glFinish doesn't cause all queries to report available result", &members};
 
     // Always call useProgram after a successful link to avoid a driver bug.
     // This workaround is meant to reproduce the use_current_program_after_successful_link
@@ -80,21 +77,24 @@
     // not necessary for MacOSX 10.9 and higher (http://crrev.com/39eb535b).
     Feature alwaysCallUseProgramAfterLink = {
         "always_call_use_program_after_link", FeatureCategory::OpenGLWorkarounds,
-        "Always call useProgram after a successful link to avoid a driver bug", &members};
+        "Always call useProgram after a successful link to avoid a driver bug", &members,
+        "http://crbug.com/110263"};
 
-    // In the case of unpacking from a pixel unpack buffer, unpack overlapping rows row by row.
+    // On NVIDIA, in the case of unpacking from a pixel unpack buffer, unpack overlapping rows row
+    // by row.
     Feature unpackOverlappingRowsSeparatelyUnpackBuffer = {
         "unpack_overlapping_rows_separately_unpack_buffer", FeatureCategory::OpenGLWorkarounds,
         "In the case of unpacking from a pixel unpack buffer, unpack overlapping rows row by row",
         &members};
 
-    // In the case of packing to a pixel pack buffer, pack overlapping rows row by row.
+    // On NVIDIA, in the case of packing to a pixel pack buffer, pack overlapping rows row by row.
     Feature packOverlappingRowsSeparatelyPackBuffer = {
         "pack_overlapping_rows_separately_pack_buffer", FeatureCategory::OpenGLWorkarounds,
         "In the case of packing to a pixel pack buffer, pack overlapping rows row by row",
         &members};
 
-    // During initialization, assign the current vertex attributes to the spec-mandated defaults.
+    // On NVIDIA, during initialization, assign the current vertex attributes to the spec-mandated
+    // defaults.
     Feature initializeCurrentVertexAttributes = {
         "initialize_current_vertex_attributes", FeatureCategory::OpenGLWorkarounds,
         "During initialization, assign the current vertex attributes to the spec-mandated defaults",
@@ -102,15 +102,15 @@
 
     // abs(i) where i is an integer returns unexpected result on Intel Mac.
     // Emulate abs(i) with i * sign(i).
-    Feature emulateAbsIntFunction = {
-        "emulate_abs_int_function", FeatureCategory::OpenGLWorkarounds,
-        "On Intel Mac, abs(i) where i is an integer returns unexpected result", &members};
+    Feature emulateAbsIntFunction = {"emulate_abs_int_function", FeatureCategory::OpenGLWorkarounds,
+                                     "abs(i) where i is an integer returns unexpected result",
+                                     &members};
 
     // On Intel Mac, calculation of loop conditions in for and while loop has bug.
     // Add "&& true" to the end of the condition expression to work around the bug.
     Feature addAndTrueToLoopCondition = {
         "add_and_true_to_loop_condition", FeatureCategory::OpenGLWorkarounds,
-        "On Intel Mac, calculation of loop conditions in for and while loop has bug", &members};
+        "Calculation of loop conditions in for and while loop has bug", &members};
 
     // When uploading textures from an unpack buffer, some drivers count an extra row padding when
     // checking if the pixel unpack buffer is big enough. Tracking bug: http://anglebug.com/1512
@@ -127,20 +127,20 @@
     Feature unpackLastRowSeparatelyForPaddingInclusion = {
         "unpack_last_row_separately_for_padding_inclusion", FeatureCategory::OpenGLWorkarounds,
         "When uploading textures from an unpack buffer, some drivers count an extra row padding",
-        &members};
+        &members, "http://anglebug.com/1512"};
 
     // Equivalent workaround when uploading data from a pixel pack buffer.
     Feature packLastRowSeparatelyForPaddingInclusion = {
         "pack_last_row_separately_for_padding_inclusion", FeatureCategory::OpenGLWorkarounds,
         "When uploading textures from an pack buffer, some drivers count an extra row padding",
-        &members};
+        &members, "http://anglebug.com/1512"};
 
     // On some Intel drivers, using isnan() on highp float will get wrong answer. To work around
     // this bug, we use an expression to emulate function isnan().
     // Tracking bug: http://crbug.com/650547
-    Feature emulateIsnanFloat = {
-        "emulate_isnan_float", FeatureCategory::OpenGLWorkarounds,
-        "On some Intel drivers, using isnan() on highp float will get wrong answer", &members};
+    Feature emulateIsnanFloat = {"emulate_isnan_float", FeatureCategory::OpenGLWorkarounds,
+                                 "Using isnan() on highp float will get wrong answer", &members,
+                                 "http://crbug.com/650547"};
 
     // On Mac with OpenGL version 4.1, unused std140 or shared uniform blocks will be
     // treated as inactive which is not consistent with WebGL2.0 spec. Reference all members in a
@@ -148,9 +148,7 @@
     // Also used on Linux AMD.
     Feature useUnusedBlocksWithStandardOrSharedLayout = {
         "use_unused_blocks_with_standard_or_shared_layout", FeatureCategory::OpenGLWorkarounds,
-        "On Mac with OpenGL version 4.1 and Linux AMD, unused std140 or shared uniform blocks "
-        "will be treated as inactive",
-        &members};
+        "Unused std140 or shared uniform blocks will be treated as inactive", &members};
 
     // This flag is used to fix spec difference between GLSL 4.1 or lower and ESSL3.
     Feature removeInvariantAndCentroidForESSL3 = {
@@ -162,14 +160,13 @@
     // Tracking bug: http://crbug.com/308366
     Feature rewriteFloatUnaryMinusOperator = {
         "rewrite_float_unary_minus_operator", FeatureCategory::OpenGLWorkarounds,
-        "On Intel Mac OSX 10.11 driver, using '-<float>' will get wrong answer", &members,
-        "http://crbug.com/308366"};
+        "Using '-<float>' will get wrong answer", &members, "http://crbug.com/308366"};
 
     // On NVIDIA drivers, atan(y, x) may return a wrong answer.
     // Tracking bug: http://crbug.com/672380
     Feature emulateAtan2Float = {"emulate_atan_2_float", FeatureCategory::OpenGLWorkarounds,
-                                 "On NVIDIA drivers, atan(y, x) may return a wrong answer",
-                                 &members, "http://crbug.com/672380"};
+                                 "atan(y, x) may return a wrong answer", &members,
+                                 "http://crbug.com/672380"};
 
     // Some drivers seem to forget about UBO bindings when using program binaries. Work around
     // this by re-applying the bindings after the program binary is loaded or saved.
@@ -177,98 +174,92 @@
     // http://anglebug.com/1637
     Feature reapplyUBOBindingsAfterUsingBinaryProgram = {
         "reapply_ubo_bindings_after_using_binary_program", FeatureCategory::OpenGLWorkarounds,
-        "Some AMD OpenGL drivers and Android devices forget about UBO bindings "
-        "when using program binaries",
-        &members, "http://anglebug.com/1637"};
+        "Some drivers forget about UBO bindings when using program binaries", &members,
+        "http://anglebug.com/1637"};
 
-    // Some OpenGL drivers return 0 when we query MAX_VERTEX_ATTRIB_STRIDE in an OpenGL 4.4 or
+    // Some Linux OpenGL drivers return 0 when we query MAX_VERTEX_ATTRIB_STRIDE in an OpenGL 4.4 or
     // higher context.
     // This only seems to affect AMD OpenGL drivers.
     // Tracking bug: http://anglebug.com/1936
     Feature emulateMaxVertexAttribStride = {
         "emulate_max_vertex_attrib_stride", FeatureCategory::OpenGLWorkarounds,
-        "Some AMD OpenGL >= 4.4 drivers return 0 when MAX_VERTEX_ATTRIB_STRIED queried", &members,
+        "Some drivers return 0 when MAX_VERTEX_ATTRIB_STRIED queried", &members,
         "http://anglebug.com/1936"};
 
-    // Initializing uninitialized locals caused odd behavior on Mac in a few WebGL 2 tests.
-    // Tracking bug: http://anglebug/2041
+    // Initializing uninitialized locals caused odd behavior on Android Qualcomm in a few WebGL 2
+    // tests. Tracking bug: http://anglebug.com/2046
     Feature dontInitializeUninitializedLocals = {
         "dont_initialize_uninitialized_locals", FeatureCategory::OpenGLWorkarounds,
-        "On Mac initializing uninitialized locals caused odd behavior in a few WebGL 2 tests",
-        &members, "http://anglebug.com/2041"};
+        "Initializing uninitialized locals caused odd behavior in a few WebGL 2 tests", &members,
+        "http://anglebug.com/2046"};
 
     // On some NVIDIA drivers the point size range reported from the API is inconsistent with the
     // actual behavior. Clamp the point size to the value from the API to fix this.
     Feature clampPointSize = {
         "clamp_point_size", FeatureCategory::OpenGLWorkarounds,
-        "On some NVIDIA drivers the point size range reported from the API is "
-        "inconsistent with the actual behavior",
+        "The point size range reported from the API is inconsistent with the actual behavior",
         &members};
 
     // On some NVIDIA drivers certain types of GLSL arithmetic ops mixing vectors and scalars may be
     // executed incorrectly. Change them in the shader translator. Tracking bug:
     // http://crbug.com/772651
-    Feature rewriteVectorScalarArithmetic = {
-        "rewrite_vector_scalar_arithmetic", FeatureCategory::OpenGLWorkarounds,
-        "On some NVIDIA drivers certain types of GLSL arithmetic ops mixing "
-        "vectors and scalars may be executed incorrectly",
-        &members, "http://crbug.com/772651"};
+    Feature rewriteVectorScalarArithmetic = {"rewrite_vector_scalar_arithmetic",
+                                             FeatureCategory::OpenGLWorkarounds,
+                                             "Certain types of GLSL arithmetic ops mixing vectors "
+                                             "and scalars may be executed incorrectly",
+                                             &members, "http://crbug.com/772651"};
 
     // On some Android devices for loops used to initialize variables hit native GLSL compiler bugs.
     Feature dontUseLoopsToInitializeVariables = {
         "dont_use_loops_to_initialize_variables", FeatureCategory::OpenGLWorkarounds,
-        "On some Android devices for loops used to initialize variables hit "
-        "native GLSL compiler bugs",
-        &members};
+        "For loops used to initialize variables hit native GLSL compiler bugs", &members};
 
     // On some NVIDIA drivers gl_FragDepth is not clamped correctly when rendering to a floating
     // point depth buffer. Clamp it in the translated shader to fix this.
-    Feature clampFragDepth = {"clamp_frag_depth", FeatureCategory::OpenGLWorkarounds,
-                              "On some NVIDIA drivers gl_FragDepth is not clamped correctly when "
-                              "rendering to a floating point depth buffer",
-                              &members};
+    Feature clampFragDepth = {
+        "clamp_frag_depth", FeatureCategory::OpenGLWorkarounds,
+        "gl_FragDepth is not clamped correctly when rendering to a floating point depth buffer",
+        &members};
 
     // On some NVIDIA drivers before version 397.31 repeated assignment to swizzled values inside a
     // GLSL user-defined function have incorrect results. Rewrite this type of statements to fix
     // this.
-    Feature rewriteRepeatedAssignToSwizzled = {
-        "rewrite_repeated_assign_to_swizzled", FeatureCategory::OpenGLWorkarounds,
-        "On some NVIDIA drivers < v397.31, repeated assignment to swizzled "
-        "values inside a GLSL user-defined function have incorrect results",
-        &members};
+    Feature rewriteRepeatedAssignToSwizzled = {"rewrite_repeated_assign_to_swizzled",
+                                               FeatureCategory::OpenGLWorkarounds,
+                                               "Repeated assignment to swizzled values inside a "
+                                               "GLSL user-defined function have incorrect results",
+                                               &members};
+
     // On some AMD and Intel GL drivers ARB_blend_func_extended does not pass the tests.
     // It might be possible to work around the Intel bug by rewriting *FragData to *FragColor
     // instead of disabling the functionality entirely. The AMD bug looked like incorrect blending,
     // not sure if a workaround is feasible. http://anglebug.com/1085
     Feature disableBlendFuncExtended = {
         "disable_blend_func_extended", FeatureCategory::OpenGLWorkarounds,
-        "On some AMD and Intel GL drivers ARB_blend_func_extended does not pass the tests",
-        &members, "http://anglebug.com/1085"};
+        "ARB_blend_func_extended does not pass the tests", &members, "http://anglebug.com/1085"};
 
     // Qualcomm drivers returns raw sRGB values instead of linearized values when calling
     // glReadPixels on unsized sRGB texture formats. http://crbug.com/550292 and
     // http://crbug.com/565179
     Feature unsizedsRGBReadPixelsDoesntTransform = {
         "unsized_srgb_read_pixels_doesnt_transform", FeatureCategory::OpenGLWorkarounds,
-        "Qualcomm drivers returns raw sRGB values instead of linearized values "
-        "when calling glReadPixels on unsized sRGB texture formats",
+        "Drivers returning raw sRGB values instead of linearized values when calling glReadPixels "
+        "on unsized sRGB texture formats",
         &members, "http://crbug.com/565179"};
 
     // Older Qualcomm drivers generate errors when querying the number of bits in timer queries, ex:
     // GetQueryivEXT(GL_TIME_ELAPSED, GL_QUERY_COUNTER_BITS).  http://anglebug.com/3027
     Feature queryCounterBitsGeneratesErrors = {
         "query_counter_bits_generates_errors", FeatureCategory::OpenGLWorkarounds,
-        "Older Qualcomm drivers generate errors when querying the number of bits in timer queries",
-        &members, "http://anglebug.com/3027"};
+        "Drivers generate errors when querying the number of bits in timer queries", &members,
+        "http://anglebug.com/3027"};
 
     // Re-linking a program in parallel is buggy on some Intel Windows OpenGL drivers and Android
     // platforms.
     // http://anglebug.com/3045
     Feature dontRelinkProgramsInParallel = {
         "dont_relink_programs_in_parallel", FeatureCategory::OpenGLWorkarounds,
-        "On some Intel Windows OpenGL drivers and Android, relinking a program "
-        "in parallel is buggy",
-        &members, "http://anglebug.com/3045"};
+        "Relinking a program in parallel is buggy", &members, "http://anglebug.com/3045"};
 
     // Some tests have been seen to fail using worker contexts, this switch allows worker contexts
     // to be disabled for some platforms. http://crbug.com/849576
@@ -282,15 +273,15 @@
     Feature limitMaxTextureSizeTo4096 = {"max_texture_size_limit_4096",
                                          FeatureCategory::OpenGLWorkarounds,
                                          "Limit max texture size to 4096 to avoid frequent "
-                                         "out-of-memory errors on Android or Intel Linux",
+                                         "out-of-memory errors",
                                          &members, "http://crbug.com/927470"};
 
     // Prevent excessive MSAA allocations on Android devices, various rendering bugs have been
     // observed and they tend to be high DPI anyways. http://crbug.com/797243
     Feature limitMaxMSAASamplesTo4 = {
         "max_msaa_sample_count_4", FeatureCategory::OpenGLWorkarounds,
-        "Various rendering bugs have been observed when using higher MSAA counts on Android",
-        &members, "http://crbug.com/797243"};
+        "Various rendering bugs have been observed when using higher MSAA counts", &members,
+        "http://crbug.com/797243"};
 
     // Prefer to do the robust resource init clear using a glClear. Calls to TexSubImage2D on large
     // textures can take hundreds of milliseconds because of slow uploads on macOS. Do this only on
@@ -328,8 +319,7 @@
     // this by capping the max texture size.
     Feature limitMax3dArrayTextureSizeTo1024 = {
         "max_3d_array_texture_size_1024", FeatureCategory::OpenGLWorkarounds,
-        "Limit max 3d texture size and max array texture layers to 1024 to avoid system hang on "
-        "older Intel Linux",
+        "Limit max 3d texture size and max array texture layers to 1024 to avoid system hang",
         &members, "http://crbug.com/927470"};
 
     // BlitFramebuffer has issues on some platforms with large source/dest texture sizes. This
@@ -344,7 +334,7 @@
     // This workaround clips the source region and adjust the dest region proportionally.
     Feature clipSrcRegionBlitFramebuffer = {
         "clip_src_region_for_blitframebuffer", FeatureCategory::OpenGLWorkarounds,
-        "Mac has issues with blitFramebuffer when the parameters don't match the framebuffer size.",
+        "Issues with blitFramebuffer when the parameters don't match the framebuffer size.",
         &members, "http://crbug.com/830046"};
 
     // Calling glTexImage2D with zero size generates GL errors
@@ -352,6 +342,19 @@
         "reset_texture_generates_errors", FeatureCategory::OpenGLWorkarounds,
         "Calling glTexImage2D with zero size generates errors.", &members,
         "http://anglebug.com/3859"};
+
+    // Mac Intel samples transparent black from GL_COMPRESSED_RGB_S3TC_DXT1_EXT
+    Feature rgbDXT1TexturesSampleZeroAlpha = {
+        "rgb_dxt1_textures_sample_zero_alpha", FeatureCategory::OpenGLWorkarounds,
+        "Sampling BLACK texels from RGB DXT1 textures returns transparent black on Mac.", &members,
+        "http://anglebug.com/3729"};
+
+    // Mac incorrectly executes both sides of && and || expressions when they should short-circuit.
+    Feature unfoldShortCircuits = {
+        "unfold_short_circuits", FeatureCategory::OpenGLWorkarounds,
+        "Mac incorrectly executes both sides of && and || expressions when they should "
+        "short-circuit.",
+        &members, "http://anglebug.com/482"};
 };
 
 inline FeaturesGL::FeaturesGL()  = default;
diff --git a/Source/ThirdParty/ANGLE/include/platform/FeaturesVk.h b/Source/ThirdParty/ANGLE/include/platform/FeaturesVk.h
index 614a86f..80c4f41 100644
--- a/Source/ThirdParty/ANGLE/include/platform/FeaturesVk.h
+++ b/Source/ThirdParty/ANGLE/include/platform/FeaturesVk.h
@@ -49,8 +49,7 @@
     // to have a bug where the last region is ignored.
     Feature extraCopyBufferRegion = {
         "extra_copy_buffer_region", FeatureCategory::VulkanWorkarounds,
-        "Windows Intel driver seems to have a bug where the last copy region in "
-        "vkCmdCopyBuffer is ignored",
+        "Some drivers seem to have a bug where the last copy region in vkCmdCopyBuffer is ignored",
         &members};
 
     // This flag is added for the sole purpose of end2end tests, to test the correctness
@@ -64,8 +63,7 @@
     // Tracked in http://anglebug.com/2970.
     Feature clampPointSize = {
         "clamp_point_size", FeatureCategory::VulkanWorkarounds,
-        "On some NVIDIA drivers, the point size range reported from the API is "
-        "inconsistent with the actual behavior",
+        "The point size range reported from the API is inconsistent with the actual behavior",
         &members, "http://anglebug.com/2970"};
 
     // On some android devices, the memory barrier between the compute shader that converts vertex
@@ -73,8 +71,8 @@
     // to perform a flush after the conversion.  http://anglebug.com/3016
     Feature flushAfterVertexConversion = {
         "flush_after_vertex_conversion", FeatureCategory::VulkanWorkarounds,
-        "On some android devices, the memory barrier between the compute shader that converts "
-        "vertex attributes and the vertex shader that reads from it is ineffective",
+        "The memory barrier between the compute shader that converts vertex attributes and the "
+        "vertex shader that reads from it is ineffective",
         &members, "http://anglebug.com/3016"};
 
     // Whether the VkDevice supports the VK_KHR_incremental_present extension, on which the
@@ -88,8 +86,7 @@
     // textures.
     Feature forceCPUPathForCubeMapCopy = {
         "force_cpu_path_for_cube_map_copy", FeatureCategory::VulkanWorkarounds,
-        "Some Intel Windows drivers have an issue with creating single-layer "
-        "views on cube map textures",
+        "Some drivers have an issue with creating single-layer views on cube map textures",
         &members};
 
     // Whether the VkDevice supports the VK_ANDROID_external_memory_android_hardware_buffer
@@ -128,15 +125,13 @@
     // VK_PRESENT_MODE_FIFO_KHR causes random timeouts on Linux Intel. http://anglebug.com/3153
     Feature disableFifoPresentMode = {
         "disable_fifo_present_mode", FeatureCategory::VulkanWorkarounds,
-        "On Linux Intel, VK_PRESENT_MODE_FIFO_KHR causes random timeouts", &members,
-        "http://anglebug.com/3153"};
+        "VK_PRESENT_MODE_FIFO_KHR causes random timeouts", &members, "http://anglebug.com/3153"};
 
     // On Qualcomm, a bug is preventing us from using loadOp=Clear with inline commands in the
     // render pass.  http://anglebug.com/2361
     Feature restartRenderPassAfterLoadOpClear = {
         "restart_render_pass_after_load_op_clear", FeatureCategory::VulkanWorkarounds,
-        "On Qualcomm, a bug is preventing us from using loadOp=Clear with inline "
-        "commands in the render pass",
+        "A bug is preventing us from using loadOp=Clear with inline commands in the render pass",
         &members, "http://anglebug.com/2361"};
 
     // On Qualcomm, gaps in bound descriptor set indices causes the post-gap sets to misbehave.
@@ -145,35 +140,34 @@
     // unused descriptor set to work around this issue.  http://anglebug.com/2727
     Feature bindEmptyForUnusedDescriptorSets = {
         "bind_empty_for_unused_descriptor_sets", FeatureCategory::VulkanWorkarounds,
-        "On Qualcomm, gaps in bound descriptor set indices causes the post-gap sets to misbehave",
-        &members, "http://anglebug.com/2727"};
+        "Gaps in bound descriptor set indices causes the post-gap sets to misbehave", &members,
+        "http://anglebug.com/2727"};
 
     // When the scissor is (0,0,0,0) on Windows Intel, the driver acts as if the scissor was
     // disabled.  Work-around this by setting the scissor to just outside of the render area
     // (e.g. (renderArea.x, renderArea.y, 1, 1)). http://anglebug.com/3407
     Feature forceNonZeroScissor = {
         "force_non_zero_scissor", FeatureCategory::VulkanWorkarounds,
-        "On Windows Intel, when the scissor is (0,0,0,0), the driver acts as if the "
-        "scissor was disabled",
-        &members, "http://anglebug.com/3407"};
+        "When the scissor is (0,0,0,0), the driver acts as if the scissor was disabled", &members,
+        "http://anglebug.com/3407"};
 
     // OES_depth_texture is a commonly expected feature on Android. However it
     // requires that D16_UNORM support texture filtering
     // (e.g. VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT) and some devices
     // do not. Work-around this by setting saying D16_UNORM supports filtering
     // anyway.
-    Feature forceD16TexFilter = {"force_D16_texture_filter", FeatureCategory::VulkanWorkarounds,
-                                 "On some Android devices, VK_FORMAT_D16_UNORM does not support "
-                                 "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, "
-                                 "which prevents OES_depth_texture from being supported.",
-                                 &members, "http://anglebug.com/3452"};
+    Feature forceD16TexFilter = {
+        "force_D16_texture_filter", FeatureCategory::VulkanWorkarounds,
+        "VK_FORMAT_D16_UNORM does not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, "
+        "which prevents OES_depth_texture from being supported.",
+        &members, "http://anglebug.com/3452"};
 
     // On some android devices, vkCmdBlitImage with flipped coordinates blits incorrectly.  This
     // workaround makes sure this path is avoided.  http://anglebug.com/3498
     Feature disableFlippingBlitWithCommand = {
         "disable_flipping_blit_with_command", FeatureCategory::VulkanWorkarounds,
-        "On some android devices, vkCmdBlitImage with flipped coordinates blits incorrectly.",
-        &members, "http://anglebug.com/3498"};
+        "vkCmdBlitImage with flipped coordinates blits incorrectly.", &members,
+        "http://anglebug.com/3498"};
 
     // On platform with Intel or AMD GPU, a window resizing would not trigger the vulkan driver to
     // return VK_ERROR_OUT_OF_DATE on swapchain present.  Work-around by query current window extent
@@ -181,9 +175,8 @@
     // http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625
     Feature perFrameWindowSizeQuery = {
         "per_frame_window_size_query", FeatureCategory::VulkanWorkarounds,
-        "On platform with Intel or AMD gpu, vulkan swapchain is not returning VK_ERROR_OUT_OF_DATE"
-        "when window resizing",
-        &members, "http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625"};
+        "Vulkan swapchain is not returning VK_ERROR_OUT_OF_DATE when window resizing", &members,
+        "http://anglebug.com/3623, http://anglebug.com/3624, http://anglebug.com/3625"};
 
     // On Pixel1XL and Pixel2, reset a vkCommandBuffer seems to have side effects on binding
     // descriptor sets to it afterwards, Work-around by keep using transient vkCommandBuffer on
@@ -191,22 +184,22 @@
     // http://b/135763283
     Feature transientCommandBuffer = {
         "transient_command_buffer", FeatureCategory::VulkanWorkarounds,
-        "On Pixel2, keep using transient vkCommandBuffer to work around driver issue in reseting"
+        "Keep using transient vkCommandBuffer to work around driver issue in reseting"
         "vkCommandBuffer",
         &members, "http://b/135763283"};
 
     // Seamful cube map emulation misbehaves on the AMD windows driver, so it's disallowed.
     Feature disallowSeamfulCubeMapEmulation = {
         "disallow_seamful_cube_map_emulation", FeatureCategory::VulkanWorkarounds,
-        "Seamful cube map emulation misbehaves on the AMD windows driver, so it's disallowed",
-        &members, "http://anglebug.com/3243"};
+        "Seamful cube map emulation misbehaves on some drivers, so it's disallowed", &members,
+        "http://anglebug.com/3243"};
 
     // Qualcomm shader compiler doesn't support sampler arrays as parameters, so
     // revert to old RewriteStructSamplers behavior, which produces fewer.
     Feature forceOldRewriteStructSamplers = {
         "force_old_rewrite_struct_samplers", FeatureCategory::VulkanWorkarounds,
-        "Qualcomm shader compiler doesn't support sampler arrays as parameters, so "
-        "revert to old RewriteStructSamplers behavior, which produces fewer.",
+        "Some shader compilers don't support sampler arrays as parameters, so revert to old "
+        "RewriteStructSamplers behavior, which produces fewer.",
         &members, "http://anglebug.com/2703"};
 };
 
diff --git a/Source/ThirdParty/ANGLE/include/platform/FrontendFeatures.h b/Source/ThirdParty/ANGLE/include/platform/FrontendFeatures.h
index 4b40e85..7add7dd 100644
--- a/Source/ThirdParty/ANGLE/include/platform/FrontendFeatures.h
+++ b/Source/ThirdParty/ANGLE/include/platform/FrontendFeatures.h
@@ -34,14 +34,14 @@
     angle::Feature disableProgramCachingForTransformFeedback = {
         "disable_program_caching_for_transform_feedback",
         angle::FeatureCategory::FrontendWorkarounds,
-        "On Qualcomm GPUs, program binaries don't contain transform feedback varyings", &members};
+        "On some GPUs, program binaries don't contain transform feedback varyings", &members};
 
     // On Windows Intel OpenGL drivers TexImage sometimes seems to interact with the Framebuffer.
     // Flaky crashes can occur unless we sync the Framebuffer bindings. The workaround is to add
     // Framebuffer binding dirty bits to TexImage updates. See http://anglebug.com/2906
     angle::Feature syncFramebufferBindingsOnTexImage = {
         "sync_framebuffer_bindings_on_tex_image", angle::FeatureCategory::FrontendWorkarounds,
-        "On Windows Intel OpenGL drivers TexImage sometimes seems to interact "
+        "On some drivers TexImage sometimes seems to interact "
         "with the Framebuffer",
         &members};
 
diff --git a/Source/ThirdParty/ANGLE/samples/WindowTest/WindowTest.cpp b/Source/ThirdParty/ANGLE/samples/WindowTest/WindowTest.cpp
index f7baedd..45d7735 100644
--- a/Source/ThirdParty/ANGLE/samples/WindowTest/WindowTest.cpp
+++ b/Source/ThirdParty/ANGLE/samples/WindowTest/WindowTest.cpp
@@ -10,7 +10,7 @@
 #include <iostream>
 
 #include "util/OSWindow.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 int main(int argc, char *argv[])
 {
diff --git a/Source/ThirdParty/ANGLE/samples/gles1/DrawTexture.cpp b/Source/ThirdParty/ANGLE/samples/gles1/DrawTexture.cpp
index aa062b6..492fb62 100644
--- a/Source/ThirdParty/ANGLE/samples/gles1/DrawTexture.cpp
+++ b/Source/ThirdParty/ANGLE/samples/gles1/DrawTexture.cpp
@@ -16,7 +16,7 @@
 #include "SampleApplication.h"
 #include "texture_utils.h"
 #include "util/shader_utils.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 #include <GLES/gl.h>
 #include <GLES/glext.h>
diff --git a/Source/ThirdParty/ANGLE/samples/multi_texture/MultiTexture.cpp b/Source/ThirdParty/ANGLE/samples/multi_texture/MultiTexture.cpp
index dc0e527..49ac9f3 100644
--- a/Source/ThirdParty/ANGLE/samples/multi_texture/MultiTexture.cpp
+++ b/Source/ThirdParty/ANGLE/samples/multi_texture/MultiTexture.cpp
@@ -17,7 +17,7 @@
 
 #include "tga_utils.h"
 #include "util/shader_utils.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 class MultiTextureSample : public SampleApplication
 {
diff --git a/Source/ThirdParty/ANGLE/samples/multiple_draw_buffers/MultipleDrawBuffers.cpp b/Source/ThirdParty/ANGLE/samples/multiple_draw_buffers/MultipleDrawBuffers.cpp
index 9a95a7d..c1231c3 100644
--- a/Source/ThirdParty/ANGLE/samples/multiple_draw_buffers/MultipleDrawBuffers.cpp
+++ b/Source/ThirdParty/ANGLE/samples/multiple_draw_buffers/MultipleDrawBuffers.cpp
@@ -17,7 +17,7 @@
 
 #include "texture_utils.h"
 #include "util/shader_utils.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 #include <cstring>
 #include <iostream>
diff --git a/Source/ThirdParty/ANGLE/samples/particle_system/ParticleSystem.cpp b/Source/ThirdParty/ANGLE/samples/particle_system/ParticleSystem.cpp
index a1a59d1..87c17d0 100644
--- a/Source/ThirdParty/ANGLE/samples/particle_system/ParticleSystem.cpp
+++ b/Source/ThirdParty/ANGLE/samples/particle_system/ParticleSystem.cpp
@@ -19,11 +19,12 @@
 #include "tga_utils.h"
 #include "util/random_utils.h"
 #include "util/shader_utils.h"
-#include "util/system_utils.h"
 
 #define _USE_MATH_DEFINES
 #include <math.h>
 
+#include <string>
+
 using namespace angle;
 
 class ParticleSystemSample : public SampleApplication
diff --git a/Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.cpp b/Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.cpp
index 92ce505..1a5d29f 100644
--- a/Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.cpp
+++ b/Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.cpp
@@ -9,7 +9,7 @@
 #include "util/EGLWindow.h"
 #include "util/gles_loader_autogen.h"
 #include "util/random_utils.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 #include <string.h>
 #include <iostream>
@@ -22,9 +22,14 @@
 using DisplayTypeInfo = std::pair<const char *, EGLint>;
 
 const DisplayTypeInfo kDisplayTypes[] = {
-    {"d3d9", EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE}, {"d3d11", EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE},
-    {"gl", EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE}, {"gles", EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE},
-    {"null", EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE}, {"vulkan", EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE}};
+    {"d3d9", EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE},
+    {"d3d11", EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE},
+    {"gl", EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE},
+    {"gles", EGL_PLATFORM_ANGLE_TYPE_OPENGLES_ANGLE},
+    {"null", EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE},
+    {"vulkan", EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE},
+    {"swiftshader", EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE},
+};
 
 EGLint GetDisplayTypeFromArg(const char *displayTypeArg)
 {
@@ -40,6 +45,18 @@
     std::cout << "Unknown ANGLE back-end API: " << displayTypeArg << std::endl;
     return EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE;
 }
+
+EGLint GetDeviceTypeFromArg(const char *displayTypeArg)
+{
+    if (strcmp(displayTypeArg, "swiftshader") == 0)
+    {
+        return EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE;
+    }
+    else
+    {
+        return EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
+    }
+}
 }  // anonymous namespace
 
 SampleApplication::SampleApplication(std::string name,
@@ -60,7 +77,9 @@
 
     if (argc > 1 && strncmp(argv[1], kUseAngleArg, strlen(kUseAngleArg)) == 0)
     {
-        mPlatformParams.renderer = GetDisplayTypeFromArg(argv[1] + strlen(kUseAngleArg));
+        const char *arg            = argv[1] + strlen(kUseAngleArg);
+        mPlatformParams.renderer   = GetDisplayTypeFromArg(arg);
+        mPlatformParams.deviceType = GetDeviceTypeFromArg(arg);
     }
 
     // Load EGL library so we can initialize the display.
diff --git a/Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.h b/Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.h
index 1b187a3..a8a8af3 100644
--- a/Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.h
+++ b/Source/ThirdParty/ANGLE/samples/sample_util/SampleApplication.h
@@ -12,6 +12,7 @@
 #include <memory>
 #include <string>
 
+#include "common/system_utils.h"
 #include "util/EGLPlatformParameters.h"
 #include "util/OSWindow.h"
 #include "util/Timer.h"
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_format.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_format.json
index 3d2e66c..102cdf3 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_format.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_format.json
@@ -1,14 +1,14 @@
 {
   "src/libANGLE/renderer/FormatID_autogen.h":
-    "f127ba841492924a28ffe92e7ead74e9",
+    "0e45fa793ccf180d7f608dbe2d9927a5",
   "src/libANGLE/renderer/Format_table_autogen.cpp":
-    "a30ec4e0658eb44634a4c44b8334cde7",
+    "808c9476e937a1d79d41451c84622541",
   "src/libANGLE/renderer/angle_format.py":
-    "eefe6befdc925574207746fa531165fd",
+    "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/angle_format_data.json":
     "e39704d451d108335e737c39ad423113",
   "src/libANGLE/renderer/angle_format_map.json":
-    "ce3cf0c03ed74a997dbe9d6b7bf5e6f0",
+    "7c89f37c637323a34f4ec46ca11a6078",
   "src/libANGLE/renderer/gen_angle_format_table.py":
-    "dfa234d7707682fec20b571d2c16d784"
+    "8e349a643e81a028ebb54bde3756f9f7"
 }
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_load_functions_table.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_load_functions_table.json
index d03f476..fe5bc25 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_load_functions_table.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/ANGLE_load_functions_table.json
@@ -2,7 +2,7 @@
   "src/libANGLE/renderer/gen_load_functions_table.py":
     "e65c50e84fc38ad34d0eb0bebb84aab6",
   "src/libANGLE/renderer/load_functions_data.json":
-    "2225ec8e466cb151fe383fc467d35d65",
+    "5e9a50b1eeda3b5bca68aac4bc379437",
   "src/libANGLE/renderer/load_functions_table_autogen.cpp":
-    "f4c1c06efea4b69ac29c7f8dff68ea6d"
+    "a5dc01dc05a08f7c674f9241d36b095c"
 }
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/D3D11_format.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/D3D11_format.json
index fcaf48b..356e8d0 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/D3D11_format.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/D3D11_format.json
@@ -1,6 +1,6 @@
 {
   "src/libANGLE/renderer/angle_format.py":
-    "eefe6befdc925574207746fa531165fd",
+    "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/d3d/d3d11/gen_texture_format_table.py":
     "bf11e3404d4622059b6e9c4e96abf95e",
   "src/libANGLE/renderer/d3d/d3d11/texture_format_data.json":
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/DXGI_format.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/DXGI_format.json
index 6ba8056..555cf05 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/DXGI_format.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/DXGI_format.json
@@ -1,8 +1,8 @@
 {
   "src/libANGLE/renderer/angle_format.py":
-    "eefe6befdc925574207746fa531165fd",
+    "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/angle_format_map.json":
-    "ce3cf0c03ed74a997dbe9d6b7bf5e6f0",
+    "7c89f37c637323a34f4ec46ca11a6078",
   "src/libANGLE/renderer/d3d/d3d11/dxgi_format_data.json":
     "24f525b05dc665fbbc8c6d68fb863719",
   "src/libANGLE/renderer/d3d/d3d11/dxgi_format_map_autogen.cpp":
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_WGL_loader.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
index ce9527f..e6bd503 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
@@ -6,7 +6,7 @@
   "scripts/generate_loader.py":
     "48c60c668bec42a80378179aae2acc61",
   "scripts/registry_xml.py":
-    "cdf43c79a91f68bf8678b4c2cb75e9f1",
+    "a002559d0c36f3c78c08ba99f9849c6c",
   "scripts/wgl.xml":
     "aa96419c582af2f6673430e2847693f4",
   "src/libEGL/egl_loader_autogen.cpp":
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_entry_points.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_entry_points.json
index c73c536..7be0809 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_entry_points.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/GL_EGL_entry_points.json
@@ -6,13 +6,13 @@
   "scripts/entry_point_packed_gl_enums.json":
     "5550f249db54a698036d5d9aa65e043b",
   "scripts/generate_entry_points.py":
-    "00dc8410ad87e122314ac58579445188",
+    "29fd14951357959ad8e562867c0b12f6",
   "scripts/gl.xml":
     "b470cb06b06cbbe7adb2c8129ec85708",
   "scripts/gl_angle_ext.xml":
     "82d1e91d75d8935a44312da31adca77c",
   "scripts/registry_xml.py":
-    "cdf43c79a91f68bf8678b4c2cb75e9f1",
+    "a002559d0c36f3c78c08ba99f9849c6c",
   "scripts/wgl.xml":
     "aa96419c582af2f6673430e2847693f4",
   "src/libANGLE/Context_gl_1_0_autogen.h":
@@ -90,9 +90,9 @@
   "src/libANGLE/frame_capture_replay_autogen.cpp":
     "1e4e55ea044ff8fc3764622a2f1cf240",
   "src/libANGLE/frame_capture_utils_autogen.cpp":
-    "7465f826ea0196541bddd95540b0f599",
+    "f0a704d60de3f1f175a7799b49c45408",
   "src/libANGLE/frame_capture_utils_autogen.h":
-    "4d16f676a1f5f70a882161fcb585db5b",
+    "cc6e5b6c49d51da1cebea6ea48422511",
   "src/libANGLE/validationES1_autogen.h":
     "8d3131d2bf2e6f521f46b44e64a6bff9",
   "src/libANGLE/validationES2_autogen.h":
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/OpenGL_dispatch_table.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/OpenGL_dispatch_table.json
index 4905f31..e749614 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/OpenGL_dispatch_table.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/OpenGL_dispatch_table.json
@@ -2,7 +2,7 @@
   "scripts/gl.xml":
     "b470cb06b06cbbe7adb2c8129ec85708",
   "src/libANGLE/renderer/angle_format.py":
-    "eefe6befdc925574207746fa531165fd",
+    "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp":
     "7ebaa7f7525a0fe13f163ec076a8eace",
   "src/libANGLE/renderer/gl/DispatchTableGL_autogen.h":
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Static_builtins.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Static_builtins.json
index a5a4800..f278266 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Static_builtins.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Static_builtins.json
@@ -1,30 +1,30 @@
 {
   "src/compiler/translator/ImmutableString_ESSL_autogen.cpp":
-    "2c8ea95fdeb119742dbce1264186baf0",
+    "7a3f3014d9607087478ab62bb7380c41",
   "src/compiler/translator/ImmutableString_autogen.cpp":
-    "c5ce7814ee542605b4c353a2ac2590b1",
+    "f263dab8a3de5424902d50fd9c171377",
   "src/compiler/translator/ParseContext_ESSL_autogen.h":
     "1edbc3eb12319018818147bccd3a226d",
   "src/compiler/translator/ParseContext_complete_autogen.h":
     "a4209c68899e9cf3bcce81be2cb5f39f",
   "src/compiler/translator/SymbolTable_ESSL_autogen.cpp":
-    "f5d8521b9ba52b75349acbd0f07e1cec",
+    "7714226af3c98c0ebce9e71ef181c3ea",
   "src/compiler/translator/SymbolTable_autogen.cpp":
-    "684ce2afa8d3254b12ff3a9db15258b3",
+    "b0454c7771bda83e0ff0b39338bd3f66",
   "src/compiler/translator/SymbolTable_autogen.h":
-    "3b7cc472d076136a048d6b6f9c28460c",
+    "3ce7740b6ad93a86d198c3937b70c17e",
   "src/compiler/translator/builtin_function_declarations.txt":
     "fc9b0b050448d015482c9f13cab1df67",
   "src/compiler/translator/builtin_variables.json":
     "e0155915c71991dee1c46358fdb7dd8b",
   "src/compiler/translator/gen_builtin_symbols.py":
-    "3c867ef8bd6d80fa3d237c601b98407d",
+    "1034aa779dc2f10458779b28863ec6e2",
   "src/compiler/translator/tree_util/BuiltIn_ESSL_autogen.h":
     "3c7cdcb39ac0bd262a7d2c8edf8650c0",
   "src/compiler/translator/tree_util/BuiltIn_complete_autogen.h":
     "b840c72eb7184799469740e91f8715ab",
   "src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp":
-    "d5d22a67766f59cb5c99f188a9bf223f",
+    "760243f6505f48d9f72b6dd5ffbe8f23",
   "src/tests/compiler_tests/ImmutableString_test_autogen.cpp":
-    "c01c3151b2307bf822ea1796b92ec76d"
+    "3329875ef3e29005aad2839c96f3ec31"
 }
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_format.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_format.json
index e970529..ea88b9d 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_format.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_format.json
@@ -1,12 +1,12 @@
 {
   "src/libANGLE/renderer/angle_format.py":
-    "eefe6befdc925574207746fa531165fd",
+    "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/angle_format_map.json":
-    "ce3cf0c03ed74a997dbe9d6b7bf5e6f0",
+    "7c89f37c637323a34f4ec46ca11a6078",
   "src/libANGLE/renderer/vulkan/gen_vk_format_table.py":
     "ed6800108a872709e5e53fde2833aa86",
   "src/libANGLE/renderer/vulkan/vk_format_map.json":
-    "0e63169b162b3720db40e80c80163edb",
+    "ef0c23a6620215cfacfc690e9995ba31",
   "src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp":
-    "8b9e38b91ec6b8b23573e2ef9df5284a"
+    "ab30905d3d43b2186296f85c69db7e20"
 }
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json
index 8a27d26..eb2d31b 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_internal_shader_programs.json
@@ -1,6 +1,6 @@
 {
   "src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py":
-    "b05fa7c291a7c05d9bb1dd075990275b",
+    "8a13b2f4f77d51928db01eceb2c4ad44",
   "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc":
     "31832c377e532cd5ea05aab57154b8f8",
   "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc":
@@ -82,9 +82,17 @@
   "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000B.inc":
     "7e13d5325d35f96045e920a1cb3598bc",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc":
-    "dbd9529dd0c4ba0947842a9eb18e6189",
+    "b3877393750a16efd1d6805a0327a9e7",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc":
-    "2e8b92c66a347f3517ae1945d3ad625c",
+    "66d7868159587d000ef41d84489780bc",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000002.inc":
+    "db98380613bc3f032037b4a096756975",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000003.inc":
+    "e676bdff5c3b596eccba13a4e52d3875",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000000.inc":
+    "d99b638b0b2efa9726350869fe6b9b10",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000001.inc":
+    "8f27f7634724189ce2bd63820e96ee63",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc":
     "f5ef892346ee10e5d0d9f8cba2a491b2",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc":
@@ -102,9 +110,9 @@
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc":
     "bb62a58562d954c5a0946c291c2afca2",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc":
-    "b5340976023d009e8c80aa9798ac7680",
+    "5228214dc4d40eebed9b66806d604ef0",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc":
-    "cdcabde7e530a7030d377f3a01a78fec",
+    "18cf63360b3030cb637dd1129bd04e6b",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000A.inc":
     "61b2ac99ab77bea128bfe97dd34b4fa7",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000B.inc":
@@ -134,9 +142,45 @@
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000017.inc":
     "c9a4c3100ce405279425855655f1ef50",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc":
-    "ccbcd91094e7e9308573b3033f674e2c",
+    "5f2b521b8c31ecf08d2776c554c0c699",
   "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc":
-    "628e93148792a85a1fa0c688e1686a1d",
+    "4b364dc33cf595d2fa382b9321f48dbc",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001A.inc":
+    "ee4f06ba87a3dde490e01a0ec4561e10",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001B.inc":
+    "d2b62347cd2b80f885adfa31f6aeccc0",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001C.inc":
+    "92ea6760ba66b603fcbc1bebf207aa78",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001D.inc":
+    "72bbe32670195bcf4be9d1edd8152178",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001E.inc":
+    "e5131c8ba46eaf2674aad854eb3bc787",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001F.inc":
+    "45f2705df7389be715506e9c3e484d74",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000020.inc":
+    "d79651c76fdfefb0949ae18e006a6d22",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000021.inc":
+    "52d7d35300cbdc1825bb75445a4784ba",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000022.inc":
+    "3cb10ed1f526018215af300c40614fd7",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000023.inc":
+    "cf7d1cfe77021df82b8c2ff5ec97ac59",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000024.inc":
+    "44fd4a3c651d31fd783a42dfc0bde182",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000025.inc":
+    "25b270092f8e6a1bfeb3c6f5e441d792",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000026.inc":
+    "a77252550fef5aa63bb49faecb6de265",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000027.inc":
+    "1bac85ed8b670bbe4b68ffa4064bf31f",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000028.inc":
+    "d6cfcf49825f3da242d0f8935b0e30f6",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000029.inc":
+    "59e6c4a829283dc6db1664bb397ed6a2",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000002A.inc":
+    "4090206500b8e40b293de75230b1b532",
+  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000002B.inc":
+    "35ac7eddef7947f070b4f8419674f048",
   "src/libANGLE/renderer/vulkan/shaders/gen/FullScreenQuad.vert.00000000.inc":
     "235ca7c3979ce29a49c320d000ee7409",
   "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000000.inc":
@@ -246,9 +290,11 @@
   "src/libANGLE/renderer/vulkan/shaders/src/BufferUtils.comp":
     "b7c20e019199f8328ef37b11c6fbcadd",
   "src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp":
-    "ca35df77d258baa0636529d1f0f446a9",
+    "083e2b6ed2cf40f036287413c449e675",
+  "src/libANGLE/renderer/vulkan/shaders/src/ConvertIndexIndirectLineLoop.comp":
+    "a543a28fc1fe53eefd5949ee3b4428f3",
   "src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp":
-    "d6abd323d011689cef5db83162214be2",
+    "6d034ff271e17c0a4f8a12b8eec2970d",
   "src/libANGLE/renderer/vulkan/shaders/src/FullScreenQuad.vert":
     "805ec8b2f87d4bd4242dc5b1c58ba3b4",
   "src/libANGLE/renderer/vulkan/shaders/src/ImageClear.frag":
@@ -260,9 +306,9 @@
   "src/libANGLE/renderer/vulkan/shaders/src/OverlayDraw.comp":
     "dcc246b398b2e07a869a264666499362",
   "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp":
-    "9035e5a2674bbab577576d5b704fbe99",
+    "39bcc07efd2fe05c1eb0a9d9e34567d3",
   "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h":
-    "bd3beed76c9069d967cc2946a035e2cc",
+    "cfeb07579c1ba5051450f76f06e47d05",
   "tools/glslang/glslang_validator.exe.sha1":
     "289f30598865a987a21b79ae525fc66f",
   "tools/glslang/glslang_validator.sha1":
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json
index 60a7ce0..d5f8ef7 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/Vulkan_mandatory_format_support_table.json
@@ -1,6 +1,6 @@
 {
   "src/libANGLE/renderer/angle_format.py":
-    "eefe6befdc925574207746fa531165fd",
+    "32ba71942c0fd00e6807104f1bb80a3c",
   "src/libANGLE/renderer/vulkan/gen_vk_mandatory_format_support_table.py":
     "dab4614bbee0c3fbc5b3ccaaa11ba9d3",
   "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_data.json":
@@ -8,5 +8,5 @@
   "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp":
     "d20e549634ef32d6ad4e9f0b28e52acf",
   "third_party/vulkan-headers/src/registry/vk.xml":
-    "8af0f992bd45c2d9500eb5ed60c256d6"
+    "db16f42dab8a7a1ee88c42a90f0c02c2"
 }
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/proc_table.json b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/proc_table.json
index 2a757421..6e72edc 100644
--- a/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/proc_table.json
+++ b/Source/ThirdParty/ANGLE/scripts/code_generation_hashes/proc_table.json
@@ -10,7 +10,7 @@
   "scripts/gl_angle_ext.xml":
     "82d1e91d75d8935a44312da31adca77c",
   "scripts/registry_xml.py":
-    "cdf43c79a91f68bf8678b4c2cb75e9f1",
+    "a002559d0c36f3c78c08ba99f9849c6c",
   "scripts/wgl.xml":
     "aa96419c582af2f6673430e2847693f4",
   "src/libGL/proc_table_wgl_autogen.cpp":
diff --git a/Source/ThirdParty/ANGLE/scripts/export_targets.py b/Source/ThirdParty/ANGLE/scripts/export_targets.py
index e5a6234..db6108c 100755
--- a/Source/ThirdParty/ANGLE/scripts/export_targets.py
+++ b/Source/ThirdParty/ANGLE/scripts/export_targets.py
@@ -56,7 +56,18 @@
 REPO_DIR = pathlib.Path.cwd()
 
 GN_ENV = dict(os.environ)
-GN_ENV['DEPOT_TOOLS_WIN_TOOLCHAIN'] = '0'
+# We need to set DEPOT_TOOLS_WIN_TOOLCHAIN to 0 for non-Googlers, but otherwise
+# leave it unset since vs_toolchain.py assumes that the user is a Googler with
+# the Visual Studio files in depot_tools if DEPOT_TOOLS_WIN_TOOLCHAIN is not
+# explicitly set to 0.
+vs_found = False
+for directory in os.environ['PATH'].split(os.pathsep):
+    vs_dir = os.path.join(directory, 'win_toolchain', 'vs_files')
+    if os.path.exists(vs_dir):
+        vs_found = True
+        break
+if not vs_found:
+    GN_ENV['DEPOT_TOOLS_WIN_TOOLCHAIN'] = '0'
 
 (OUT_DIR, *ROOTS) = sys.argv[1:]
 assert len(ROOTS), 'Usage: export_targets.py OUT_DIR ROOTS...'
@@ -107,7 +118,7 @@
 
 try:
     p = run_checked('gn', 'desc', '--format=json', str(OUT_DIR), '*', stdout=subprocess.PIPE,
-                shell=True, env=GN_ENV)
+                env=GN_ENV, shell=(True if sys.platform == 'win32' else False))
 except subprocess.CalledProcessError:
     sys.stderr.buffer.write(b'`gn` failed. Is depot_tools in your PATH?\n')
     exit(1)
@@ -157,8 +168,17 @@
 assert INCLUDE_REGEX.match(b'#include "foo"')
 assert INCLUDE_REGEX.match(b'\n#include "foo"')
 
+# Most of these are ignored because this script does not currently handle
+# #includes in #ifdefs properly, so they will erroneously be marked as being
+# included, but not part of the source list.
 IGNORED_INCLUDES = {
+    b'compiler/translator/TranslatorESSL.h',
+    b'compiler/translator/TranslatorGLSL.h',
+    b'compiler/translator/TranslatorHLSL.h',
     b'compiler/translator/TranslatorVulkan.h',
+    b'libANGLE/renderer/d3d/DeviceD3D.h',
+    b'libANGLE/renderer/d3d/DisplayD3D.h',
+    b'libANGLE/renderer/d3d/RenderTargetD3D.h',
     b'libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h',
     b'libANGLE/renderer/gl/glx/DisplayGLX.h',
     b'libANGLE/renderer/gl/cgl/DisplayCGL.h',
@@ -188,7 +208,21 @@
     b'X11',
 }
 
+IGNORED_DIRECTORIES = {
+    '//third_party/glslang',
+    '//third_party/spirv-tools',
+    '//third_party/SwiftShader',
+    '//third_party/vulkan-headers',
+    '//third_party/vulkan-loader',
+    '//third_party/vulkan-tools',
+    '//third_party/vulkan-validation-layers',
+}
+
 def has_all_includes(target_name: str, descs: dict) -> bool:
+    for ignored_directory in IGNORED_DIRECTORIES:
+        if target_name.startswith(ignored_directory):
+            return True
+
     flat = flattened_target(target_name, descs, stop_at_lib=False)
     acceptable_sources = flat.get('sources', []) + flat.get('outputs', [])
     acceptable_sources = {x.rsplit('/', 1)[-1].encode() for x in acceptable_sources}
@@ -262,7 +296,6 @@
     for dep_name in set(desc['deps']):
         dep = descs[dep_name]
         if dep['type'] in LIBRARY_TYPES:
-            assert dep_name.startswith('//:'), dep_name
             dep_libs.add(dep_name[3:])
     desc['deps'] = sortedi(dep_libs)
 
diff --git a/Source/ThirdParty/ANGLE/scripts/generate_entry_points.py b/Source/ThirdParty/ANGLE/scripts/generate_entry_points.py
index 2954d34..b6507cf 100755
--- a/Source/ThirdParty/ANGLE/scripts/generate_entry_points.py
+++ b/Source/ThirdParty/ANGLE/scripts/generate_entry_points.py
@@ -522,6 +522,8 @@
     {param_types}
 }};
 
+constexpr uint32_t kParamTypeCount = {param_type_count};
+
 union ParamValue
 {{
     {param_union_values}
@@ -532,7 +534,6 @@
 
 {get_param_val_specializations}
 
-
 template <ParamType PType, typename T>
 T GetParamVal(const ParamValue &value)
 {{
@@ -571,6 +572,14 @@
 
 void WriteParamTypeToStream(std::ostream &os, ParamType paramType, const ParamValue& paramValue);
 const char *ParamTypeToString(ParamType paramType);
+
+enum class ResourceIDType
+{{
+    {resource_id_types}
+}};
+
+ResourceIDType GetResourceIDTypeFromParamType(ParamType paramType);
+const char *GetResourceIDTypeName(ResourceIDType resourceIDType);
 }}  // namespace angle
 
 #endif  // LIBANGLE_FRAME_CAPTURE_UTILS_AUTOGEN_H_
@@ -613,6 +622,27 @@
             return "unknown";
     }}
 }}
+
+ResourceIDType GetResourceIDTypeFromParamType(ParamType paramType)
+{{
+    switch (paramType)
+    {{
+{param_type_resource_id_cases}
+        default:
+            return ResourceIDType::InvalidEnum;
+    }}
+}}
+
+const char *GetResourceIDTypeName(ResourceIDType resourceIDType)
+{{
+    switch (resourceIDType)
+    {{
+{resource_id_type_name_cases}
+        default:
+            UNREACHABLE();
+            return "GetResourceIDTypeName error";
+    }}
+}}
 }}  // namespace angle
 """
 
@@ -642,6 +672,12 @@
 template_param_type_to_string_case = """        case ParamType::T{enum}:
             return "{type}";"""
 
+template_param_type_to_resource_id_type_case = """        case ParamType::T{enum}:
+            return ResourceIDType::{resource_id_type};"""
+
+template_resource_id_type_name_case = """        case ResourceIDType::{resource_id_type}:
+            return "{resource_id_type}";"""
+
 
 def script_relative(path):
     return os.path.join(os.path.dirname(sys.argv[0]), path)
@@ -1314,6 +1350,17 @@
         enum=param_type, union_name=get_param_type_union_name(param_type))
 
 
+def get_resource_id_types(all_param_types):
+    return [t[:-2] for t in filter(lambda t: t.endswith("ID"), all_param_types)]
+
+
+def format_resource_id_types(all_param_types):
+    resource_id_types = get_resource_id_types(all_param_types)
+    resource_id_types += ["EnumCount", "InvalidEnum = EnumCount"]
+    resource_id_types = ",\n    ".join(resource_id_types)
+    return resource_id_types
+
+
 def write_capture_helper_header(all_param_types):
 
     param_types = "\n    ".join(["T%s," % t for t in all_param_types])
@@ -1325,17 +1372,20 @@
     set_param_val_specializations = "\n\n".join(
         [format_set_param_val_specialization(t) for t in all_param_types])
     init_param_value_cases = "\n".join([format_init_param_value_case(t) for t in all_param_types])
+    resource_id_types = format_resource_id_types(all_param_types)
 
     content = template_frame_capture_utils_header.format(
         script_name=os.path.basename(sys.argv[0]),
         data_source_name="gl.xml and gl_angle_ext.xml",
         year=date.today().year,
         param_types=param_types,
+        param_type_count=len(all_param_types),
         param_union_values=param_union_values,
         get_param_val_specializations=get_param_val_specializations,
         access_param_value_cases=access_param_value_cases,
         set_param_val_specializations=set_param_val_specializations,
-        init_param_value_cases=init_param_value_cases)
+        init_param_value_cases=init_param_value_cases,
+        resource_id_types=resource_id_types)
 
     path = path_to("libANGLE", "frame_capture_utils_autogen.h")
 
@@ -1349,6 +1399,30 @@
         enum=param_type, type=get_gl_param_type_type(param_type))
 
 
+def get_resource_id_type_from_param_type(param_type):
+    if param_type.endswith("ConstPointer"):
+        return param_type.replace("ConstPointer", "")[:-2]
+    if param_type.endswith("Pointer"):
+        return param_type.replace("Pointer", "")[:-2]
+    return param_type[:-2]
+
+
+def format_param_type_to_resource_id_type_case(param_type):
+    return template_param_type_to_resource_id_type_case.format(
+        enum=param_type, resource_id_type=get_resource_id_type_from_param_type(param_type))
+
+
+def format_param_type_resource_id_cases(all_param_types):
+    id_types = filter(
+        lambda t: t.endswith("ID") or t.endswith("IDConstPointer") or t.endswith("IDPointer"),
+        all_param_types)
+    return "\n".join([format_param_type_to_resource_id_type_case(t) for t in id_types])
+
+
+def format_resource_id_type_name_case(resource_id_type):
+    return template_resource_id_type_name_case.format(resource_id_type=resource_id_type)
+
+
 def write_capture_helper_source(all_param_types):
 
     write_param_type_to_stream_cases = "\n".join(
@@ -1356,12 +1430,20 @@
     param_type_to_string_cases = "\n".join(
         [format_param_type_to_string_case(t) for t in all_param_types])
 
+    param_type_resource_id_cases = format_param_type_resource_id_cases(all_param_types)
+
+    resource_id_types = get_resource_id_types(all_param_types)
+    resource_id_type_name_cases = "\n".join(
+        [format_resource_id_type_name_case(t) for t in resource_id_types])
+
     content = template_frame_capture_utils_source.format(
         script_name=os.path.basename(sys.argv[0]),
         data_source_name="gl.xml and gl_angle_ext.xml",
         year=date.today().year,
         write_param_type_to_stream_cases=write_param_type_to_stream_cases,
-        param_type_to_string_cases=param_type_to_string_cases)
+        param_type_to_string_cases=param_type_to_string_cases,
+        param_type_resource_id_cases=param_type_resource_id_cases,
+        resource_id_type_name_cases=resource_id_type_name_cases)
 
     path = path_to("libANGLE", "frame_capture_utils_autogen.cpp")
 
diff --git a/Source/ThirdParty/ANGLE/scripts/generate_vulkan_layers_json.py b/Source/ThirdParty/ANGLE/scripts/generate_vulkan_layers_json.py
index 561ac5a..513f694 100755
--- a/Source/ThirdParty/ANGLE/scripts/generate_vulkan_layers_json.py
+++ b/Source/ThirdParty/ANGLE/scripts/generate_vulkan_layers_json.py
@@ -28,6 +28,7 @@
     parser.add_argument('target_dir')
     parser.add_argument('version_header', help='path to vulkan_core.h')
     parser.add_argument('json_files', nargs='*')
+    parser.add_argument('--replacement', help='replacement for the library', default=None)
     args = parser.parse_args()
 
     source_dir = args.source_dir
@@ -46,7 +47,8 @@
         os.makedirs(target_dir)
 
     # Copy the *.json files from source dir to target dir
-    if (set(glob_slash(os.path.join(source_dir, '*.json'))) != set(json_files)):
+    if (set(glob_slash(os.path.join(source_dir, '*.json'))) !=
+            set(json_files)) and data_key != 'ICD':
         print(glob.glob(os.path.join(source_dir, '*.json')))
         print('.json list in gn file is out-of-date', file=sys.stderr)
         return 1
@@ -64,7 +66,10 @@
         # The standard validation layer has no library path.
         if 'library_path' in data[data_key]:
             prev_name = os.path.basename(data[data_key]['library_path'])
-            data[data_key]['library_path'] = prev_name
+            if args.replacement:
+                data[data_key]['library_path'] = args.replacement
+            else:
+                data[data_key]['library_path'] = prev_name
 
         target_fname = os.path.join(target_dir, os.path.basename(json_fname))
         with open(target_fname, 'wb') as outfile:
@@ -73,14 +78,15 @@
     # Get the Vulkan version from the vulkan_core.h file
     vk_header_filename = args.version_header
     vk_version = None
-    with open(vk_header_filename) as vk_header_file:
-        for line in vk_header_file:
-            if line.startswith('#define VK_HEADER_VERSION'):
-                vk_version = line.split()[-1]
-                break
-    if not vk_version:
-        print('failed to extract vk_version', file=sys.stderr)
-        return 1
+    if data_key != 'ICD':
+        with open(vk_header_filename) as vk_header_file:
+            for line in vk_header_file:
+                if line.startswith('#define VK_HEADER_VERSION'):
+                    vk_version = line.split()[-1]
+                    break
+        if not vk_version:
+            print('failed to extract vk_version', file=sys.stderr)
+            return 1
 
     # Set json file prefix and suffix for generating files, default to Linux.
     relative_path_prefix = '../lib'
diff --git a/Source/ThirdParty/ANGLE/scripts/registry_xml.py b/Source/ThirdParty/ANGLE/scripts/registry_xml.py
index 1ac2858..b81930f 100644
--- a/Source/ThirdParty/ANGLE/scripts/registry_xml.py
+++ b/Source/ThirdParty/ANGLE/scripts/registry_xml.py
@@ -113,6 +113,7 @@
     "EGL_KHR_debug",
     "EGL_KHR_fence_sync",
     "EGL_KHR_image",
+    "EGL_KHR_no_config_context",
     "EGL_KHR_stream",
     "EGL_KHR_stream_consumer_gltexture",
     "EGL_KHR_swap_buffers_with_damage",
diff --git a/Source/ThirdParty/ANGLE/src/common/PackedEnums.cpp b/Source/ThirdParty/ANGLE/src/common/PackedEnums.cpp
index cbb18e7..d4bd028 100644
--- a/Source/ThirdParty/ANGLE/src/common/PackedEnums.cpp
+++ b/Source/ThirdParty/ANGLE/src/common/PackedEnums.cpp
@@ -269,6 +269,9 @@
         case VertexAttribType::Int2101010:
             os << "GL_INT_10_10_10_2";
             break;
+        case VertexAttribType::Int1010102:
+            os << "GL_INT_10_10_10_2_OES";
+            break;
         case VertexAttribType::Short:
             os << "GL_SHORT";
             break;
@@ -281,6 +284,9 @@
         case VertexAttribType::UnsignedInt2101010:
             os << "GL_UNSIGNED_INT_10_10_10_2";
             break;
+        case VertexAttribType::UnsignedInt1010102:
+            os << "GL_UNSIGNED_INT_10_10_10_2_OES";
+            break;
         case VertexAttribType::UnsignedShort:
             os << "GL_UNSIGNED_SHORT";
             break;
diff --git a/Source/ThirdParty/ANGLE/src/common/PackedEnums.h b/Source/ThirdParty/ANGLE/src/common/PackedEnums.h
index afe0c91..5460c3a 100644
--- a/Source/ThirdParty/ANGLE/src/common/PackedEnums.h
+++ b/Source/ThirdParty/ANGLE/src/common/PackedEnums.h
@@ -107,7 +107,7 @@
 
     // No explicit construct/copy/destroy for aggregate type
     void fill(const T &u) { mPrivateData.fill(u); }
-    void swap(PackedEnumMap<E, T> &a) noexcept { mPrivateData.swap(a.mPrivateData); }
+    void swap(PackedEnumMap<E, T, MaxSize> &a) noexcept { mPrivateData.swap(a.mPrivateData); }
 
     // iterators:
     iterator begin() noexcept { return mPrivateData.begin(); }
@@ -333,9 +333,12 @@
     Fixed              = 12,  // GLenum == 0x140C
     MaxBasicType       = 12,
     UnsignedInt2101010 = 13,  // GLenum == 0x8368
-    Int2101010         = 14,  // GLenum == 0x8D9F
-    InvalidEnum        = 15,
-    EnumCount          = 15,
+    HalfFloatOES       = 14,  // GLenum == 0x8D61
+    Int2101010         = 15,  // GLenum == 0x8D9F
+    UnsignedInt1010102 = 16,  // GLenum == 0x8DF6
+    Int1010102         = 17,  // GLenum == 0x8DF7
+    InvalidEnum        = 18,
+    EnumCount          = 18,
 };
 
 template <>
@@ -346,8 +349,14 @@
         return static_cast<VertexAttribType>(packed);
     if (from == GL_UNSIGNED_INT_2_10_10_10_REV)
         return VertexAttribType::UnsignedInt2101010;
+    if (from == GL_HALF_FLOAT_OES)
+        return VertexAttribType::HalfFloatOES;
     if (from == GL_INT_2_10_10_10_REV)
         return VertexAttribType::Int2101010;
+    if (from == GL_UNSIGNED_INT_10_10_10_2_OES)
+        return VertexAttribType::UnsignedInt1010102;
+    if (from == GL_INT_10_10_10_2_OES)
+        return VertexAttribType::Int1010102;
     return VertexAttribType::InvalidEnum;
 }
 
@@ -356,8 +365,14 @@
     // This could be optimized using a constexpr table.
     if (from == VertexAttribType::Int2101010)
         return GL_INT_2_10_10_10_REV;
+    if (from == VertexAttribType::HalfFloatOES)
+        return GL_HALF_FLOAT_OES;
     if (from == VertexAttribType::UnsignedInt2101010)
         return GL_UNSIGNED_INT_2_10_10_10_REV;
+    if (from == VertexAttribType::UnsignedInt1010102)
+        return GL_UNSIGNED_INT_10_10_10_2_OES;
+    if (from == VertexAttribType::Int1010102)
+        return GL_INT_10_10_10_2_OES;
     return static_cast<GLenum>(from) + GL_BYTE;
 }
 
@@ -371,87 +386,116 @@
 ANGLE_VALIDATE_PACKED_ENUM(VertexAttribType, HalfFloat, GL_HALF_FLOAT);
 ANGLE_VALIDATE_PACKED_ENUM(VertexAttribType, Fixed, GL_FIXED);
 ANGLE_VALIDATE_PACKED_ENUM(VertexAttribType, Int2101010, GL_INT_2_10_10_10_REV);
+ANGLE_VALIDATE_PACKED_ENUM(VertexAttribType, HalfFloatOES, GL_HALF_FLOAT_OES);
 ANGLE_VALIDATE_PACKED_ENUM(VertexAttribType, UnsignedInt2101010, GL_UNSIGNED_INT_2_10_10_10_REV);
+ANGLE_VALIDATE_PACKED_ENUM(VertexAttribType, Int1010102, GL_INT_10_10_10_2_OES);
+ANGLE_VALIDATE_PACKED_ENUM(VertexAttribType, UnsignedInt1010102, GL_UNSIGNED_INT_10_10_10_2_OES);
 
 std::ostream &operator<<(std::ostream &os, VertexAttribType value);
 
 // Typesafe object handles.
-struct BufferID
-{
-    GLuint value;
-};
 
-struct FenceNVID
-{
-    GLuint value;
-};
+template <typename T>
+struct ResourceTypeToID;
 
-struct FramebufferID
-{
-    GLuint value;
-};
+template <typename T>
+struct IsResourceIDType;
 
-struct MemoryObjectID
-{
-    GLuint value;
-};
+// Clang Format doesn't like the following X macro.
+// clang-format off
+#define ANGLE_ID_TYPES_OP(X) \
+    X(Buffer)                \
+    X(FenceNV)               \
+    X(Framebuffer)           \
+    X(MemoryObject)          \
+    X(Path)                  \
+    X(ProgramPipeline)       \
+    X(Query)                 \
+    X(Renderbuffer)          \
+    X(Sampler)               \
+    X(Semaphore)             \
+    X(Texture)               \
+    X(TransformFeedback)     \
+    X(VertexArray)
+// clang-format on
 
-struct PathID
-{
-    GLuint value;
-};
+#define ANGLE_DEFINE_ID_TYPE(Type)          \
+    class Type;                             \
+    struct Type##ID                         \
+    {                                       \
+        GLuint value;                       \
+    };                                      \
+    template <>                             \
+    struct ResourceTypeToID<Type>           \
+    {                                       \
+        using IDType = Type##ID;            \
+    };                                      \
+    template <>                             \
+    struct IsResourceIDType<Type##ID>       \
+    {                                       \
+        static constexpr bool value = true; \
+    };
 
-struct ProgramPipelineID
-{
-    GLuint value;
-};
+ANGLE_ID_TYPES_OP(ANGLE_DEFINE_ID_TYPE)
 
-struct QueryID
-{
-    GLuint value;
-};
+#undef ANGLE_DEFINE_ID_TYPE
+#undef ANGLE_ID_TYPES_OP
 
-struct RenderbufferID
-{
-    GLuint value;
-};
-
-struct SamplerID
-{
-    GLuint value;
-};
-
-struct SemaphoreID
-{
-    GLuint value;
-};
-
+// Shaders and programs are a bit special as they share IDs.
 struct ShaderProgramID
 {
     GLuint value;
 };
 
-struct TextureID
+template <>
+struct IsResourceIDType<ShaderProgramID>
 {
-    GLuint value;
+    constexpr static bool value = true;
 };
 
-struct TransformFeedbackID
+class Shader;
+template <>
+struct ResourceTypeToID<Shader>
 {
-    GLuint value;
+    using IDType = ShaderProgramID;
 };
 
-struct VertexArrayID
+class Program;
+template <>
+struct ResourceTypeToID<Program>
 {
-    GLuint value;
+    using IDType = ShaderProgramID;
 };
 
-// Util funcs for resourceIDs
-inline bool operator==(const FramebufferID &lhs, const FramebufferID &rhs)
+template <typename T>
+struct ResourceTypeToID
+{
+    using IDType = void;
+};
+
+template <typename T>
+struct IsResourceIDType
+{
+    static constexpr bool value = false;
+};
+
+template <typename T>
+bool ValueEquals(T lhs, T rhs)
 {
     return lhs.value == rhs.value;
 }
-inline bool operator!=(const FramebufferID &lhs, const FramebufferID &rhs)
+
+// Util funcs for resourceIDs
+template <typename T>
+typename std::enable_if<IsResourceIDType<T>::value, bool>::type operator==(const T &lhs,
+                                                                           const T &rhs)
+{
+    return lhs.value == rhs.value;
+}
+
+template <typename T>
+typename std::enable_if<IsResourceIDType<T>::value, bool>::type operator!=(const T &lhs,
+                                                                           const T &rhs)
 {
     return lhs.value != rhs.value;
 }
diff --git a/Source/ThirdParty/ANGLE/src/common/android_util.cpp b/Source/ThirdParty/ANGLE/src/common/android_util.cpp
index 38e0d4fb..1be12e5 100644
--- a/Source/ThirdParty/ANGLE/src/common/android_util.cpp
+++ b/Source/ThirdParty/ANGLE/src/common/android_util.cpp
@@ -7,6 +7,7 @@
 // android_util.cpp: Utilities for the using the Android platform
 
 #include "common/android_util.h"
+#include "common/debug.h"
 
 #include <cstdint>
 
@@ -159,6 +160,14 @@
      *   OpenGL ES: GL_STENCIL_INDEX8
      */
     AHARDWAREBUFFER_FORMAT_S8_UINT                  = 0x35,
+
+    /**
+     * YUV 420 888 format.
+     * Must have an even width and height. Can be accessed in OpenGL
+     * shaders through an external sampler. Does not support mip-maps
+     * cube-maps or multi-layered textures.
+     */
+    AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420             = 0x23,
 };
 // clang-format on
 
@@ -247,8 +256,13 @@
             return GL_DEPTH32F_STENCIL8;
         case AHARDWAREBUFFER_FORMAT_S8_UINT:
             return GL_STENCIL_INDEX8;
+        case AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420:
+            return GL_RGB8;
         default:
-            return GL_NONE;
+            // Treat unknown formats as RGB. They are vendor-specific YUV formats that would sample
+            // as RGB.
+            WARN() << "Unknown pixelFormat: " << pixelFormat << ". Treating as RGB8";
+            return GL_RGB8;
     }
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/common/angleutils.h b/Source/ThirdParty/ANGLE/src/common/angleutils.h
index 3c93d1b..3a1391e 100644
--- a/Source/ThirdParty/ANGLE/src/common/angleutils.h
+++ b/Source/ThirdParty/ANGLE/src/common/angleutils.h
@@ -253,6 +253,18 @@
 // EXT_texture_type_2_10_10_10_REV
 #define GL_RGB10_UNORM_ANGLEX 0x6AEE
 
+// These are dummy formats for OES_vertex_type_10_10_10_2
+#define GL_A2_RGB10_UNORM_ANGLEX 0x6AEF
+#define GL_A2_RGB10_SNORM_ANGLEX 0x6AF0
+#define GL_A2_RGB10_USCALED_ANGLEX 0x6AF1
+#define GL_A2_RGB10_SSCALED_ANGLEX 0x6AF2
+#define GL_X2_RGB10_UINT_ANGLEX 0x6AF3
+#define GL_X2_RGB10_SINT_ANGLEX 0x6AF4
+#define GL_X2_RGB10_USCALED_ANGLEX 0x6AF5
+#define GL_X2_RGB10_SSCALED_ANGLEX 0x6AF6
+#define GL_X2_RGB10_UNORM_ANGLEX 0x6AF7
+#define GL_X2_RGB10_SNORM_ANGLEX 0x6AF8
+
 #define ANGLE_CHECK_GL_ALLOC(context, result) \
     ANGLE_CHECK(context, result, "Failed to allocate host memory", GL_OUT_OF_MEMORY)
 
diff --git a/Source/ThirdParty/ANGLE/src/common/debug.h b/Source/ThirdParty/ANGLE/src/common/debug.h
index ed669d3..bd4e927 100644
--- a/Source/ThirdParty/ANGLE/src/common/debug.h
+++ b/Source/ThirdParty/ANGLE/src/common/debug.h
@@ -253,6 +253,11 @@
 #    define EVENT(message, ...) (void(0))
 #endif
 
+// The state tracked by ANGLE will be validated with the driver state before each call
+#if defined(ANGLE_ENABLE_ASSERTS)
+#    define ANGLE_STATE_VALIDATION_ENABLED
+#endif
+
 #if defined(__GNUC__)
 #    define ANGLE_CRASH() __builtin_trap()
 #else
diff --git a/Source/ThirdParty/ANGLE/src/common/platform.h b/Source/ThirdParty/ANGLE/src/common/platform.h
index 7ba97d1..9603be4 100644
--- a/Source/ThirdParty/ANGLE/src/common/platform.h
+++ b/Source/ThirdParty/ANGLE/src/common/platform.h
@@ -46,7 +46,7 @@
 #    include <windows.h>
 
 #    if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP)
-#        define ANGLE_ENABLE_WINDOWS_STORE 1
+#        define ANGLE_ENABLE_WINDOWS_UWP 1
 #    endif
 
 #    if defined(ANGLE_ENABLE_D3D9)
@@ -59,16 +59,19 @@
 #        include <d3d10_1.h>
 #        include <d3d11.h>
 #        include <d3d11_3.h>
+#        include <d3d11on12.h>
+#        include <d3d12.h>
 #        include <d3dcompiler.h>
 #        include <dxgi.h>
 #        include <dxgi1_2.h>
+#        include <dxgi1_4.h>
 #    endif
 
 #    if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
 #        include <wrl.h>
 #    endif
 
-#    if defined(ANGLE_ENABLE_WINDOWS_STORE)
+#    if defined(ANGLE_ENABLE_WINDOWS_UWP)
 #        include <dxgi1_3.h>
 #        if defined(_DEBUG)
 #            include <DXProgrammableCapture.h>
diff --git a/Source/ThirdParty/ANGLE/src/common/system_utils_winuwp.cpp b/Source/ThirdParty/ANGLE/src/common/system_utils_winuwp.cpp
new file mode 100644
index 0000000..72d5509
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/common/system_utils_winuwp.cpp
@@ -0,0 +1,120 @@
+//
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// system_utils_winuwp.cpp: Implementation of OS-specific functions for Windows UWP
+
+#include "system_utils.h"
+
+#include <stdarg.h>
+#include <windows.h>
+#include <array>
+#include <codecvt>
+#include <locale>
+#include <string>
+#include <vector>
+
+#include "common/debug.h"
+
+namespace angle
+{
+
+bool SetEnvironmentVar(const char *variableName, const char *value)
+{
+    // Not supported for UWP
+    return false;
+}
+
+std::string GetEnvironmentVar(const char *variableName)
+{
+    // Not supported for UWP
+    return "";
+}
+
+const char *GetSharedLibraryExtension()
+{
+    return "dll";
+}
+
+const char *GetPathSeparator()
+{
+    return ";";
+}
+
+double GetCurrentTime()
+{
+    LARGE_INTEGER frequency = {};
+    QueryPerformanceFrequency(&frequency);
+
+    LARGE_INTEGER curTime;
+    QueryPerformanceCounter(&curTime);
+
+    return static_cast<double>(curTime.QuadPart) / frequency.QuadPart;
+}
+
+class UwpLibrary : public Library
+{
+  public:
+    UwpLibrary(const char *libraryName, SearchType searchType)
+    {
+        char buffer[MAX_PATH];
+        int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
+
+        std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
+        std::wstring wideBuffer = converter.from_bytes(buffer);
+
+        if (ret > 0 && ret < MAX_PATH)
+        {
+            switch (searchType)
+            {
+                case SearchType::ApplicationDir:
+                    mModule = LoadPackagedLibrary(wideBuffer.c_str(), 0);
+                    break;
+                case SearchType::SystemDir:
+                    // Not supported in UWP
+                    break;
+            }
+        }
+    }
+
+    ~UwpLibrary() override
+    {
+        if (mModule)
+        {
+            FreeLibrary(mModule);
+        }
+    }
+
+    void *getSymbol(const char *symbolName) override
+    {
+        if (!mModule)
+        {
+            return nullptr;
+        }
+
+        return reinterpret_cast<void *>(GetProcAddress(mModule, symbolName));
+    }
+
+    void *getNative() const override { return reinterpret_cast<void *>(mModule); }
+
+  private:
+    HMODULE mModule = nullptr;
+};
+
+Library *OpenSharedLibrary(const char *libraryName, SearchType searchType)
+{
+    return new UwpLibrary(libraryName, searchType);
+}
+
+bool IsDebuggerAttached()
+{
+    return !!::IsDebuggerPresent();
+}
+
+void BreakDebugger()
+{
+    __debugbreak();
+}
+}  // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/common/tls.cpp b/Source/ThirdParty/ANGLE/src/common/tls.cpp
index 68c6ecf..9559afe 100644
--- a/Source/ThirdParty/ANGLE/src/common/tls.cpp
+++ b/Source/ThirdParty/ANGLE/src/common/tls.cpp
@@ -10,7 +10,7 @@
 
 #include <assert.h>
 
-#ifdef ANGLE_ENABLE_WINDOWS_STORE
+#ifdef ANGLE_ENABLE_WINDOWS_UWP
 #    include <map>
 #    include <mutex>
 #    include <set>
@@ -39,7 +39,7 @@
     TLSIndex index;
 
 #ifdef ANGLE_PLATFORM_WINDOWS
-#    ifdef ANGLE_ENABLE_WINDOWS_STORE
+#    ifdef ANGLE_ENABLE_WINDOWS_UWP
     if (!freeTlsIndices.empty())
     {
         DWORD result = freeTlsIndices.back();
@@ -76,7 +76,7 @@
     }
 
 #ifdef ANGLE_PLATFORM_WINDOWS
-#    ifdef ANGLE_ENABLE_WINDOWS_STORE
+#    ifdef ANGLE_ENABLE_WINDOWS_UWP
     assert(index < nextTlsIndex);
     assert(find(freeTlsIndices.begin(), freeTlsIndices.end(), index) == freeTlsIndices.end());
 
@@ -106,7 +106,7 @@
     }
 
 #ifdef ANGLE_PLATFORM_WINDOWS
-#    ifdef ANGLE_ENABLE_WINDOWS_STORE
+#    ifdef ANGLE_ENABLE_WINDOWS_UWP
     ThreadLocalData *threadData = currentThreadData;
     if (!threadData)
     {
@@ -138,7 +138,7 @@
     }
 
 #ifdef ANGLE_PLATFORM_WINDOWS
-#    ifdef ANGLE_ENABLE_WINDOWS_STORE
+#    ifdef ANGLE_ENABLE_WINDOWS_UWP
     ThreadLocalData *threadData = currentThreadData;
     if (threadData && threadData->size() > index)
     {
diff --git a/Source/ThirdParty/ANGLE/src/common/tls.h b/Source/ThirdParty/ANGLE/src/common/tls.h
index 641d66f..fbbe19914 100644
--- a/Source/ThirdParty/ANGLE/src/common/tls.h
+++ b/Source/ThirdParty/ANGLE/src/common/tls.h
@@ -14,7 +14,7 @@
 #ifdef ANGLE_PLATFORM_WINDOWS
 
 // TLS does not exist for Windows Store and needs to be emulated
-#    ifdef ANGLE_ENABLE_WINDOWS_STORE
+#    ifdef ANGLE_ENABLE_WINDOWS_UWP
 #        ifndef TLS_OUT_OF_INDEXES
 #            define TLS_OUT_OF_INDEXES static_cast<DWORD>(0xFFFFFFFF)
 #        endif
diff --git a/Source/ThirdParty/ANGLE/src/common/utilities.cpp b/Source/ThirdParty/ANGLE/src/common/utilities.cpp
index e463694..38ddd43 100644
--- a/Source/ThirdParty/ANGLE/src/common/utilities.cpp
+++ b/Source/ThirdParty/ANGLE/src/common/utilities.cpp
@@ -16,7 +16,7 @@
 
 #include <set>
 
-#if defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
 #    include <windows.applicationmodel.core.h>
 #    include <windows.graphics.display.h>
 #    include <wrl.h>
@@ -790,8 +790,11 @@
 std::string StripLastArrayIndex(const std::string &name)
 {
     size_t strippedNameLength = name.find_last_of('[');
-    ASSERT(strippedNameLength != std::string::npos && name.back() == ']');
-    return name.substr(0, strippedNameLength);
+    if (strippedNameLength != std::string::npos && name.back() == ']')
+    {
+        return name.substr(0, strippedNameLength);
+    }
+    return name;
 }
 
 const sh::ShaderVariable *FindShaderVarField(const sh::ShaderVariable &var,
@@ -1081,7 +1084,7 @@
 
 }  // namespace gl_egl
 
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
 std::string getTempPath()
 {
 #    ifdef ANGLE_PLATFORM_WINDOWS
@@ -1119,7 +1122,7 @@
     fwrite(content, sizeof(char), size, file);
     fclose(file);
 }
-#endif  // !ANGLE_ENABLE_WINDOWS_STORE
+#endif  // !ANGLE_ENABLE_WINDOWS_UWP
 
 #if defined(ANGLE_PLATFORM_WINDOWS)
 
diff --git a/Source/ThirdParty/ANGLE/src/common/utilities.h b/Source/ThirdParty/ANGLE/src/common/utilities.h
index a413a7e..e8df8fe 100644
--- a/Source/ThirdParty/ANGLE/src/common/utilities.h
+++ b/Source/ThirdParty/ANGLE/src/common/utilities.h
@@ -245,7 +245,7 @@
 EGLClientBuffer GLObjectHandleToEGLClientBuffer(GLuint handle);
 }  // namespace gl_egl
 
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
 std::string getTempPath();
 void writeFile(const char *path, const void *data, size_t size);
 #endif
diff --git a/Source/ThirdParty/ANGLE/src/compiler.gni b/Source/ThirdParty/ANGLE/src/compiler.gni
index fb7aac8..408c14b 100644
--- a/Source/ThirdParty/ANGLE/src/compiler.gni
+++ b/Source/ThirdParty/ANGLE/src/compiler.gni
@@ -2,6 +2,13 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+angle_translator_exported_headers = [
+  "include/GLSLANG/ShaderLang.h",
+  "include/GLSLANG/ShaderVars.h",
+  "src/compiler/translator/blocklayout.h",
+  "src/compiler/translator/blocklayoutHLSL.h",
+]
+
 angle_translator_sources = [
   "include/EGL/egl.h",
   "include/EGL/eglext.h",
@@ -13,8 +20,6 @@
   "include/GLES3/gl3platform.h",
   "include/GLES3/gl31.h",
   "include/GLES3/gl32.h",
-  "include/GLSLANG/ShaderLang.h",
-  "include/GLSLANG/ShaderVars.h",
   "include/KHR/khrplatform.h",
   "include/angle_gl.h",
   "src/compiler/translator/BaseTypes.h",
@@ -102,7 +107,6 @@
   "src/compiler/translator/VariablePacker.cpp",
   "src/compiler/translator/VariablePacker.h",
   "src/compiler/translator/blocklayout.cpp",
-  "src/compiler/translator/blocklayout.h",
   "src/compiler/translator/glslang.h",
   "src/compiler/translator/glslang_lex.cpp",
   "src/compiler/translator/glslang_tab.cpp",
@@ -247,7 +251,6 @@
   "src/compiler/translator/AtomicCounterFunctionHLSL.cpp",
   "src/compiler/translator/AtomicCounterFunctionHLSL.h",
   "src/compiler/translator/blocklayoutHLSL.cpp",
-  "src/compiler/translator/blocklayoutHLSL.h",
   "src/compiler/translator/BuiltInFunctionEmulatorHLSL.cpp",
   "src/compiler/translator/BuiltInFunctionEmulatorHLSL.h",
   "src/compiler/translator/OutputHLSL.cpp",
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.cpp
index 6185b37..aa25306 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/Compiler.cpp
@@ -384,7 +384,7 @@
 
     TParseContext parseContext(mSymbolTable, mExtensionBehavior, mShaderType, mShaderSpec,
                                compileOptions, !IsDesktopGLSpec(mShaderSpec), &mDiagnostics,
-                               getResources());
+                               getResources(), getOutputType());
 
     parseContext.setFragmentPrecisionHighOnESSL1(mResources.FragmentPrecisionHigh == 1);
 
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_ESSL_autogen.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_ESSL_autogen.cpp
index 17826cd..89500da 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_ESSL_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_ESSL_autogen.cpp
@@ -33,121 +33,121 @@
                               748,  1589, 354,  1029, 1042, 1181, 295,  513, 1068, 1237,
                               1019, 748,  1321, 485,  1211, 1623, 1586};
 constexpr int mangledkG[]  = {
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    1628,
-    0,    0,    0,    0,    0,    0,    0,    0,    943,  0,    0,    0,    0,    0,    0,    1793,
-    0,    0,    0,    0,    1601, 733,  0,    0,    0,    740,  0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    1160, 0,    0,    1093, 955,  0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    273,  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    1602, 0,    166,  0,    1389, 125,  0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    1629,
+    0,    0,    0,    0,    0,    0,    0,    0,    943,  0,    0,    0,    0,    0,    0,    1794,
+    0,    0,    0,    0,    1602, 732,  0,    0,    0,    740,  0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    1159, 0,    0,    1093, 957,  0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    272,  0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    1600, 0,    164,  0,    1390, 125,  0,    0,    0,    0,    0,
     0,    0,    0,    21,   0,    637,  0,    0,    0,    0,    520,  0,    0,    0,    0,    0,
-    0,    0,    0,    0,    597,  0,    0,    0,    197,  0,    0,    310,  0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    843,  0,    0,    901,  0,    1809, 1225, 0,    0,    654,
-    678,  0,    0,    0,    54,   1565, 0,    0,    0,    0,    0,    0,    0,    0,    1836, 0,
-    402,  1585, 0,    0,    0,    0,    0,    0,    0,    1539, 117,  382,  685,  0,    0,    1635,
-    604,  0,    0,    0,    518,  421,  0,    0,    0,    0,    1104, 584,  1779, 1065, 756,  0,
-    0,    0,    0,    0,    0,    1259, 0,    432,  0,    0,    1354, 0,    249,  884,  69,   0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    50,   1728, 0,    466,  48,
-    0,    0,    72,   271,  1583, 0,    0,    165,  0,    0,    0,    371,  1560, 0,    0,    0,
-    0,    1456, 0,    304,  0,    0,    0,    0,    0,    0,    842,  0,    0,    444,  132,  791,
-    0,    0,    0,    0,    0,    0,    1516, 162,  265,  0,    0,    0,    0,    0,    0,    0,
-    0,    0,    683,  0,    758,  0,    0,    75,   1703, 0,    0,    0,    0,    688,  767,  0,
-    1715, 0,    605,  0,    0,    1528, 1319, 0,    0,    0,    0,    0,    0,    0,    0,    507,
-    1774, 0,    0,    0,    1534, 471,  0,    426,  84,   0,    0,    0,    0,    0,    64,   1485,
-    0,    0,    0,    412,  555,  0,    0,    0,    1227, 0,    0,    0,    0,    0,    0,    0,
-    912,  0,    978,  0,    1312, 0,    0,    0,    0,    435,  0,    0,    0,    0,    308,  562,
-    0,    0,    0,    1355, 1110, 0,    0,    1663, 135,  1533, 0,    0,    662,  0,    1338, 0,
-    0,    57,   355,  0,    1365, 0,    1077, 0,    0,    312,  0,    0,    533,  551,  749,  730,
-    0,    0,    377,  0,    0,    0,    1406, 738,  0,    0,    0,    114,  0,    770,  0,    0,
-    0,    556,  113,  0,    440,  0,    0,    0,    0,    0,    1053, 98,   1640, 0,    0,    1619,
-    117,  398,  0,    281,  1481, 0,    0,    0,    0,    0,    0,    0,    0,    478,  0,    0,
-    532,  0,    367,  1751, 1515, 0,    0,    0,    0,    1064, 0,    0,    0,    642,  0,    27,
-    0,    444,  1619, 0,    0,    0,    0,    0,    0,    516,  0,    0,    0,    0,    698,  1219,
-    0,    130,  1356, 0,    326,  0,    0,    0,    0,    0,    655,  1786, 1228, 49,   1594, 909,
-    441,  709,  1703, 460,  0,    875,  0,    0,    0,    309,  0,    1060, 0,    753,  0,    0,
-    0,    335,  0,    0,    1207, 244,  0,    131,  154,  683,  448,  385,  903,  0,    0,    0,
-    334,  0,    0,    803,  0,    0,    0,    3,    0,    1037, 349,  1264, 258,  0,    1491, 0,
-    1634, 1472, 0,    0,    0,    0,    402,  805,  0,    0,    0,    0,    921,  0,    0,    0,
-    801,  0,    876,  0,    0,    0,    1540, 0,    0,    0,    0,    3,    1694, 745,  1691, 515,
-    1647, 717,  0,    516,  0,    0,    712,  0,    0,    197,  0,    0,    0,    0,    0,    1632,
-    17,   1809, 74,   0,    0,    501,  0,    594,  0,    18,   601,  117,  280,  0,    1200, 1832,
-    0,    0,    262,  1157, 0,    164,  0,    0,    0,    618,  494,  0,    0,    41,   336,  896,
-    0,    736,  0,    0,    0,    1759, 0,    0,    0,    0,    1123, 144,  0,    0,    0,    810,
-    392,  752,  1273, 538,  0,    0,    587,  0,    1553, 0,    987,  827,  26,   44,   187,  8,
-    0,    113,  392,  1580, 866,  0,    927,  1535, 1780, 1760, 200,  0,    0,    1105, 989,  0,
-    474,  0,    873,  0,    0,    558,  0,    42,   0,    0,    882,  1600, 818,  817,  377,  0,
-    328,  0,    0,    0,    385,  1665, 0,    0,    0,    500,  0,    0,    1135, 414,  0,    0,
-    407,  0,    343,  454,  0,    255,  314,  1347, 1755, 0,    0,    0,    1762, 0,    619,  329,
-    1160, 0,    0,    0,    0,    0,    1757, 0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    831,  491,  0,    0,    1351, 598,  157,  0,    0,    0,    0,    0,    1194, 135,
-    606,  0,    0,    0,    0,    0,    245,  0,    726,  0,    0,    204,  0,    0,    0,    1776,
-    0,    0,    0,    0,    381,  161,  1832, 34,   39,   0,    0,    445,  0,    190,  0,    379,
-    1485, 1276, 1792, 0,    376,  650,  375,  6,    0,    1052, 0,    290,  0,    1674, 0,    0,
-    1481, 0,    60,   1087, 928,  0,    0,    0,    782,  563,  31,   728,  257,  0,    1608, 0,
-    0,    958,  1532, 1227, 0,    0,    0,    0,    0,    0,    0,    392,  0,    666,  0,    0,
-    319,  903,  507,  0,    0,    971,  903,  0,    13,   683,  1534, 0,    406,  0,    1254, 0,
-    0,    302,  722,  0,    0,    162,  950,  313,  356,  0,    475,  1470, 1736, 169,  0,    694,
-    111,  46,   58,   747,  1433, 0,    1765, 0,    646,  0,    503,  115,  715,  1497, 0,    1507,
-    349,  0,    678,  447,  205,  0,    0,    0,    0,    563,  0,    1577, 0,    192,  0,    0,
-    5,    0,    596,  0,    0,    0,    0,    0,    214,  0,    501,  1456, 28,   0,    0,    904,
-    0,    776,  0,    0,    1703, 910,  1732, 0,    856,  0,    0,    236,  1611, 503,  0,    0,
-    0,    339,  274,  0,    552,  0,    1462, 772,  282,  0,    0,    595,  0,    204,  487,  0,
-    1651, 0,    551,  0,    0,    702,  1610, 589,  0,    0,    175,  285,  351,  0,    113,  1091,
-    802,  0,    755,  0,    0,    1805, 294,  0,    0,    0,    0,    0,    0,    0,    0,    0,
-    237,  0,    0,    338,  0,    149,  1254, 0,    947,  302,  0,    0,    310,  0,    1750, 0,
-    0,    830,  1681, 322,  0,    73,   370,  100,  188,  1323, 0,    0,    0,    920,  0,    0,
-    1839, 1218, 0,    1494, 1364, 0,    0,    0,    791,  542,  1611, 1741, 838,  114,  1500, 0,
-    0,    0,    0,    506,  1299, 982,  885,  12,   1649, 753,  0,    261,  0,    51,   0,    640,
-    0,    0,    1347, 442,  532,  0,    731,  0,    0,    1033, 0,    42,   0,    0,    0,    0,
-    78,   1073, 169,  414,  1236, 0,    1392, 0,    0,    0,    852,  359,  1586, 935,  0,    0,
-    1072, 628,  0,    1546, 0,    0,    1471, 608,  557,  0,    0,    1277, 1681, 686,  309,  0,
-    0,    0,    0,    617,  244,  0,    0,    423,  629,  0,    866,  672,  0,    772,  0,    133,
-    1409, 0,    707,  203,  820,  103,  1529, 146,  0,    1042, 771,  58,   372,  102,  10,   105,
-    154,  28,   0,    0,    0,    683,  389,  207,  0,    0,    837,  1470, 416,  0,    373,  0,
-    0,    0,    0,    1764, 232,  252,  0,    837,  0,    0,    1762, 0,    1765, 0,    146,  0,
-    1133, 656,  592,  0,    259,  0,    735,  0,    1361, 0,    0,    410,  1211, 788,  440,  0,
-    0,    842,  1480, 291,  944,  559,  0,    1403, 931,  0,    1493, 1761, 0,    0,    386,  0,
-    0,    0,    0,    349,  0,    652,  572,  489,  611,  51,   0,    0,    35,   537,  1183, 188,
-    754,  227,  0,    489,  0,    1427, 0,    0,    696,  29,   0,    1364, 65,   438,  1086, 1378,
-    0,    1757, 76,   0,    400,  337,  0,    412,  0,    965,  136,  668,  1174, 0,    23,   0,
-    774,  433,  115,  459,  0,    811,  0,    0,    0,    1191, 950,  81,   0,    0,    710,  995,
-    0,    1515, 718,  549,  634,  616,  775,  0,    447,  0,    0,    38,   437,  624,  0,    0,
-    0,    706,  0,    0,    0,    1755, 640,  0,    134,  1461, 0,    676,  363,  105,  348,  162,
-    0,    0,    685,  0,    0,    379,  1381, 1189, 0,    595,  654,  465,  0,    0,    528,  817,
-    554,  0,    0,    0,    0,    398,  428,  903,  479,  980,  1287, 1631, 0,    626,  493,  19,
-    0,    0,    582,  0,    1688, 251,  652,  0,    173,  543,  0,    0,    0,    0,    0,    1040,
-    0,    0,    0,    0,    978,  359,  0,    0,    376,  1288, 519,  0,    1092, 1598, 875,  819,
-    88,   1614, 1157, 385,  0,    782,  1635, 996,  0,    1535, 132,  0,    0,    919,  0,    13,
-    523,  382,  0,    0,    0,    150,  0,    0,    1135, 99,   357,  0,    0,    600,  460,  193,
-    281,  0,    1518, 0,    1187, 1149, 237,  0,    881,  0,    0,    144,  784,  145,  371,  828,
-    1378, 6,    1705, 0,    0,    79,   0,    170,  0,    0,    36,   0,    0,    767,  703,  0,
-    0,    488,  86,   427,  393,  0,    57,   671,  739,  0,    875,  70,   553,  0,    557,  828,
-    0,    34,   319,  0,    860,  359,  0,    634,  1727, 370,  230,  1655, 0,    1746, 24,   741,
-    0,    673,  467,  0,    0,    450,  0,    699,  905,  0,    871,  75,   0,    0,    0,    0,
-    1203, 0,    795,  922,  851,  0,    0,    0,    1475, 1098, 0,    1231, 0,    0,    1597, 278,
-    0,    0,    104,  501,  1416, 0,    0,    679,  1375, 0,    424,  0,    0,    1210, 0,    304,
-    0,    112,  977,  1301, 139,  33,   0,    456,  0,    841,  283,  1117, 0,    1119, 1721, 897,
-    1726, 0,    945,  699,  0,    684,  825,  1706, 804,  799,  635,  679,  0,    0,    0,    0,
-    0,    0,    0,    1211, 269,  0,    1687, 1583, 0,    259,  0,    0,    938,  1211, 0,    0,
-    0,    1807, 1657, 116,  1822, 0,    0,    1633, 938,  928,  1268, 201,  782,  315,  0,    482,
-    128,  1021, 0,    449,  822,  484,  224,  1791, 0,    677,  0,    0,    1267, 0,    0,    0,
-    584,  0,    0,    509,  354,  43,   0,    1590, 222,  0,    30,   830,  0,    179,  0,    0,
-    0,    607,  0,    140,  0,    0,    0,    378,  84,   0,    322,  1545, 1241, 0,    1578, 828,
-    336,  154,  0,    19,   854,  309,  1145, 0,    0,    1819, 0,    602,  422,  0,    0,    1719,
-    818,  0,    0,    141,  0,    0,    1600, 153,  1650, 0,    780,  932,  0,    0,    1386, 295,
-    97,   153,  801,  1303, 81,   1198, 0,    81,   1143, 0,    646,  544,  750,  435,  444,  339,
-    0,    0,    39,   0,    0,    892,  794,  0,    177,  0,    850,  1745, 476,  0,    0,    691,
-    0,    1288, 1520, 1590, 0,    0,    0,    147,  846,  89,   0,    0,    622,  92,   763,  0,
-    0,    1668, 0,    1820, 714,  958,  0,    725,  432,  669,  657,  510,  0,    303,  279,  0,
-    1195, 0,    109,  973,  887,  1302, 0,    1748, 917,  811,  635,  1205, 0,    1358, 1555, 1730,
-    531,  583,  0,    443,  395,  0,    888,  0,    1634, 0,    120,  0,    530,  0,    0,    275,
-    796,  0,    357,  82,   886,  870,  332,  852,  0,    1336, 38,   441,  68,   1411, 228,  387,
-    0,    103,  0,    0,    1646, 431,  910,  0,    0,    0,    0,    0,    115,  674,  831,  815,
-    0,    1288, 888,  1697, 394,  0,    0,    0,    260,  570,  0,    790,  265,  163,  0,    0,
-    0,    442,  436,  722,  316,  688,  605,  1658, 885,  634,  0,    1398, 1340, 166,  1826, 1438,
-    215,  463,  0,    0,    445,  936,  129,  0,    774,  664,  48,   0,    22,   133,  0,    406,
-    70,   651,  46,   0,    175,  340,  400,  0,    0,    0,    1075, 1316, 420,  0,    1592, 1347,
-    0,    9,    0,    1387, 513,  1198, 1655, 0,    0,    0,    1063, 421,  701,  179,  0,    572,
-    1712, 0,    1506, 1728, 0,    744,  404,  1102, 0,    1421, 865,  1551, 0,    1717, 0,    0,
+    0,    0,    0,    0,    596,  0,    0,    0,    196,  0,    0,    311,  0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    843,  0,    0,    901,  0,    1805, 1223, 0,    0,    652,
+    676,  0,    0,    0,    53,   1565, 0,    0,    0,    0,    0,    0,    0,    0,    1833, 0,
+    402,  1585, 0,    0,    0,    0,    0,    0,    0,    1540, 116,  380,  684,  0,    0,    1637,
+    603,  0,    0,    0,    518,  420,  0,    0,    0,    0,    1104, 583,  1779, 1064, 756,  0,
+    0,    0,    0,    0,    0,    1259, 0,    430,  0,    0,    1355, 0,    247,  887,  69,   0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    49,   1726, 0,    804,  48,
+    0,    0,    76,   270,  1581, 0,    0,    165,  0,    0,    0,    369,  1557, 0,    0,    0,
+    0,    1455, 0,    305,  0,    0,    0,    0,    0,    0,    842,  0,    0,    443,  131,  791,
+    0,    0,    0,    0,    0,    0,    1514, 161,  267,  0,    0,    0,    0,    0,    0,    0,
+    0,    0,    686,  0,    758,  0,    0,    77,   1703, 0,    0,    0,    0,    688,  766,  0,
+    1717, 0,    605,  0,    0,    1527, 1321, 0,    0,    0,    0,    0,    0,    0,    0,    505,
+    1772, 0,    0,    0,    1534, 472,  0,    426,  84,   0,    0,    0,    0,    0,    66,   1486,
+    0,    0,    0,    413,  555,  0,    0,    0,    1228, 0,    0,    0,    0,    0,    0,    0,
+    912,  0,    975,  0,    1312, 0,    0,    0,    0,    431,  0,    0,    0,    0,    308,  568,
+    0,    0,    0,    1351, 1110, 0,    0,    1664, 135,  224,  0,    0,    662,  0,    1337, 0,
+    0,    57,   354,  0,    1370, 0,    1076, 0,    0,    313,  0,    0,    532,  551,  751,  735,
+    0,    0,    375,  0,    0,    0,    1406, 738,  0,    0,    0,    114,  0,    770,  0,    0,
+    0,    556,  109,  0,    442,  0,    0,    0,    0,    0,    1051, 99,   1640, 0,    0,    1622,
+    117,  397,  0,    281,  1479, 0,    0,    0,    0,    0,    0,    0,    0,    476,  0,    0,
+    532,  0,    365,  1745, 1515, 0,    0,    0,    0,    1066, 0,    0,    0,    642,  0,    32,
+    0,    443,  1620, 0,    0,    0,    0,    0,    0,    512,  0,    0,    0,    0,    699,  1220,
+    0,    130,  1361, 0,    324,  0,    0,    0,    0,    0,    656,  1786, 1227, 49,   1594, 911,
+    440,  709,  1702, 458,  0,    868,  0,    0,    0,    311,  0,    1060, 0,    750,  0,    0,
+    0,    335,  0,    0,    1203, 244,  0,    1440, 156,  683,  446,  387,  903,  0,    0,    0,
+    332,  0,    0,    803,  0,    0,    0,    3,    0,    1037, 351,  1263, 256,  0,    1492, 0,
+    1634, 1471, 0,    0,    0,    0,    400,  804,  0,    0,    0,    0,    921,  0,    0,    0,
+    800,  0,    876,  0,    0,    0,    1541, 0,    0,    0,    0,    3,    1691, 746,  1690, 515,
+    1653, 717,  0,    520,  0,    0,    711,  0,    0,    196,  0,    0,    0,    0,    0,    1633,
+    17,   1809, 73,   0,    0,    503,  0,    594,  0,    18,   601,  115,  280,  0,    1198, 1832,
+    0,    0,    261,  1157, 0,    164,  0,    0,    0,    618,  492,  0,    0,    41,   334,  900,
+    0,    735,  0,    0,    0,    1759, 0,    0,    0,    0,    1122, 144,  0,    0,    0,    810,
+    390,  752,  1273, 537,  0,    0,    583,  0,    1554, 0,    981,  827,  26,   42,   186,  8,
+    0,    113,  393,  1581, 866,  0,    925,  1537, 1780, 1760, 199,  0,    0,    1105, 991,  0,
+    474,  0,    871,  0,    0,    558,  0,    41,   0,    0,    883,  1597, 818,  813,  375,  0,
+    327,  0,    0,    0,    387,  1663, 0,    0,    0,    497,  0,    0,    1133, 412,  0,    0,
+    405,  0,    341,  452,  0,    254,  313,  1347, 1755, 0,    0,    0,    1762, 0,    619,  331,
+    1159, 0,    0,    0,    0,    0,    1757, 0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    832,  492,  0,    0,    1351, 598,  157,  0,    0,    0,    0,    0,    1191, 135,
+    606,  0,    0,    0,    0,    0,    244,  0,    726,  0,    0,    204,  0,    0,    0,    1772,
+    0,    0,    0,    0,    379,  160,  1831, 34,   39,   0,    0,    446,  0,    189,  0,    381,
+    1488, 1276, 1792, 0,    375,  650,  375,  6,    0,    1051, 0,    289,  0,    1673, 0,    0,
+    1485, 0,    57,   1086, 928,  0,    0,    0,    783,  563,  31,   728,  256,  0,    1607, 0,
+    0,    955,  1530, 1227, 0,    0,    0,    0,    0,    0,    0,    390,  0,    666,  0,    0,
+    320,  896,  505,  0,    0,    971,  901,  0,    14,   682,  1529, 0,    408,  0,    1253, 0,
+    0,    301,  723,  0,    0,    162,  949,  312,  354,  0,    473,  1470, 1737, 169,  0,    694,
+    111,  43,   58,   742,  1431, 0,    1766, 0,    646,  0,    500,  115,  715,  1499, 0,    1508,
+    350,  0,    678,  445,  204,  0,    0,    0,    0,    563,  0,    1575, 0,    196,  0,    0,
+    5,    0,    596,  0,    0,    0,    0,    0,    218,  0,    499,  1456, 28,   0,    0,    904,
+    0,    776,  0,    0,    1701, 909,  1735, 0,    856,  0,    0,    235,  1610, 501,  0,    0,
+    0,    337,  273,  0,    552,  0,    1460, 772,  281,  0,    0,    596,  0,    203,  486,  0,
+    1652, 0,    552,  0,    0,    701,  1609, 587,  0,    0,    175,  284,  350,  0,    112,  1091,
+    802,  0,    759,  0,    0,    1805, 293,  0,    0,    0,    0,    0,    0,    0,    0,    0,
+    239,  0,    0,    336,  0,    149,  1253, 0,    947,  301,  0,    0,    309,  0,    1748, 0,
+    0,    830,  1684, 323,  0,    73,   368,  100,  187,  1321, 0,    0,    0,    920,  0,    0,
+    1839, 1217, 0,    1492, 1365, 0,    0,    0,    794,  542,  1605, 1741, 838,  120,  1498, 0,
+    0,    0,    0,    504,  1300, 979,  885,  12,   1649, 753,  0,    260,  0,    51,   0,    640,
+    0,    0,    1347, 440,  534,  0,    731,  0,    0,    1030, 0,    42,   0,    0,    0,    0,
+    78,   1075, 168,  415,  1236, 0,    1389, 0,    0,    0,    853,  360,  1583, 933,  0,    0,
+    1072, 628,  0,    1544, 0,    0,    1469, 608,  558,  0,    0,    1277, 1679, 686,  310,  0,
+    0,    0,    0,    618,  243,  0,    0,    421,  629,  0,    865,  672,  0,    772,  0,    127,
+    1408, 0,    708,  202,  822,  103,  1528, 146,  0,    1044, 771,  58,   373,  102,  10,   105,
+    154,  28,   0,    0,    0,    683,  387,  206,  0,    0,    837,  1468, 414,  0,    371,  0,
+    0,    0,    0,    1765, 231,  251,  0,    837,  0,    0,    1763, 0,    1763, 0,    146,  0,
+    1135, 656,  593,  0,    258,  0,    733,  0,    1361, 0,    0,    411,  1206, 788,  438,  0,
+    0,    841,  1479, 290,  943,  559,  0,    1401, 931,  0,    1494, 1764, 0,    0,    384,  0,
+    0,    0,    0,    347,  0,    652,  573,  489,  607,  52,   0,    0,    35,   537,  1182, 190,
+    754,  226,  0,    487,  0,    1429, 0,    0,    696,  29,   0,    1363, 65,   436,  1086, 1379,
+    0,    1757, 76,   0,    401,  335,  0,    410,  0,    965,  136,  668,  1174, 0,    23,   0,
+    774,  431,  112,  457,  0,    811,  0,    0,    0,    1189, 952,  81,   0,    0,    710,  995,
+    0,    1515, 718,  549,  634,  616,  775,  0,    449,  0,    0,    39,   435,  624,  0,    0,
+    0,    706,  0,    0,    0,    1755, 640,  0,    134,  1459, 0,    676,  361,  105,  347,  164,
+    0,    0,    685,  0,    0,    377,  1381, 1188, 0,    594,  654,  463,  0,    0,    528,  817,
+    554,  0,    0,    0,    0,    396,  430,  902,  477,  980,  1287, 1631, 0,    626,  491,  19,
+    0,    0,    582,  0,    1535, 250,  652,  0,    172,  543,  0,    0,    0,    0,    0,    1041,
+    0,    0,    0,    0,    977,  359,  0,    0,    374,  1287, 517,  0,    1090, 1599, 875,  820,
+    88,   1613, 1156, 383,  0,    784,  1636, 999,  0,    1535, 131,  0,    0,    917,  0,    13,
+    522,  380,  0,    0,    0,    149,  0,    0,    1136, 100,  357,  0,    0,    600,  460,  191,
+    280,  0,    1520, 0,    1191, 1149, 237,  0,    881,  0,    0,    143,  784,  145,  369,  828,
+    1377, 3,    1701, 0,    0,    78,   0,    169,  0,    0,    36,   0,    0,    767,  703,  0,
+    0,    486,  86,   425,  391,  0,    57,   671,  740,  0,    872,  70,   553,  0,    557,  827,
+    0,    34,   320,  0,    860,  360,  0,    634,  1724, 372,  229,  1653, 0,    1747, 20,   741,
+    0,    673,  465,  0,    0,    448,  0,    699,  905,  0,    871,  74,   0,    0,    0,    0,
+    1200, 0,    795,  922,  851,  0,    0,    0,    1477, 1099, 0,    1226, 0,    0,    1596, 277,
+    0,    0,    104,  499,  1414, 0,    0,    679,  1376, 0,    422,  0,    0,    1209, 0,    303,
+    0,    112,  976,  1296, 139,  33,   0,    454,  0,    841,  283,  1117, 0,    1119, 1722, 897,
+    1726, 0,    946,  699,  0,    684,  824,  1707, 808,  799,  635,  679,  0,    0,    0,    0,
+    0,    0,    0,    1213, 268,  0,    1689, 1582, 0,    261,  0,    0,    939,  1208, 0,    0,
+    0,    1806, 1658, 118,  1826, 0,    0,    1633, 940,  928,  1269, 200,  782,  314,  0,    480,
+    126,  1021, 0,    447,  822,  486,  224,  1791, 0,    677,  0,    0,    1265, 0,    0,    0,
+    584,  0,    0,    507,  353,  43,   0,    1589, 221,  0,    30,   830,  0,    178,  0,    0,
+    0,    608,  0,    140,  0,    0,    0,    376,  84,   0,    321,  1548, 1242, 0,    1579, 828,
+    334,  153,  0,    15,   854,  308,  1144, 0,    0,    1818, 0,    606,  422,  0,    0,    1725,
+    822,  0,    0,    141,  0,    0,    1600, 153,  1648, 0,    780,  932,  0,    0,    1385, 297,
+    97,   153,  801,  1303, 81,   1198, 0,    77,   1142, 0,    646,  544,  750,  433,  442,  340,
+    0,    0,    38,   0,    0,    892,  794,  0,    176,  0,    850,  1742, 478,  0,    0,    685,
+    0,    1289, 1518, 1590, 0,    0,    0,    147,  845,  89,   0,    0,    622,  92,   763,  0,
+    0,    1667, 0,    1821, 714,  959,  0,    725,  433,  669,  657,  508,  0,    302,  278,  0,
+    1195, 0,    109,  974,  887,  1302, 0,    1745, 912,  810,  635,  1205, 0,    1357, 1556, 1729,
+    529,  585,  0,    443,  397,  0,    887,  0,    1633, 0,    120,  0,    530,  0,    0,    274,
+    796,  0,    355,  82,   886,  870,  331,  852,  0,    1336, 38,   439,  68,   1413, 560,  385,
+    0,    99,   0,    0,    1641, 431,  910,  0,    0,    0,    0,    0,    115,  673,  831,  815,
+    0,    1286, 888,  1698, 396,  0,    0,    0,    259,  565,  0,    790,  264,  162,  0,    0,
+    0,    444,  434,  722,  315,  685,  609,  1660, 884,  635,  0,    1400, 1339, 166,  1825, 1432,
+    214,  461,  0,    0,    443,  936,  129,  0,    773,  664,  48,   0,    22,   133,  0,    404,
+    70,   651,  46,   0,    174,  342,  398,  0,    0,    0,    1074, 1316, 418,  0,    1593, 1347,
+    0,    9,    0,    1386, 513,  1200, 1655, 0,    0,    0,    1064, 419,  701,  179,  0,    572,
+    1712, 0,    1509, 1729, 0,    744,  402,  1101, 0,    1419, 865,  1549, 0,    1715, 0,    0,
     0};
 
 int MangledHashG(const char *key, const int *T)
@@ -175,19 +175,19 @@
 constexpr int unmangledkT2[] = {159, 88, 35,  79,  181, 132, 45,  85, 237, 60,  14,  103, 116,
                                 85,  78, 164, 123, 28,  85,  167, 46, 29,  204, 166, 227, 102};
 constexpr int unmangledkG[]  = {
-    0,   0,   0,   0,   0,   0,   83,  0,   0,   0,   145, 0,   0,   0,   0,   0,   0,   9,   4,
-    0,   230, 0,   0,   126, 0,   0,   0,   64,  41,  0,   217, 0,   71,  0,   0,   224, 0,   14,
-    0,   28,  9,   140, 0,   184, 0,   195, 0,   0,   0,   0,   4,   0,   0,   100, 110, 65,  96,
-    0,   144, 0,   0,   69,  0,   197, 4,   6,   47,  162, 0,   125, 56,  149, 0,   22,  30,  138,
-    21,  0,   115, 33,  0,   104, 0,   233, 59,  0,   0,   78,  176, 0,   0,   142, 175, 107, 76,
-    33,  75,  3,   0,   222, 8,   97,  0,   143, 7,   35,  0,   0,   0,   0,   147, 230, 50,  0,
-    0,   0,   174, 123, 26,  192, 109, 23,  66,  195, 214, 0,   157, 0,   115, 1,   0,   167, 146,
-    233, 53,  185, 0,   186, 60,  210, 124, 217, 234, 0,   44,  222, 232, 112, 0,   135, 32,  236,
-    161, 0,   60,  20,  61,  28,  0,   0,   0,   98,  0,   0,   68,  197, 44,  0,   73,  68,  18,
-    67,  0,   6,   131, 0,   0,   0,   78,  109, 20,  114, 37,  25,  201, 110, 87,  72,  149, 63,
-    153, 0,   36,  104, 0,   100, 145, 126, 148, 118, 47,  0,   72,  0,   0,   147, 48,  209, 63,
-    28,  75,  79,  169, 0,   0,   32,  201, 92,  79,  130, 0,   0,   0,   98,  197, 0,   52,  181,
-    25,  0,   8,   150, 0,   224, 0,   5,   16,  40};
+    0,   0,   0,   0,   0,   0,   79,  0,   0,   0,   147, 0,   0,   0,   0,   0,   0,   8,   1,
+    0,   228, 0,   0,   128, 0,   0,   0,   64,  42,  0,   218, 0,   70,  0,   0,   222, 0,   14,
+    0,   28,  9,   139, 0,   188, 0,   195, 0,   0,   0,   0,   1,   0,   0,   101, 109, 65,  96,
+    0,   143, 0,   0,   69,  0,   195, 5,   6,   49,  163, 0,   124, 56,  151, 0,   20,  30,  136,
+    20,  0,   117, 31,  0,   100, 0,   234, 59,  0,   0,   78,  178, 0,   0,   142, 176, 104, 75,
+    34,  74,  2,   0,   219, 8,   100, 0,   144, 6,   36,  0,   0,   0,   0,   147, 231, 50,  0,
+    0,   0,   171, 126, 26,  192, 107, 22,  66,  197, 215, 0,   156, 0,   114, 2,   0,   167, 146,
+    233, 52,  186, 0,   183, 60,  210, 126, 217, 232, 0,   44,  225, 232, 110, 0,   137, 32,  235,
+    161, 0,   59,  20,  64,  26,  0,   0,   0,   97,  0,   0,   67,  197, 44,  0,   74,  67,  16,
+    67,  0,   8,   131, 0,   0,   0,   75,  108, 22,  114, 37,  25,  202, 108, 86,  72,  148, 62,
+    148, 0,   36,  103, 0,   99,  147, 125, 148, 117, 47,  0,   73,  0,   0,   147, 47,  210, 64,
+    27,  71,  126, 168, 0,   0,   31,  204, 92,  78,  130, 0,   0,   0,   96,  196, 0,   52,  181,
+    25,  0,   8,   147, 0,   228, 0,   5,   15,  40};
 
 int UnmangledHashG(const char *key, const int *T)
 {
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_autogen.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_autogen.cpp
index 6283f6d..8c68483 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/ImmutableString_autogen.cpp
@@ -52,7 +52,7 @@
     2621, 727,  1889, 0,    0,    144,  0,    649,  0,    0,    0,    0,    0,    816,  3127, 73,
     0,    0,    0,    2194, 0,    0,    0,    0,    2623, 0,    0,    0,    1887, 3126, 0,    0,
     0,    0,    0,    0,    0,    3112, 0,    0,    0,    0,    0,    0,    3080, 0,    0,    3523,
-    0,    2651, 0,    0,    0,    2927, 0,    237,  0,    0,    0,    1720, 1511, 0,    2787, 0,
+    0,    2651, 0,    0,    0,    2927, 0,    237,  0,    0,    0,    1720, 1511, 0,    1036, 0,
     592,  0,    0,    3123, 0,    0,    0,    0,    0,    241,  0,    0,    1919, 0,    753,  0,
     35,   537,  0,    0,    0,    0,    0,    1744, 0,    2854, 1643, 229,  0,    1554, 0,    0,
     2594, 1801, 3855, 0,    183,  1341, 3695, 2786, 0,    3079, 0,    0,    512,  0,    0,    0,
@@ -78,10 +78,10 @@
     0,    266,  0,    0,    0,    2054, 1579, 0,    3326, 0,    324,  461,  0,    1083, 0,    0,
     0,    0,    2305, 440,  0,    0,    500,  0,    0,    1593, 1608, 0,    2781, 0,    0,    0,
     117,  0,    0,    2483, 81,   0,    0,    1099, 0,    0,    0,    1735, 0,    0,    77,   3630,
-    442,  0,    953,  0,    0,    0,    1008, 0,    0,    2223, 2435, 0,    0,    0,    0,    3383,
+    442,  0,    953,  0,    0,    0,    1008, 0,    0,    2157, 2435, 0,    0,    0,    0,    3383,
     0,    0,    1831, 0,    1706, 0,    0,    1138, 0,    0,    986,  0,    0,    0,    0,    0,
     0,    0,    122,  0,    3583, 0,    0,    1614, 0,    0,    0,    0,    0,    0,    1310, 0,
-    2951, 701,  0,    0,    0,    0,    0,    0,    0,    0,    0,    395,  1079, 62,   2225, 3234,
+    2951, 701,  0,    0,    0,    0,    0,    0,    0,    0,    0,    395,  393,  62,   2225, 3234,
     0,    0,    0,    2073, 1818, 1528, 0,    0,    2075, 0,    0,    0,    108,  0,    0,    0,
     163,  577,  2191, 0,    1584, 0,    1427, 0,    88,   0,    0,    0,    2008, 3483, 0,    0,
     2028, 0,    8,    0,    0,    0,    0,    0,    0,    3881, 0,    916,  271,  0,    1985, 0,
@@ -157,23 +157,23 @@
     0,    543,  1790, 634,  478,  861,  0,    2464, 0,    0,    1564, 1929, 1773, 3584, 0,    71,
     0,    848,  1673, 1381, 317,  3866, 101,  0,    469,  0,    0,    0,    498,  463,  3719, 1592,
     0,    0,    0,    1317, 603,  0,    2198, 791,  1968, 3849, 2474, 241,  17,   3513, 0,    849,
-    168,  0,    502,  0,    839,  0,    0,    1481, 0,    73,   1763, 0,    0,    0,    3639, 1161,
+    168,  0,    502,  0,    839,  0,    0,    1415, 0,    73,   1763, 0,    0,    0,    3639, 1161,
     713,  470,  0,    0,    0,    3706, 1738, 1791, 0,    3482, 0,    137,  2122, 0,    58,   1105,
-    1526, 441,  2774, 0,    1826, 1279, 0,    0,    3798, 1528, 1621, 0,    0,    3048, 0,    3261,
+    1526, 441,  2774, 0,    1826, 1279, 0,    0,    3798, 1528, 2307, 0,    0,    3048, 0,    3261,
     0,    1615, 821,  1539, 0,    0,    590,  0,    3483, 0,    0,    0,    1589, 0,    0,    0,
     740,  1158, 3256, 1332, 0,    0,    0,    2791, 863,  0,    1453, 0,    128,  0,    0,    0,
     0,    0,    1208, 1876, 0,    3308, 861,  1277, 856,  0,    0,    1066, 0,    0,    680,  0,
     2315, 481,  3805, 1823, 3491, 746,  0,    3342, 3260, 1561, 0,    712,  2715, 3390, 0,    0,
     0,    227,  0,    1197, 0,    3353, 899,  0,    649,  0,    0,    0,    0,    3180, 1566, 2808,
     2968, 378,  0,    0,    354,  1184, 1530, 0,    0,    2487, 2817, 0,    0,    3049, 1383, 2965,
-    2072, 1093, 0,    102,  3190, 0,    103,  0,    0,    923,  27,   935,  852,  1742, 0,    3306,
+    2072, 1093, 0,    102,  3190, 0,    103,  0,    0,    923,  27,   935,  852,  1742, 0,    1039,
     993,  3329, 0,    1355, 0,    2356, 0,    769,  543,  2817, 991,  3408, 159,  1745, 0,    1520,
     0,    56,   0,    0,    0,    0,    2086, 2808, 2361, 2721, 0,    1206, 2877, 2603, 0,    0,
     0,    2995, 3614, 2812, 3401, 2773, 0,    1996, 2748, 0,    0,    0,    0,    0,    0,    524,
     642,  1548, 0,    1731, 2972, 0,    4003, 0,    892,  3770, 0,    1524, 0,    0,    446,  0,
     3611, 1190, 3711, 3711, 2827, 1257, 44,   2957, 0,    1945, 3877, 625,  0,    0,    0,    0,
     0,    108,  0,    1622, 0,    0,    2604, 3567, 0,    1015, 1246, 572,  938,  3808, 1985, 267,
-    0,    2282, 0,    0,    1657, 226,  0,    2482, 1883, 0,    3220, 1822, 0,    239,  0,    80,
+    0,    2184, 0,    0,    1657, 226,  0,    2482, 1883, 0,    3220, 1822, 0,    239,  0,    80,
     1258, 0,    0,    0,    750,  2117, 2768, 0,    0,    799,  3610, 329,  0,    1341, 2145, 120,
     1345, 3772, 0,    402,  0,    0,    781,  0,    1163, 902,  1267, 3578, 0,    700,  179,  3471,
     3531, 581,  3388, 2819, 3887, 0,    1056, 1783, 0,    1787, 0,    1699, 0,    1374, 2477, 0,
@@ -188,19 +188,19 @@
     1779, 1038, 0,    0,    135,  3114, 1497, 1682, 0,    117,  0,    1261, 0,    0,    1184, 3025,
     0,    0,    1690, 489,  0,    0,    0,    0,    2979, 0,    0,    1039, 0,    3872, 857,  2869,
     2513, 0,    2323, 1110, 3304, 0,    0,    1170, 0,    329,  16,   0,    0,    699,  1414, 2975,
-    994,  0,    531,  0,    1808, 0,    0,    447,  1685, 3792, 1719, 1989, 3593, 3503, 3904, 1951,
+    994,  0,    531,  0,    1808, 0,    0,    447,  1685, 3792, 1719, 1989, 3659, 3503, 3904, 1951,
     3780, 505,  2839, 1179, 2024, 3292, 1114, 1678, 3469, 0,    0,    2092, 0,    0,    0,    2204,
     0,    3330, 0,    461,  2763, 190,  0,    3636, 1969, 3,    2863, 0,    1079, 281,  0,    0,
     0,    1946, 0,    0,    1062, 450,  0,    0,    880,  0,    2990, 0,    75,   0,    3774, 71,
     0,    3748, 1127, 0,    0,    3951, 399,  0,    1288, 37,   0,    3439, 2714, 0,    2479, 3482,
     192,  1377, 0,    738,  0,    1632, 293,  2081, 0,    931,  2848, 0,    3845, 1328, 3929, 0,
     1369, 197,  149,  2756, 0,    7,    3461, 0,    1920, 1237, 549,  135,  1748, 0,    0,    2006,
-    591,  1390, 729,  3868, 587,  0,    1482, 641,  2858, 1074, 0,    932,  0,    0,    2535, 0,
+    591,  1390, 729,  3868, 587,  0,    1482, 641,  591,  1074, 0,    932,  0,    0,    2535, 0,
     0,    182,  171,  0,    0,    667,  984,  1529, 0,    2937, 0,    0,    2193, 0,    0,    3610,
     1997, 0,    126,  2103, 1165, 2082, 0,    3114, 0,    0,    0,    0,    924,  411,  0,    66,
     0,    0,    605,  2243, 1055, 1704, 0,    0,    0,    539,  3756, 395,  952,  218,  0,    720,
     3824, 0,    0,    1447, 0,    916,  486,  1758, 3985, 517,  649,  1784, 0,    0,    3121, 3241,
-    105,  0,    0,    3442, 1273, 0,    0,    1390, 0,    0,    1347, 620,  289,  3713, 1388, 1657,
+    105,  0,    0,    3442, 1273, 0,    0,    1390, 0,    0,    1347, 98,   289,  3713, 1388, 1657,
     1122, 209,  430,  0,    43,   0,    1525, 3879, 0,    0,    0,    300,  3466, 0,    2368, 0,
     2032, 3813, 0,    2105, 1522, 0,    0,    1268, 1144, 2115, 0,    921,  3337, 0,    441,  0,
     1964, 0,    0,    0,    0,    0,    3160, 2383, 0,    0,    1507, 1631, 0,    3796, 0,    0,
@@ -209,11 +209,11 @@
     19,   1641, 1308, 1391, 2326, 1061, 1453, 0,    0,    1580, 3202, 3039, 3829, 3087, 0,    994,
     0,    2557, 0,    2499, 0,    0,    932,  0,    1018, 1171, 2046, 1425, 0,    0,    2898, 63,
     2696, 3946, 1900, 3497, 0,    0,    1824, 3810, 0,    436,  1116, 1464, 482,  0,    168,  1959,
-    283,  3642, 1890, 0,    3347, 3389, 0,    0,    1795, 1699, 1916, 3783, 0,    1483, 0,    1848,
+    283,  3642, 1890, 0,    3413, 3389, 0,    0,    1795, 1699, 1916, 3783, 0,    1483, 0,    1848,
     2150, 0,    1768, 2505, 0,    418,  3129, 3710, 2125, 1785, 0,    137,  972,  0,    0,    3423,
     0,    1586, 0,    1651, 0,    1178, 0,    3140, 0,    91,   0,    3408, 356,  194,  1034, 2976,
     1337, 388,  407,  0,    1574, 1368, 0,    1529, 684,  1714, 1559, 0,    202,  0,    819,  598,
-    209,  0,    1336, 0,    0,    0,    143,  2330, 3583, 652,  2986, 0,    0,    0,    0,    3834,
+    209,  0,    814,  0,    0,    0,    143,  2330, 3583, 652,  2986, 0,    0,    0,    0,    3834,
     0,    3274, 1351, 3961, 2230, 0,    1749, 0,    1359, 1820, 2595, 1099, 338,  1033, 0,    2964,
     0,    1860, 0,    2354, 1813, 3878, 0,    14,   1386, 1151, 967,  0,    0,    0,    2041, 2536,
     0,    0,    201,  1224, 730,  0,    216,  0,    3298, 0,    12,   515,  573,  1895, 630,  0,
@@ -227,9 +227,9 @@
     2888, 3628, 0,    0,    0,    0,    2474, 394,  531,  2483, 1041, 0,    957,  0,    204,  0,
     1372, 0,    1230, 1166, 0,    1218, 0,    674,  0,    0,    1538, 1224, 1097, 3426, 0,    746,
     816,  0,    2887, 81,   906,  1671, 1204, 85,   0,    3246, 0,    964,  1346, 0,    2184, 0,
-    1246, 231,  3811, 0,    571,  767,  0,    0,    382,  2850, 0,    2876, 0,    0,    1933, 1821,
+    1246, 231,  3811, 0,    571,  767,  0,    0,    2649, 2850, 0,    2876, 0,    0,    1933, 1821,
     0,    778,  530,  0,    0,    0,    347,  450,  0,    0,    2184, 1273, 3785, 0,    0,    3823,
-    1080, 3675, 600,  1301, 1791, 1510, 0,    1859, 3339, 1933, 1835, 0,    3612, 0,    0,    2001,
+    1080, 3675, 600,  1301, 3542, 1510, 0,    1859, 3339, 1933, 1835, 0,    3612, 0,    0,    2001,
     0,    1191, 1648, 3939, 0,    731,  2381, 1033, 1770, 0,    0,    935,  703,  926,  1141, 1831,
     0,    2422, 3907, 3258, 625,  0,    4002, 406,  1995, 936,  0,    787,  0,    2809, 119,  2571,
     1240, 826,  0,    1410, 0,    0,    0,    1726, 523,  0,    1371, 0,    0,    0,    669,  434,
@@ -244,26 +244,26 @@
     1544, 0,    520,  0,    1993, 0,    2946, 2533, 3364, 0,    0,    3167, 0,    1312, 2248, 0,
     0,    0,    0,    0,    1522, 3031, 0,    0,    0,    0,    1070, 0,    0,    0,    2440, 0,
     253,  1201, 937,  2587, 726,  340,  238,  1338, 274,  3576, 126,  1474, 2995, 539,  1806, 3670,
-    0,    416,  0,    0,    3927, 3234, 396,  2,    1280, 321,  1233, 1987, 633,  0,    1936, 1671,
+    0,    416,  0,    0,    3993, 3234, 396,  2,    1280, 321,  1233, 1987, 633,  0,    1936, 1671,
     2788, 0,    2977, 0,    0,    0,    1002, 552,  0,    3893, 3725, 762,  0,    0,    696,  0,
     235,  846,  2927, 673,  1431, 3779, 3356, 0,    660,  0,    0,    3442, 1208, 0,    3680, 1010,
     234,  1235, 2108, 3534, 463,  778,  1667, 1583, 1466, 1118, 341,  0,    2310, 3413, 1023, 3648,
-    0,    0,    0,    0,    2403, 0,    570,  0,    0,    0,    1552, 0,    0,    0,    3864, 0,
-    0,    3781, 784,  1589, 0,    3155, 0,    3384, 1969, 0,    614,  989,  0,    2279, 2616, 459,
+    0,    0,    0,    0,    2403, 0,    570,  0,    0,    0,    1486, 0,    0,    0,    3864, 0,
+    0,    3781, 784,  1589, 0,    3155, 0,    3384, 1969, 0,    614,  989,  0,    2279, 2682, 459,
     0,    1938, 1328, 390,  1865, 1624, 0,    0,    1800, 0,    3837, 0,    2257, 2114, 0,    422,
     1611, 0,    0,    2235, 0,    578,  1827, 0,    1168, 1057, 0,    1301, 1998, 0,    990,  3723,
     0,    1199, 1022, 1216, 3953, 0,    0,    303,  1149, 0,    0,    0,    3278, 1129, 279,  1445,
     3519, 2649, 0,    969,  0,    0,    1794, 0,    0,    1975, 0,    3704, 0,    3292, 3615, 158,
     3754, 0,    2003, 1655, 2233, 2476, 606,  551,  3966, 2831, 676,  0,    0,    167,  2837, 1048,
-    0,    901,  1428, 445,  0,    0,    249,  1771, 270,  0,    0,    19,   1162, 2888, 0,    725,
+    0,    901,  1428, 445,  0,    0,    249,  1705, 270,  0,    0,    19,   1162, 2888, 0,    725,
     0,    0,    443,  0,    864,  2049, 1507, 2112, 3439, 1153, 3197, 0,    0,    3385, 3047, 0,
-    2229, 0,    0,    0,    150,  1913, 2050, 0,    0,    0,    0,    931,  0,    1203, 0,    0,
+    2229, 0,    0,    0,    150,  1913, 2050, 0,    0,    0,    0,    931,  0,    1301, 0,    0,
     1467, 2872, 2784, 0,    535,  0,    0,    0,    1495, 928,  1537, 1157, 3415, 1053, 960,  108,
     3677, 311,  0,    0,    2167, 1905, 2802, 307,  2126, 3824, 2072, 2998, 0,    400,  556,  2654,
     514,  1567, 722,  0,    3740, 34,   0,    3194, 2063, 0,    0,    266,  0,    0,    348,  623,
     0,    3181, 1497, 0,    0,    625,  0,    0,    1307, 557,  355,  3059, 2576, 0,    494,  0,
     1947, 0,    1930, 41,   294,  0,    0,    3927, 1844, 588,  1718, 3088, 2722, 898,  0,    1500,
-    0,    2946, 1124, 99,   0,    0,    0,    0,    0,    397,  1449, 1186, 707,  2345, 1587, 3988,
+    0,    2946, 1124, 99,   0,    0,    0,    0,    0,    919,  1449, 1186, 707,  2345, 1587, 3988,
     0,    2087, 433,  3985, 1423, 57,   0,    0,    2753, 544,  225,  3931, 1319, 221,  270,  0,
     1219, 1966, 0,    0,    2091, 973,  1379, 851,  3134, 727,  0,    3339, 0,    3893, 3297, 2189,
     0,    0,    0,    0,    0,    1382, 0,    2457, 0,    3962, 1012, 1422, 1379, 1024, 0,    0,
@@ -274,12 +274,12 @@
     1805, 0,    0,    0,    1620, 1535, 0,    288,  0,    0,    0,    35,   842,  632,  0,    0,
     3648, 3429, 1884, 0,    862,  91,   2492, 898,  0,    2974, 98,   0,    0,    271,  3934, 0,
     0,    0,    1527, 2096, 1859, 0,    3871, 0,    0,    177,  0,    0,    2963, 0,    0,    481,
-    1010, 38,   447,  0,    1264, 877,  188,  0,    1413, 525,  0,    703,  835,  0,    0,    1611,
-    369,  1097, 989,  0,    338,  1564, 1698, 2083, 3099, 119,  0,    3452, 1862, 0,    0,    0,
+    1010, 38,   447,  0,    1264, 877,  188,  0,    1413, 525,  0,    703,  835,  0,    0,    1545,
+    369,  1097, 467,  0,    338,  1564, 1698, 2083, 3099, 119,  0,    3452, 1862, 0,    0,    0,
     1539, 0,    2084, 1785, 379,  3416, 0,    1762, 155,  1776, 0,    1730, 3670, 1738, 0,    1385,
-    1697, 185,  2200, 0,    3910, 1074, 0,    0,    314,  0,    3037, 1541, 0,    1614, 0,    762,
+    1697, 185,  2200, 0,    3910, 1074, 0,    0,    314,  0,    3103, 1541, 0,    1614, 0,    762,
     0,    0,    2127, 0,    0,    0,    0,    1040, 2692, 1583, 827,  0,    61,   0,    1402, 0,
-    0,    0,    3677, 1373, 0,    1593, 0,    160,  1682, 1205, 3839, 1305, 323,  606,  0,    1869,
+    0,    0,    3677, 1373, 0,    1593, 0,    160,  1682, 1205, 3839, 3572, 323,  606,  0,    1869,
     284,  1721, 1938, 1878, 0,    0,    0,    153,  922,  0,    3428, 489,  1927, 3671, 635,  1367,
     3251, 0,    382,  2592, 2863, 0,    0,    421,  292,  0,    1483, 0,    658,  627,  970,  0,
     0,    3781, 2490, 2175, 417,  1193, 965,  0,    253,  0,    2064, 2004, 11,   0,    67,   2133,
@@ -311,24 +311,24 @@
 constexpr int unmangledkT2[] = {1,   83, 258, 205, 211, 68,  233, 316, 8,  149, 134, 322, 221,
                                 224, 26, 115, 27,  229, 285, 163, 104, 44, 281, 182, 107, 199};
 constexpr int unmangledkG[]  = {
-    0,   0,   0,   0,   0,   0,   196, 0,   0,   0,   0,   0,   0,   0,   0,   0,   34,  62,  0,
-    0,   0,   0,   0,   0,   0,   0,   0,   0,   119, 179, 0,   31,  0,   223, 174, 0,   18,  154,
-    11,  0,   0,   170, 325, 0,   70,  0,   123, 0,   233, 0,   330, 0,   240, 57,  0,   0,   1,
-    0,   146, 140, 293, 144, 2,   244, 42,  0,   205, 213, 0,   127, 0,   0,   0,   296, 207, 0,
-    0,   196, 151, 0,   0,   65,  250, 0,   0,   237, 141, 0,   6,   49,  0,   0,   0,   0,   186,
-    252, 88,  146, 60,  321, 0,   0,   193, 206, 212, 248, 83,  0,   0,   257, 0,   99,  0,   0,
-    45,  0,   0,   126, 173, 119, 0,   318, 81,  229, 0,   0,   0,   330, 319, 138, 73,  189, 0,
-    153, 191, 174, 89,  150, 134, 206, 173, 0,   0,   0,   314, 279, 8,   212, 0,   261, 275, 248,
-    0,   31,  25,  167, 51,  0,   0,   209, 0,   323, 0,   185, 106, 54,  0,   0,   20,  106, 88,
-    88,  267, 25,  112, 157, 148, 153, 0,   88,  244, 238, 173, 279, 0,   0,   30,  136, 271, 0,
-    42,  165, 75,  249, 0,   145, 0,   0,   0,   163, 230, 194, 0,   258, 0,   297, 282, 23,  0,
-    0,   218, 245, 0,   0,   43,  77,  62,  117, 0,   250, 0,   166, 6,   226, 15,  0,   89,  0,
-    220, 96,  101, 0,   196, 0,   51,  0,   0,   0,   164, 327, 123, 0,   55,  194, 184, 125, 313,
-    0,   0,   0,   40,  71,  319, 274, 25,  273, 271, 230, 8,   48,  0,   230, 137, 281, 0,   152,
-    0,   0,   193, 0,   315, 0,   328, 293, 131, 0,   155, 191, 199, 113, 11,  73,  0,   7,   69,
-    300, 210, 307, 45,  0,   280, 146, 203, 0,   134, 182, 0,   10,  0,   129, 140, 170, 0,   16,
-    204, 290, 0,   15,  0,   14,  74,  82,  65,  227, 319, 178, 110, 164, 59,  0,   0,   306, 187,
-    191, 204, 325, 0,   0,   63,  133, 289};
+    0,   0,   0,   0,   0,   0,   195, 0,   0,   0,   0,   0,   0,   0,   0,   0,   34,  59,  0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   118, 180, 0,   31,  0,   223, 174, 0,   18,  154,
+    11,  0,   0,   170, 325, 0,   70,  0,   120, 0,   232, 0,   330, 0,   240, 57,  0,   0,   1,
+    0,   147, 140, 296, 143, 3,   242, 44,  0,   204, 214, 0,   128, 0,   0,   0,   296, 208, 0,
+    0,   196, 152, 0,   0,   64,  249, 0,   0,   236, 140, 0,   7,   50,  0,   0,   0,   0,   186,
+    250, 88,  146, 60,  321, 0,   0,   193, 206, 210, 247, 84,  0,   0,   258, 0,   100, 0,   0,
+    45,  0,   0,   125, 175, 119, 0,   316, 81,  229, 0,   0,   0,   329, 319, 137, 73,  190, 0,
+    152, 191, 174, 89,  149, 133, 279, 173, 0,   0,   0,   314, 279, 9,   209, 0,   262, 274, 249,
+    0,   30,  25,  166, 52,  0,   0,   209, 0,   323, 0,   183, 105, 53,  0,   0,   20,  105, 87,
+    87,  266, 25,  113, 156, 147, 152, 0,   88,  245, 239, 172, 280, 0,   0,   32,  135, 270, 0,
+    42,  165, 75,  248, 0,   145, 0,   0,   0,   163, 231, 194, 0,   257, 0,   296, 283, 24,  0,
+    0,   217, 248, 0,   0,   43,  76,  62,  115, 0,   249, 0,   165, 6,   228, 15,  0,   86,  0,
+    220, 96,  100, 0,   196, 0,   51,  0,   0,   0,   164, 327, 124, 0,   55,  194, 183, 122, 313,
+    0,   0,   0,   40,  70,  321, 271, 25,  273, 272, 229, 8,   48,  0,   231, 135, 279, 0,   151,
+    0,   0,   191, 0,   316, 0,   328, 293, 130, 0,   154, 191, 199, 114, 11,  74,  0,   7,   69,
+    303, 208, 307, 45,  0,   281, 147, 203, 0,   133, 182, 0,   10,  0,   128, 139, 169, 0,   16,
+    204, 289, 0,   16,  0,   14,  74,  81,  65,  227, 319, 176, 109, 164, 58,  0,   0,   304, 187,
+    191, 204, 324, 0,   0,   61,  132, 287};
 
 int UnmangledHashG(const char *key, const int *T)
 {
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/IntermNode.h b/Source/ThirdParty/ANGLE/src/compiler/translator/IntermNode.h
index 561b2f16..0612768 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/IntermNode.h
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/IntermNode.h
@@ -963,7 +963,7 @@
     Endif,
 };
 
-class TIntermPreprocessorDirective : public TIntermNode
+class TIntermPreprocessorDirective final : public TIntermNode
 {
   public:
     // This could also take an ImmutableString as an argument.
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp
index cac4ae6a..26286eb 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.cpp
@@ -169,7 +169,8 @@
                              ShCompileOptions options,
                              bool checksPrecErrors,
                              TDiagnostics *diagnostics,
-                             const ShBuiltInResources &resources)
+                             const ShBuiltInResources &resources,
+                             ShShaderOutput outputType)
     : symbolTable(symt),
       mDeferredNonEmptyDeclarationErrorCheck(false),
       mShaderType(type),
@@ -217,7 +218,8 @@
       mGeometryShaderMaxVertices(-1),
       mMaxGeometryShaderInvocations(resources.MaxGeometryShaderInvocations),
       mMaxGeometryShaderMaxVertices(resources.MaxGeometryOutputVertices),
-      mFunctionBodyNewScope(false)
+      mFunctionBodyNewScope(false),
+      mOutputType(outputType)
 {}
 
 TParseContext::~TParseContext() {}
@@ -1014,15 +1016,18 @@
         return 1u;
     }
 
-    // The size of arrays is restricted here to prevent issues further down the
-    // compiler/translator/driver stack. Shader Model 5 generation hardware is limited to
-    // 4096 registers so this should be reasonable even for aggressively optimizable code.
-    const unsigned int sizeLimit = 65536;
-
-    if (size > sizeLimit)
+    if (IsOutputHLSL(getOutputType()))
     {
-        error(line, "array size too large", "");
-        return 1u;
+        // The size of arrays is restricted here to prevent issues further down the
+        // compiler/translator/driver stack. Shader Model 5 generation hardware is limited to
+        // 4096 registers so this should be reasonable even for aggressively optimizable code.
+        const unsigned int sizeLimit = 65536;
+
+        if (size > sizeLimit)
+        {
+            error(line, "array size too large", "");
+            return 1u;
+        }
     }
 
     return size;
@@ -3364,10 +3369,9 @@
 
     if (getShaderVersion() >= 300)
     {
-        const UnmangledBuiltIn *builtIn =
-            symbolTable.getUnmangledBuiltInForShaderVersion(function->name(), getShaderVersion());
-        if (builtIn &&
-            (builtIn->extension == TExtension::UNDEFINED || isExtensionEnabled(builtIn->extension)))
+
+        if (symbolTable.isUnmangledBuiltInName(function->name(), getShaderVersion(),
+                                               extensionBehavior()))
         {
             // With ESSL 3.00 and above, names of built-in functions cannot be redeclared as
             // functions. Therefore overloading or redefining builtin functions is an error.
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.h b/Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.h
index c3455e7..8638d5b 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.h
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/ParseContext.h
@@ -40,7 +40,8 @@
                   ShCompileOptions options,
                   bool checksPrecErrors,
                   TDiagnostics *diagnostics,
-                  const ShBuiltInResources &resources);
+                  const ShBuiltInResources &resources,
+                  ShShaderOutput outputType);
     ~TParseContext();
 
     bool anyMultiviewExtensionAvailable();
@@ -459,6 +460,8 @@
         return mGeometryShaderOutputPrimitiveType;
     }
 
+    ShShaderOutput getOutputType() const { return mOutputType; }
+
     // TODO(jmadill): make this private
     TSymbolTable &symbolTable;  // symbol table that goes with the language currently being parsed
 
@@ -655,6 +658,8 @@
 
     // Track when we add new scope for func body in ESSL 1.00 spec
     bool mFunctionBodyNewScope;
+
+    ShShaderOutput mOutputType;
 };
 
 int PaParseStrings(size_t count,
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/ShaderVars.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/ShaderVars.cpp
index ac22cb0..3cebc70 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/ShaderVars.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/ShaderVars.cpp
@@ -101,7 +101,7 @@
     offset                        = other.offset;
     readonly                      = other.readonly;
     writeonly                     = other.writeonly;
-    writeonly                     = other.index;
+    index                         = other.index;
     interpolation                 = other.interpolation;
     isInvariant                   = other.isInvariant;
     return *this;
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.cpp
index 75529c4..049523b 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.cpp
@@ -21,6 +21,38 @@
 
 namespace sh
 {
+namespace
+{
+bool CheckShaderType(Shader expected, GLenum actual)
+{
+    switch (expected)
+    {
+        case Shader::ALL:
+            return true;
+        case Shader::FRAGMENT:
+            return actual == GL_FRAGMENT_SHADER;
+        case Shader::VERTEX:
+            return actual == GL_VERTEX_SHADER;
+        case Shader::COMPUTE:
+            return actual == GL_COMPUTE_SHADER;
+        case Shader::GEOMETRY:
+            return actual == GL_GEOMETRY_SHADER;
+        case Shader::GEOMETRY_EXT:
+            return actual == GL_GEOMETRY_SHADER_EXT;
+        case Shader::NOT_COMPUTE:
+            return actual != GL_COMPUTE_SHADER;
+        default:
+            UNREACHABLE();
+            return false;
+    }
+}
+
+bool CheckExtension(uint32_t extensionIndex, const ShBuiltInResources &resources)
+{
+    const int *resourcePtr = reinterpret_cast<const int *>(&resources);
+    return resourcePtr[extensionIndex] > 0;
+}
+}  // namespace
 
 class TSymbolTable::TSymbolTableLevel
 {
@@ -133,7 +165,7 @@
     {
         return mGlInVariableWithArraySize->getType().getOutermostArraySize() == inputArraySize;
     }
-    const TInterfaceBlock *glPerVertex = static_cast<const TInterfaceBlock *>(mVar_gl_PerVertex);
+    const TInterfaceBlock *glPerVertex = static_cast<const TInterfaceBlock *>(m_gl_PerVertex);
     TType *glInType = new TType(glPerVertex, EvqPerVertexIn, TLayoutQualifier::Create());
     glInType->makeArray(inputArraySize);
     mGlInVariableWithArraySize =
@@ -149,12 +181,12 @@
 
 const TVariable *TSymbolTable::gl_FragData() const
 {
-    return static_cast<const TVariable *>(mVar_gl_FragData);
+    return static_cast<const TVariable *>(m_gl_FragData);
 }
 
 const TVariable *TSymbolTable::gl_SecondaryFragDataEXT() const
 {
-    return static_cast<const TVariable *>(mVar_gl_SecondaryFragDataEXT);
+    return static_cast<const TVariable *>(m_gl_SecondaryFragDataEXT);
 }
 
 TSymbolTable::VariableMetadata *TSymbolTable::getOrCreateVariableMetadata(const TVariable &variable)
@@ -416,4 +448,87 @@
 TSymbolTable::VariableMetadata::VariableMetadata()
     : staticRead(false), staticWrite(false), invariant(false)
 {}
+
+const TSymbol *SymbolRule::get(ShShaderSpec shaderSpec,
+                               int shaderVersion,
+                               sh::GLenum shaderType,
+                               const ShBuiltInResources &resources,
+                               const TSymbolTableBase &symbolTable) const
+{
+    if (IsDesktopGLSpec(shaderSpec) != (mIsDesktop == 1))
+        return nullptr;
+
+    if (mVersion == kESSL1Only && shaderVersion != static_cast<int>(kESSL1Only))
+        return nullptr;
+
+    if (mVersion > shaderVersion)
+        return nullptr;
+
+    if (!CheckShaderType(static_cast<Shader>(mShaders), shaderType))
+        return nullptr;
+
+    if (mExtensionIndex != 0 && !CheckExtension(mExtensionIndex, resources))
+        return nullptr;
+
+    return mIsVar > 0 ? symbolTable.*(mSymbolOrVar.var) : mSymbolOrVar.symbol;
+}
+
+const TSymbol *FindMangledBuiltIn(ShShaderSpec shaderSpec,
+                                  int shaderVersion,
+                                  sh::GLenum shaderType,
+                                  const ShBuiltInResources &resources,
+                                  const TSymbolTableBase &symbolTable,
+                                  const SymbolRule *rules,
+                                  uint16_t startIndex,
+                                  uint16_t endIndex)
+{
+    for (uint32_t ruleIndex = startIndex; ruleIndex < endIndex; ++ruleIndex)
+    {
+        const TSymbol *symbol =
+            rules[ruleIndex].get(shaderSpec, shaderVersion, shaderType, resources, symbolTable);
+        if (symbol)
+        {
+            return symbol;
+        }
+    }
+
+    return nullptr;
+}
+
+bool UnmangledEntry::matches(const ImmutableString &name,
+                             ShShaderSpec shaderSpec,
+                             int shaderVersion,
+                             sh::GLenum shaderType,
+                             const TExtensionBehavior &extensions) const
+{
+    if (name != mName)
+        return false;
+
+    if (!CheckShaderType(static_cast<Shader>(mShaderType), shaderType))
+        return false;
+
+    if (IsDesktopGLSpec(shaderSpec))
+    {
+        if (mGLSLVersion > shaderVersion)
+            return false;
+
+        if (static_cast<TExtension>(mGLSLExtension) == TExtension::UNDEFINED)
+            return true;
+
+        return IsExtensionEnabled(extensions, static_cast<TExtension>(mGLSLExtension));
+    }
+    else
+    {
+        if (mESSLVersion == kESSL1Only && shaderVersion != static_cast<int>(kESSL1Only))
+            return false;
+
+        if (mESSLVersion > shaderVersion)
+            return false;
+
+        if (static_cast<TExtension>(mESSLExtension) == TExtension::UNDEFINED)
+            return true;
+
+        return IsExtensionEnabled(extensions, static_cast<TExtension>(mESSLExtension));
+    }
+}
 }  // namespace sh
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.h b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.h
index 362b234..264d8cb 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.h
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable.h
@@ -30,6 +30,7 @@
 //   are tracked in the intermediate representation, not the symbol table.
 //
 
+#include <limits>
 #include <memory>
 #include <set>
 
@@ -62,107 +63,150 @@
     TExtension extension;
 };
 
-using VarPointer = TSymbol *(TSymbolTableBase::*);
-
+using VarPointer        = TSymbol *(TSymbolTableBase::*);
 using ValidateExtension = int(ShBuiltInResources::*);
 
-struct SymbolEntry
+enum class Spec
 {
-    constexpr SymbolEntry(ImmutableString &&name,
-                          const TSymbol *symbol,
-                          VarPointer var,
-                          int esslVersion,
-                          int glslVersion,
-                          Shader shaderType,
-                          const TSymbol *esslExtSymbol,
-                          VarPointer esslExtVar,
-                          int esslExtVersion,
-                          Shader esslExtShaderType,
-                          ValidateExtension esslExtension,
-                          const TSymbol *glslExtSymbol,
-                          VarPointer glslExtVar,
-                          int glslExtVersion,
-                          Shader glslExtShaderType,
-                          ValidateExtension glslExtension,
-                          const TSymbol *esslExtSymbol2    = nullptr,
-                          VarPointer esslExtVar2           = nullptr,
-                          int esslExtVersion2              = -1,
-                          Shader esslExtShaderType2        = Shader::ALL,
-                          ValidateExtension esslExtension2 = nullptr)
-        : name(std::move(name)),
-          symbol(symbol),
-          var(var),
-          esslVersion(esslVersion),
-          glslVersion(glslVersion),
-          shaderType(shaderType),
-          esslExtSymbol(esslExtSymbol),
-          esslExtVar(esslExtVar),
-          esslExtVersion(esslExtVersion),
-          esslExtShaderType(esslExtShaderType),
-          esslExtension(esslExtension),
-          glslExtSymbol(glslExtSymbol),
-          glslExtVar(glslExtVar),
-          glslExtVersion(glslExtVersion),
-          glslExtShaderType(glslExtShaderType),
-          glslExtension(glslExtension),
-          esslExtSymbol2(esslExtSymbol2),
-          esslExtVar2(esslExtVar2),
-          esslExtVersion2(esslExtVersion2),
-          esslExtShaderType2(esslExtShaderType2),
-          esslExtension2(esslExtension2)
-    {}
-
-    ImmutableString name;
-
-    const TSymbol *symbol;
-    VarPointer var;
-    int esslVersion;
-    int glslVersion;
-    Shader shaderType;
-
-    const TSymbol *esslExtSymbol;
-    VarPointer esslExtVar;
-    int esslExtVersion;
-    Shader esslExtShaderType;
-    ValidateExtension esslExtension;
-
-    const TSymbol *glslExtSymbol;
-    VarPointer glslExtVar;
-    int glslExtVersion;
-    Shader glslExtShaderType;
-    ValidateExtension glslExtension;
-
-    const TSymbol *esslExtSymbol2;
-    VarPointer esslExtVar2;
-    int esslExtVersion2;
-    Shader esslExtShaderType2;
-    ValidateExtension esslExtension2;
+    GLSL,
+    ESSL
 };
 
-struct UnmangledEntry
+constexpr uint16_t kESSL1Only = 100;
+
+static_assert(offsetof(ShBuiltInResources, OES_standard_derivatives) != 0,
+              "Update SymbolTable extension logic");
+
+#define EXT_INDEX(Ext) (offsetof(ShBuiltInResources, Ext) / sizeof(int))
+
+class SymbolRule
 {
-    constexpr UnmangledEntry(ImmutableString &&name,
-                             const UnmangledBuiltIn *esslUnmangled,
-                             const UnmangledBuiltIn *glslUnmangled,
+  public:
+    const TSymbol *get(ShShaderSpec shaderSpec,
+                       int shaderVersion,
+                       sh::GLenum shaderType,
+                       const ShBuiltInResources &resources,
+                       const TSymbolTableBase &symbolTable) const;
+
+    template <Spec spec, int version, Shader shaders, size_t extensionIndex, typename T>
+    constexpr static SymbolRule Get(T value);
+
+  private:
+    constexpr SymbolRule(Spec spec,
+                         int version,
+                         Shader shaders,
+                         size_t extensionIndex,
+                         const TSymbol *symbol);
+
+    constexpr SymbolRule(Spec spec,
+                         int version,
+                         Shader shaders,
+                         size_t extensionIndex,
+                         VarPointer resourceVar);
+
+    union SymbolOrVar
+    {
+        constexpr SymbolOrVar(const TSymbol *symbolIn) : symbol(symbolIn) {}
+        constexpr SymbolOrVar(VarPointer varIn) : var(varIn) {}
+
+        const TSymbol *symbol;
+        VarPointer var;
+    };
+
+    uint16_t mIsDesktop : 1;
+    uint16_t mIsVar : 1;
+    uint16_t mVersion : 14;
+    uint8_t mShaders;
+    uint8_t mExtensionIndex;
+    SymbolOrVar mSymbolOrVar;
+};
+
+constexpr SymbolRule::SymbolRule(Spec spec,
+                                 int version,
+                                 Shader shaders,
+                                 size_t extensionIndex,
+                                 const TSymbol *symbol)
+    : mIsDesktop(spec == Spec::GLSL ? 1u : 0u),
+      mIsVar(0u),
+      mVersion(static_cast<uint16_t>(version)),
+      mShaders(static_cast<uint8_t>(shaders)),
+      mExtensionIndex(extensionIndex),
+      mSymbolOrVar(symbol)
+{}
+
+constexpr SymbolRule::SymbolRule(Spec spec,
+                                 int version,
+                                 Shader shaders,
+                                 size_t extensionIndex,
+                                 VarPointer resourceVar)
+    : mIsDesktop(spec == Spec::GLSL ? 1u : 0u),
+      mIsVar(1u),
+      mVersion(static_cast<uint16_t>(version)),
+      mShaders(static_cast<uint8_t>(shaders)),
+      mExtensionIndex(extensionIndex),
+      mSymbolOrVar(resourceVar)
+{}
+
+template <Spec spec, int version, Shader shaders, size_t extensionIndex, typename T>
+// static
+constexpr SymbolRule SymbolRule::Get(T value)
+{
+    static_assert(version < 0x4000u, "version OOR");
+    static_assert(static_cast<uint8_t>(shaders) < 0xFFu, "shaders OOR");
+    static_assert(static_cast<uint8_t>(extensionIndex) < 0xFF, "extensionIndex OOR");
+    return SymbolRule(spec, version, shaders, extensionIndex, value);
+}
+
+const TSymbol *FindMangledBuiltIn(ShShaderSpec shaderSpec,
+                                  int shaderVersion,
+                                  sh::GLenum shaderType,
+                                  const ShBuiltInResources &resources,
+                                  const TSymbolTableBase &symbolTable,
+                                  const SymbolRule *rules,
+                                  uint16_t startIndex,
+                                  uint16_t endIndex);
+
+class UnmangledEntry
+{
+  public:
+    constexpr UnmangledEntry(const char *name,
+                             TExtension esslExtension,
+                             TExtension glslExtension,
                              int esslVersion,
                              int glslVersion,
-                             Shader shaderType)
-        : name(std::move(name)),
-          esslUnmangled(esslUnmangled),
-          glslUnmangled(glslUnmangled),
-          esslVersion(esslVersion),
-          glslVersion(glslVersion),
-          shaderType(shaderType)
-    {}
+                             Shader shaderType);
 
-    ImmutableString name;
-    const UnmangledBuiltIn *esslUnmangled;
-    const UnmangledBuiltIn *glslUnmangled;
-    int esslVersion;
-    int glslVersion;
-    Shader shaderType;
+    bool matches(const ImmutableString &name,
+                 ShShaderSpec shaderSpec,
+                 int shaderVersion,
+                 sh::GLenum shaderType,
+                 const TExtensionBehavior &extensions) const;
+
+  private:
+    const char *mName;
+    uint8_t mESSLExtension;
+    uint8_t mGLSLExtension;
+    uint8_t mShaderType;
+    uint16_t mESSLVersion;
+    uint16_t mGLSLVersion;
 };
 
+constexpr UnmangledEntry::UnmangledEntry(const char *name,
+                                         TExtension esslExtension,
+                                         TExtension glslExtension,
+                                         int esslVersion,
+                                         int glslVersion,
+                                         Shader shaderType)
+    : mName(name),
+      mESSLExtension(static_cast<uint8_t>(esslExtension)),
+      mGLSLExtension(static_cast<uint8_t>(glslExtension)),
+      mShaderType(static_cast<uint8_t>(shaderType)),
+      mESSLVersion(esslVersion < 0 ? std::numeric_limits<uint16_t>::max()
+                                   : static_cast<uint16_t>(esslVersion)),
+      mGLSLVersion(glslVersion < 0 ? std::numeric_limits<uint16_t>::max()
+                                   : static_cast<uint16_t>(glslVersion))
+{}
+
 class TSymbolTable : angle::NonCopyable, TSymbolTableBase
 {
   public:
@@ -242,8 +286,9 @@
     const TSymbolUniqueId nextUniqueId() { return TSymbolUniqueId(this); }
 
     // Gets the built-in accessible by a shader with the specified version, if any.
-    const UnmangledBuiltIn *getUnmangledBuiltInForShaderVersion(const ImmutableString &name,
-                                                                int shaderVersion);
+    bool isUnmangledBuiltInName(const ImmutableString &name,
+                                int shaderVersion,
+                                const TExtensionBehavior &extensions) const;
 
     void initializeBuiltIns(sh::GLenum type,
                             ShShaderSpec spec,
@@ -273,12 +318,6 @@
 
     VariableMetadata *getOrCreateVariableMetadata(const TVariable &variable);
 
-    const TSymbol *getSymbol(SymbolEntry entry, const ImmutableString &name, int version) const;
-
-    const UnmangledBuiltIn *getUnmangled(UnmangledEntry entry,
-                                         const ImmutableString &name,
-                                         int version) const;
-
     std::vector<std::unique_ptr<TSymbolTableLevel>> mTable;
 
     // There's one precision stack level for predefined precisions and then one level for each scope
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_ESSL_autogen.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_ESSL_autogen.cpp
index 5518373..0da89e1 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_ESSL_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_ESSL_autogen.cpp
@@ -20,6 +20,8 @@
 
 namespace sh
 {
+using Resources = ShBuiltInResources;
+using TableBase = TSymbolTableBase;
 
 // Since some of the BuiltInId declarations are used outside of constexpr expressions, we need to
 // have these definitions without an initializer. C++17 should eventually remove the need for this.
@@ -1260,790 +1262,765 @@
 namespace BuiltInVariable
 {
 
-constexpr const TVariable kVar_angle_BaseInstance(
+constexpr const TVariable kangle_BaseInstance(
     BuiltInId::angle_BaseInstance,
     BuiltInName::angle_BaseInstance,
     SymbolType::BuiltIn,
     TExtension::ANGLE_base_vertex_base_instance,
     StaticType::Get<EbtInt, EbpHigh, EvqBaseInstance, 1, 1>());
-constexpr const TVariable kVar_angle_BaseVertex(
+constexpr const TVariable kangle_BaseVertex(
     BuiltInId::angle_BaseVertex,
     BuiltInName::angle_BaseVertex,
     SymbolType::BuiltIn,
     TExtension::ANGLE_base_vertex_base_instance,
     StaticType::Get<EbtInt, EbpHigh, EvqBaseVertex, 1, 1>());
-constexpr const TVariable kVar_gl_BaseInstance(
+constexpr const TVariable kgl_BaseInstance(
     BuiltInId::gl_BaseInstance,
     BuiltInName::gl_BaseInstance,
     SymbolType::BuiltIn,
     TExtension::ANGLE_base_vertex_base_instance,
     StaticType::Get<EbtInt, EbpHigh, EvqBaseInstance, 1, 1>());
-constexpr const TVariable kVar_gl_BaseVertex(
-    BuiltInId::gl_BaseVertex,
-    BuiltInName::gl_BaseVertex,
-    SymbolType::BuiltIn,
-    TExtension::ANGLE_base_vertex_base_instance,
-    StaticType::Get<EbtInt, EbpHigh, EvqBaseVertex, 1, 1>());
-constexpr const TVariable kVar_gl_DrawID(BuiltInId::gl_DrawID,
-                                         BuiltInName::gl_DrawID,
+constexpr const TVariable kgl_BaseVertex(BuiltInId::gl_BaseVertex,
+                                         BuiltInName::gl_BaseVertex,
                                          SymbolType::BuiltIn,
-                                         TExtension::ANGLE_multi_draw,
-                                         StaticType::Get<EbtInt, EbpHigh, EvqDrawID, 1, 1>());
-constexpr const TVariable kVar_gl_FragColor(
-    BuiltInId::gl_FragColor,
-    BuiltInName::gl_FragColor,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtFloat, EbpMedium, EvqFragColor, 4, 1>());
-constexpr const TVariable kVar_gl_FragCoord(
-    BuiltInId::gl_FragCoord,
-    BuiltInName::gl_FragCoord,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtFloat, EbpMedium, EvqFragCoord, 4, 1>());
-constexpr const TVariable kVar_gl_FragDepth(
-    BuiltInId::gl_FragDepth,
-    BuiltInName::gl_FragDepth,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtFloat, EbpHigh, EvqFragDepth, 1, 1>());
-constexpr const TVariable kVar_gl_FrontFacing(
+                                         TExtension::ANGLE_base_vertex_base_instance,
+                                         StaticType::Get<EbtInt, EbpHigh, EvqBaseVertex, 1, 1>());
+constexpr const TVariable kgl_DrawID(BuiltInId::gl_DrawID,
+                                     BuiltInName::gl_DrawID,
+                                     SymbolType::BuiltIn,
+                                     TExtension::ANGLE_multi_draw,
+                                     StaticType::Get<EbtInt, EbpHigh, EvqDrawID, 1, 1>());
+constexpr const TVariable kgl_FragColor(BuiltInId::gl_FragColor,
+                                        BuiltInName::gl_FragColor,
+                                        SymbolType::BuiltIn,
+                                        TExtension::UNDEFINED,
+                                        StaticType::Get<EbtFloat, EbpMedium, EvqFragColor, 4, 1>());
+constexpr const TVariable kgl_FragCoord(BuiltInId::gl_FragCoord,
+                                        BuiltInName::gl_FragCoord,
+                                        SymbolType::BuiltIn,
+                                        TExtension::UNDEFINED,
+                                        StaticType::Get<EbtFloat, EbpMedium, EvqFragCoord, 4, 1>());
+constexpr const TVariable kgl_FragDepth(BuiltInId::gl_FragDepth,
+                                        BuiltInName::gl_FragDepth,
+                                        SymbolType::BuiltIn,
+                                        TExtension::UNDEFINED,
+                                        StaticType::Get<EbtFloat, EbpHigh, EvqFragDepth, 1, 1>());
+constexpr const TVariable kgl_FrontFacing(
     BuiltInId::gl_FrontFacing,
     BuiltInName::gl_FrontFacing,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtBool, EbpUndefined, EvqFrontFacing, 1, 1>());
-constexpr const TVariable kVar_gl_GlobalInvocationID(
+constexpr const TVariable kgl_GlobalInvocationID(
     BuiltInId::gl_GlobalInvocationID,
     BuiltInName::gl_GlobalInvocationID,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobalInvocationID, 3, 1>());
-constexpr const TVariable kVar_gl_InstanceID(
-    BuiltInId::gl_InstanceID,
-    BuiltInName::gl_InstanceID,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtInt, EbpHigh, EvqInstanceID, 1, 1>());
-constexpr const TVariable kVar_gl_InstanceIndex(
+constexpr const TVariable kgl_InstanceID(BuiltInId::gl_InstanceID,
+                                         BuiltInName::gl_InstanceID,
+                                         SymbolType::BuiltIn,
+                                         TExtension::UNDEFINED,
+                                         StaticType::Get<EbtInt, EbpHigh, EvqInstanceID, 1, 1>());
+constexpr const TVariable kgl_InstanceIndex(
     BuiltInId::gl_InstanceIndex,
     BuiltInName::gl_InstanceIndex,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtInt, EbpHigh, EvqInstanceID, 1, 1>());
-constexpr const TVariable kVar_gl_InvocationID(
+constexpr const TVariable kgl_InvocationID(
     BuiltInId::gl_InvocationID,
     BuiltInName::gl_InvocationID,
     SymbolType::BuiltIn,
     TExtension::EXT_geometry_shader,
     StaticType::Get<EbtInt, EbpHigh, EvqInvocationID, 1, 1>());
-constexpr const TVariable kVar_gl_LastFragColor(
+constexpr const TVariable kgl_LastFragColor(
     BuiltInId::gl_LastFragColor,
     BuiltInName::gl_LastFragColor,
     SymbolType::BuiltIn,
     TExtension::NV_shader_framebuffer_fetch,
     StaticType::Get<EbtFloat, EbpMedium, EvqLastFragColor, 4, 1>());
-constexpr const TVariable kVar_gl_LastFragColorARM(
+constexpr const TVariable kgl_LastFragColorARM(
     BuiltInId::gl_LastFragColorARM,
     BuiltInName::gl_LastFragColorARM,
     SymbolType::BuiltIn,
     TExtension::ARM_shader_framebuffer_fetch,
     StaticType::Get<EbtFloat, EbpMedium, EvqLastFragColor, 4, 1>());
-constexpr const TVariable kVar_gl_Layer(BuiltInId::gl_Layer,
-                                        BuiltInName::gl_Layer,
-                                        SymbolType::BuiltIn,
-                                        TExtension::EXT_geometry_shader,
-                                        StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
-constexpr const TVariable kVar_gl_LayerGS(BuiltInId::gl_LayerGS,
-                                          BuiltInName::gl_Layer,
-                                          SymbolType::BuiltIn,
-                                          TExtension::EXT_geometry_shader,
-                                          StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
-constexpr const TVariable kVar_gl_LayerVS(BuiltInId::gl_LayerVS,
-                                          BuiltInName::gl_Layer,
-                                          SymbolType::BuiltIn,
-                                          TExtension::UNDEFINED,
-                                          StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
-constexpr const TVariable kVar_gl_LocalInvocationID(
+constexpr const TVariable kgl_Layer(BuiltInId::gl_Layer,
+                                    BuiltInName::gl_Layer,
+                                    SymbolType::BuiltIn,
+                                    TExtension::EXT_geometry_shader,
+                                    StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
+constexpr const TVariable kgl_LayerGS(BuiltInId::gl_LayerGS,
+                                      BuiltInName::gl_Layer,
+                                      SymbolType::BuiltIn,
+                                      TExtension::EXT_geometry_shader,
+                                      StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
+constexpr const TVariable kgl_LayerVS(BuiltInId::gl_LayerVS,
+                                      BuiltInName::gl_Layer,
+                                      SymbolType::BuiltIn,
+                                      TExtension::UNDEFINED,
+                                      StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
+constexpr const TVariable kgl_LocalInvocationID(
     BuiltInId::gl_LocalInvocationID,
     BuiltInName::gl_LocalInvocationID,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqLocalInvocationID, 3, 1>());
-constexpr const TVariable kVar_gl_LocalInvocationIndex(
+constexpr const TVariable kgl_LocalInvocationIndex(
     BuiltInId::gl_LocalInvocationIndex,
     BuiltInName::gl_LocalInvocationIndex,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqLocalInvocationIndex, 1, 1>());
-constexpr const TVariable kVar_gl_NumWorkGroups(
+constexpr const TVariable kgl_NumWorkGroups(
     BuiltInId::gl_NumWorkGroups,
     BuiltInName::gl_NumWorkGroups,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqNumWorkGroups, 3, 1>());
-constexpr const TVariable kVar_gl_PointCoord(
+constexpr const TVariable kgl_PointCoord(
     BuiltInId::gl_PointCoord,
     BuiltInName::gl_PointCoord,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtFloat, EbpMedium, EvqPointCoord, 2, 1>());
-constexpr const TVariable kVar_gl_PointSize(
-    BuiltInId::gl_PointSize,
-    BuiltInName::gl_PointSize,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtFloat, EbpMedium, EvqPointSize, 1, 1>());
-constexpr const TVariable kVar_gl_Position(BuiltInId::gl_Position,
-                                           BuiltInName::gl_Position,
-                                           SymbolType::BuiltIn,
-                                           TExtension::UNDEFINED,
-                                           StaticType::Get<EbtFloat, EbpHigh, EvqPosition, 4, 1>());
-constexpr const TVariable kVar_gl_PrimitiveID(
-    BuiltInId::gl_PrimitiveID,
-    BuiltInName::gl_PrimitiveID,
-    SymbolType::BuiltIn,
-    TExtension::EXT_geometry_shader,
-    StaticType::Get<EbtInt, EbpHigh, EvqPrimitiveID, 1, 1>());
-constexpr const TVariable kVar_gl_PrimitiveIDGS(
+constexpr const TVariable kgl_PointSize(BuiltInId::gl_PointSize,
+                                        BuiltInName::gl_PointSize,
+                                        SymbolType::BuiltIn,
+                                        TExtension::UNDEFINED,
+                                        StaticType::Get<EbtFloat, EbpMedium, EvqPointSize, 1, 1>());
+constexpr const TVariable kgl_Position(BuiltInId::gl_Position,
+                                       BuiltInName::gl_Position,
+                                       SymbolType::BuiltIn,
+                                       TExtension::UNDEFINED,
+                                       StaticType::Get<EbtFloat, EbpHigh, EvqPosition, 4, 1>());
+constexpr const TVariable kgl_PrimitiveID(BuiltInId::gl_PrimitiveID,
+                                          BuiltInName::gl_PrimitiveID,
+                                          SymbolType::BuiltIn,
+                                          TExtension::EXT_geometry_shader,
+                                          StaticType::Get<EbtInt, EbpHigh, EvqPrimitiveID, 1, 1>());
+constexpr const TVariable kgl_PrimitiveIDGS(
     BuiltInId::gl_PrimitiveIDGS,
     BuiltInName::gl_PrimitiveID,
     SymbolType::BuiltIn,
     TExtension::EXT_geometry_shader,
     StaticType::Get<EbtInt, EbpHigh, EvqPrimitiveID, 1, 1>());
-constexpr const TVariable kVar_gl_PrimitiveIDIn(
+constexpr const TVariable kgl_PrimitiveIDIn(
     BuiltInId::gl_PrimitiveIDIn,
     BuiltInName::gl_PrimitiveIDIn,
     SymbolType::BuiltIn,
     TExtension::EXT_geometry_shader,
     StaticType::Get<EbtInt, EbpHigh, EvqPrimitiveIDIn, 1, 1>());
-constexpr const TVariable kVar_gl_SecondaryFragColorEXT(
+constexpr const TVariable kgl_SecondaryFragColorEXT(
     BuiltInId::gl_SecondaryFragColorEXT,
     BuiltInName::gl_SecondaryFragColorEXT,
     SymbolType::BuiltIn,
     TExtension::EXT_blend_func_extended,
     StaticType::Get<EbtFloat, EbpMedium, EvqSecondaryFragColorEXT, 4, 1>());
-constexpr const TVariable kVar_gl_VertexID(BuiltInId::gl_VertexID,
-                                           BuiltInName::gl_VertexID,
-                                           SymbolType::BuiltIn,
-                                           TExtension::UNDEFINED,
-                                           StaticType::Get<EbtInt, EbpHigh, EvqVertexID, 1, 1>());
-constexpr const TVariable kVar_gl_VertexIndex(
-    BuiltInId::gl_VertexIndex,
-    BuiltInName::gl_VertexIndex,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtInt, EbpHigh, EvqVertexID, 1, 1>());
-constexpr const TVariable kVar_gl_ViewID_OVR(
-    BuiltInId::gl_ViewID_OVR,
-    BuiltInName::gl_ViewID_OVR,
-    SymbolType::BuiltIn,
-    TExtension::OVR_multiview,
-    StaticType::Get<EbtUInt, EbpHigh, EvqViewIDOVR, 1, 1>());
-constexpr const TVariable kVar_gl_ViewportIndex(
+constexpr const TVariable kgl_VertexID(BuiltInId::gl_VertexID,
+                                       BuiltInName::gl_VertexID,
+                                       SymbolType::BuiltIn,
+                                       TExtension::UNDEFINED,
+                                       StaticType::Get<EbtInt, EbpHigh, EvqVertexID, 1, 1>());
+constexpr const TVariable kgl_VertexIndex(BuiltInId::gl_VertexIndex,
+                                          BuiltInName::gl_VertexIndex,
+                                          SymbolType::BuiltIn,
+                                          TExtension::UNDEFINED,
+                                          StaticType::Get<EbtInt, EbpHigh, EvqVertexID, 1, 1>());
+constexpr const TVariable kgl_ViewID_OVR(BuiltInId::gl_ViewID_OVR,
+                                         BuiltInName::gl_ViewID_OVR,
+                                         SymbolType::BuiltIn,
+                                         TExtension::OVR_multiview,
+                                         StaticType::Get<EbtUInt, EbpHigh, EvqViewIDOVR, 1, 1>());
+constexpr const TVariable kgl_ViewportIndex(
     BuiltInId::gl_ViewportIndex,
     BuiltInName::gl_ViewportIndex,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtInt, EbpHigh, EvqViewportIndex, 1, 1>());
-constexpr const TVariable kVar_gl_WorkGroupID(
+constexpr const TVariable kgl_WorkGroupID(
     BuiltInId::gl_WorkGroupID,
     BuiltInName::gl_WorkGroupID,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqWorkGroupID, 3, 1>());
-constexpr const TVariable kVar_gl_WorkGroupSize(
+constexpr const TVariable kgl_WorkGroupSize(
     BuiltInId::gl_WorkGroupSize,
     BuiltInName::gl_WorkGroupSize,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqWorkGroupSize, 3, 1>());
-constexpr const TVariable kVar_pt00B(BuiltInId::pt00B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00D(BuiltInId::pt00D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00E(BuiltInId::pt00E,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00F(BuiltInId::pt00F,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00G(
+constexpr const TVariable kpt00B(BuiltInId::pt00B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00D(BuiltInId::pt00D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00E(BuiltInId::pt00E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00F(BuiltInId::pt00F,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00G(
     BuiltInId::pt00G,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtAtomicCounter, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00H(
+constexpr const TVariable kpt00H(
     BuiltInId::pt00H,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtYuvCscStandardEXT, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00I(
-    BuiltInId::pt00I,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSampler2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00J(
-    BuiltInId::pt00J,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSampler3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00K(
-    BuiltInId::pt00K,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00L(
+constexpr const TVariable kpt00I(BuiltInId::pt00I,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSampler2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00J(BuiltInId::pt00J,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSampler3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00K(BuiltInId::pt00K,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00L(
     BuiltInId::pt00L,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00M(
+constexpr const TVariable kpt00M(
     BuiltInId::pt00M,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerExternalOES, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00N(
+constexpr const TVariable kpt00N(
     BuiltInId::pt00N,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerExternal2DY2YEXT, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00O(
+constexpr const TVariable kpt00O(
     BuiltInId::pt00O,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00P(
-    BuiltInId::pt00P,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00Q(
+constexpr const TVariable kpt00P(BuiltInId::pt00P,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00Q(
     BuiltInId::pt00Q,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00R(
-    BuiltInId::pt00R,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISampler2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00S(
-    BuiltInId::pt00S,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISampler3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00T(
-    BuiltInId::pt00T,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00U(
+constexpr const TVariable kpt00R(BuiltInId::pt00R,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISampler2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00S(BuiltInId::pt00S,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISampler3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00T(BuiltInId::pt00T,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00U(
     BuiltInId::pt00U,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISampler2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00V(
-    BuiltInId::pt00V,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00W(
+constexpr const TVariable kpt00V(BuiltInId::pt00V,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00W(
     BuiltInId::pt00W,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISampler2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00X(
-    BuiltInId::pt00X,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSampler2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00Y(
-    BuiltInId::pt00Y,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSampler3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00Z(
-    BuiltInId::pt00Z,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00a(
+constexpr const TVariable kpt00X(BuiltInId::pt00X,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSampler2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00Y(BuiltInId::pt00Y,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSampler3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00Z(BuiltInId::pt00Z,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00a(
     BuiltInId::pt00a,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSampler2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00b(
-    BuiltInId::pt00b,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00c(
+constexpr const TVariable kpt00b(BuiltInId::pt00b,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00c(
     BuiltInId::pt00c,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSampler2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00d(
+constexpr const TVariable kpt00d(
     BuiltInId::pt00d,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00e(
+constexpr const TVariable kpt00e(
     BuiltInId::pt00e,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerCubeShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00f(
+constexpr const TVariable kpt00f(
     BuiltInId::pt00f,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DArrayShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00y(BuiltInId::pt00y,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtImage2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00z(BuiltInId::pt00z,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtIImage2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01A(BuiltInId::pt01A,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUImage2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01B(BuiltInId::pt01B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtImage3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01C(BuiltInId::pt01C,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtIImage3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01D(BuiltInId::pt01D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUImage3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01E(
-    BuiltInId::pt01E,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImage2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01F(
+constexpr const TVariable kpt00y(BuiltInId::pt00y,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00z(BuiltInId::pt00z,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImage2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01A(BuiltInId::pt01A,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImage2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01B(BuiltInId::pt01B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01C(BuiltInId::pt01C,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImage3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01D(BuiltInId::pt01D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImage3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01E(BuiltInId::pt01E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage2DArray, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01F(
     BuiltInId::pt01F,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtIImage2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01G(
+constexpr const TVariable kpt01G(
     BuiltInId::pt01G,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUImage2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01H(
-    BuiltInId::pt01H,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImageCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01I(
-    BuiltInId::pt01I,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtIImageCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01J(
-    BuiltInId::pt01J,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUImageCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt10B(BuiltInId::pt10B,
+constexpr const TVariable kpt01H(BuiltInId::pt01H,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImageCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01I(BuiltInId::pt01I,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImageCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01J(BuiltInId::pt01J,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImageCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt10B(BuiltInId::pt10B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt10D(BuiltInId::pt10D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt10E(BuiltInId::pt10E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt10F(BuiltInId::pt10F,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt20B(BuiltInId::pt20B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt20D(BuiltInId::pt20D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt20E(BuiltInId::pt20E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt20F(BuiltInId::pt20F,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt30B(BuiltInId::pt30B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt30D(BuiltInId::pt30D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt30E(BuiltInId::pt30E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt30F(BuiltInId::pt30F,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt50B(BuiltInId::pt50B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>());
+constexpr const TVariable kpt60B(BuiltInId::pt60B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>());
+constexpr const TVariable kpt70B(BuiltInId::pt70B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>());
+constexpr const TVariable kpt90B(BuiltInId::pt90B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>());
+constexpr const TVariable kptA0B(BuiltInId::ptA0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>());
+constexpr const TVariable kptB0B(BuiltInId::ptB0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>());
+constexpr const TVariable kptD0B(BuiltInId::ptD0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>());
+constexpr const TVariable kptE0B(BuiltInId::ptE0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>());
+constexpr const TVariable kptF0B(BuiltInId::ptF0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>());
+constexpr const TVariable kpt_io_00D(BuiltInId::pt_io_00D,
                                      BuiltInName::_empty,
                                      SymbolType::BuiltIn,
                                      TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt10D(BuiltInId::pt10D,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqInOut, 1, 1>());
+constexpr const TVariable kpt_io_00E(BuiltInId::pt_io_00E,
                                      BuiltInName::_empty,
                                      SymbolType::BuiltIn,
                                      TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt10E(BuiltInId::pt10E,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt10F(BuiltInId::pt10F,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt20B(BuiltInId::pt20B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt20D(BuiltInId::pt20D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt20E(BuiltInId::pt20E,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt20F(BuiltInId::pt20F,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt30B(BuiltInId::pt30B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt30D(BuiltInId::pt30D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt30E(BuiltInId::pt30E,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt30F(BuiltInId::pt30F,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt50B(BuiltInId::pt50B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>());
-constexpr const TVariable kVar_pt60B(BuiltInId::pt60B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>());
-constexpr const TVariable kVar_pt70B(BuiltInId::pt70B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>());
-constexpr const TVariable kVar_pt90B(BuiltInId::pt90B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>());
-constexpr const TVariable kVar_ptA0B(BuiltInId::ptA0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>());
-constexpr const TVariable kVar_ptB0B(BuiltInId::ptB0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>());
-constexpr const TVariable kVar_ptD0B(BuiltInId::ptD0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>());
-constexpr const TVariable kVar_ptE0B(BuiltInId::ptE0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>());
-constexpr const TVariable kVar_ptF0B(BuiltInId::ptF0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>());
-constexpr const TVariable kVar_pt_io_00D(BuiltInId::pt_io_00D,
-                                         BuiltInName::_empty,
-                                         SymbolType::BuiltIn,
-                                         TExtension::UNDEFINED,
-                                         StaticType::Get<EbtInt, EbpUndefined, EvqInOut, 1, 1>());
-constexpr const TVariable kVar_pt_io_00E(BuiltInId::pt_io_00E,
-                                         BuiltInName::_empty,
-                                         SymbolType::BuiltIn,
-                                         TExtension::UNDEFINED,
-                                         StaticType::Get<EbtUInt, EbpUndefined, EvqInOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_00B(BuiltInId::pt_o_00B,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_00D(BuiltInId::pt_o_00D,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtInt, EbpUndefined, EvqOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_00E(BuiltInId::pt_o_00E,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_10B(BuiltInId::pt_o_10B,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 2, 1>());
-constexpr const TVariable kVar_pt_o_10D(BuiltInId::pt_o_10D,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtInt, EbpUndefined, EvqOut, 2, 1>());
-constexpr const TVariable kVar_pt_o_10E(BuiltInId::pt_o_10E,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 2, 1>());
-constexpr const TVariable kVar_pt_o_20B(BuiltInId::pt_o_20B,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 3, 1>());
-constexpr const TVariable kVar_pt_o_20D(BuiltInId::pt_o_20D,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtInt, EbpUndefined, EvqOut, 3, 1>());
-constexpr const TVariable kVar_pt_o_20E(BuiltInId::pt_o_20E,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 3, 1>());
-constexpr const TVariable kVar_pt_o_30B(BuiltInId::pt_o_30B,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 4, 1>());
-constexpr const TVariable kVar_pt_o_30D(BuiltInId::pt_o_30D,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtInt, EbpUndefined, EvqOut, 4, 1>());
-constexpr const TVariable kVar_pt_o_30E(BuiltInId::pt_o_30E,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 4, 1>());
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqInOut, 1, 1>());
+constexpr const TVariable kpt_o_00B(BuiltInId::pt_o_00B,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 1, 1>());
+constexpr const TVariable kpt_o_00D(BuiltInId::pt_o_00D,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtInt, EbpUndefined, EvqOut, 1, 1>());
+constexpr const TVariable kpt_o_00E(BuiltInId::pt_o_00E,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 1, 1>());
+constexpr const TVariable kpt_o_10B(BuiltInId::pt_o_10B,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 2, 1>());
+constexpr const TVariable kpt_o_10D(BuiltInId::pt_o_10D,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtInt, EbpUndefined, EvqOut, 2, 1>());
+constexpr const TVariable kpt_o_10E(BuiltInId::pt_o_10E,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 2, 1>());
+constexpr const TVariable kpt_o_20B(BuiltInId::pt_o_20B,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 3, 1>());
+constexpr const TVariable kpt_o_20D(BuiltInId::pt_o_20D,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtInt, EbpUndefined, EvqOut, 3, 1>());
+constexpr const TVariable kpt_o_20E(BuiltInId::pt_o_20E,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 3, 1>());
+constexpr const TVariable kpt_o_30B(BuiltInId::pt_o_30B,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 4, 1>());
+constexpr const TVariable kpt_o_30D(BuiltInId::pt_o_30D,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtInt, EbpUndefined, EvqOut, 4, 1>());
+constexpr const TVariable kpt_o_30E(BuiltInId::pt_o_30E,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 4, 1>());
 
 const TVariable *angle_BaseInstance()
 {
-    return &kVar_angle_BaseInstance;
+    return &kangle_BaseInstance;
 }
 
 const TVariable *angle_BaseVertex()
 {
-    return &kVar_angle_BaseVertex;
+    return &kangle_BaseVertex;
 }
 
 const TVariable *gl_BaseInstance()
 {
-    return &kVar_gl_BaseInstance;
+    return &kgl_BaseInstance;
 }
 
 const TVariable *gl_BaseVertex()
 {
-    return &kVar_gl_BaseVertex;
+    return &kgl_BaseVertex;
 }
 
 const TVariable *gl_DrawID()
 {
-    return &kVar_gl_DrawID;
+    return &kgl_DrawID;
 }
 
 const TVariable *gl_FragColor()
 {
-    return &kVar_gl_FragColor;
+    return &kgl_FragColor;
 }
 
 const TVariable *gl_FragCoord()
 {
-    return &kVar_gl_FragCoord;
+    return &kgl_FragCoord;
 }
 
 const TVariable *gl_FragDepth()
 {
-    return &kVar_gl_FragDepth;
+    return &kgl_FragDepth;
 }
 
 const TVariable *gl_FrontFacing()
 {
-    return &kVar_gl_FrontFacing;
+    return &kgl_FrontFacing;
 }
 
 const TVariable *gl_GlobalInvocationID()
 {
-    return &kVar_gl_GlobalInvocationID;
+    return &kgl_GlobalInvocationID;
 }
 
 const TVariable *gl_InstanceID()
 {
-    return &kVar_gl_InstanceID;
+    return &kgl_InstanceID;
 }
 
 const TVariable *gl_InstanceIndex()
 {
-    return &kVar_gl_InstanceIndex;
+    return &kgl_InstanceIndex;
 }
 
 const TVariable *gl_InvocationID()
 {
-    return &kVar_gl_InvocationID;
+    return &kgl_InvocationID;
 }
 
 const TVariable *gl_LastFragColor()
 {
-    return &kVar_gl_LastFragColor;
+    return &kgl_LastFragColor;
 }
 
 const TVariable *gl_LastFragColorARM()
 {
-    return &kVar_gl_LastFragColorARM;
+    return &kgl_LastFragColorARM;
 }
 
 const TVariable *gl_Layer()
 {
-    return &kVar_gl_Layer;
+    return &kgl_Layer;
 }
 
 const TVariable *gl_LayerGS()
 {
-    return &kVar_gl_LayerGS;
+    return &kgl_LayerGS;
 }
 
 const TVariable *gl_LayerVS()
 {
-    return &kVar_gl_LayerVS;
+    return &kgl_LayerVS;
 }
 
 const TVariable *gl_LocalInvocationID()
 {
-    return &kVar_gl_LocalInvocationID;
+    return &kgl_LocalInvocationID;
 }
 
 const TVariable *gl_LocalInvocationIndex()
 {
-    return &kVar_gl_LocalInvocationIndex;
+    return &kgl_LocalInvocationIndex;
 }
 
 const TVariable *gl_NumWorkGroups()
 {
-    return &kVar_gl_NumWorkGroups;
+    return &kgl_NumWorkGroups;
 }
 
 const TVariable *gl_PointCoord()
 {
-    return &kVar_gl_PointCoord;
+    return &kgl_PointCoord;
 }
 
 const TVariable *gl_PointSize()
 {
-    return &kVar_gl_PointSize;
+    return &kgl_PointSize;
 }
 
 const TVariable *gl_Position()
 {
-    return &kVar_gl_Position;
+    return &kgl_Position;
 }
 
 const TVariable *gl_PrimitiveID()
 {
-    return &kVar_gl_PrimitiveID;
+    return &kgl_PrimitiveID;
 }
 
 const TVariable *gl_PrimitiveIDGS()
 {
-    return &kVar_gl_PrimitiveIDGS;
+    return &kgl_PrimitiveIDGS;
 }
 
 const TVariable *gl_PrimitiveIDIn()
 {
-    return &kVar_gl_PrimitiveIDIn;
+    return &kgl_PrimitiveIDIn;
 }
 
 const TVariable *gl_SecondaryFragColorEXT()
 {
-    return &kVar_gl_SecondaryFragColorEXT;
+    return &kgl_SecondaryFragColorEXT;
 }
 
 const TVariable *gl_VertexID()
 {
-    return &kVar_gl_VertexID;
+    return &kgl_VertexID;
 }
 
 const TVariable *gl_VertexIndex()
 {
-    return &kVar_gl_VertexIndex;
+    return &kgl_VertexIndex;
 }
 
 const TVariable *gl_ViewID_OVR()
 {
-    return &kVar_gl_ViewID_OVR;
+    return &kgl_ViewID_OVR;
 }
 
 const TVariable *gl_ViewportIndex()
 {
-    return &kVar_gl_ViewportIndex;
+    return &kgl_ViewportIndex;
 }
 
 const TVariable *gl_WorkGroupID()
 {
-    return &kVar_gl_WorkGroupID;
+    return &kgl_WorkGroupID;
 }
 
 const TVariable *gl_WorkGroupSize()
 {
-    return &kVar_gl_WorkGroupSize;
+    return &kgl_WorkGroupSize;
 }
 
 }  // namespace BuiltInVariable
@@ -2052,1341 +2029,1120 @@
 {
 
 constexpr const TVariable **empty        = nullptr;
-constexpr const TVariable *p00B00B00B[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00B00B00F[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00F};
-constexpr const TVariable *p00B00B10B[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00B00B20B[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00B00B30B[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p00B00D[2]       = {&BuiltInVariable::kVar_pt00B,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00B10B[2]       = {&BuiltInVariable::kVar_pt00B,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00B20B[2]       = {&BuiltInVariable::kVar_pt00B,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00B30B[2]       = {&BuiltInVariable::kVar_pt00B,
-                                         &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p00B_o_00B[2]    = {&BuiltInVariable::kVar_pt00B,
-                                            &BuiltInVariable::kVar_pt_o_00B};
-constexpr const TVariable *p00B_o_00D[2]    = {&BuiltInVariable::kVar_pt00B,
-                                            &BuiltInVariable::kVar_pt_o_00D};
-constexpr const TVariable *p00D00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
+constexpr const TVariable *p00B00B00B[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00B00B00F[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00F};
+constexpr const TVariable *p00B00B10B[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00B00B20B[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00B00B30B[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p00B00D[2]    = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00B10B[2]    = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00B20B[2]    = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00B30B[2]    = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p00B_o_00B[2] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt_o_00B};
+constexpr const TVariable *p00B_o_00D[2] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt_o_00D};
+constexpr const TVariable *p00D00D00D00D[4] = {&BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00D00D_o_00D_o_00D[4] = {
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt_o_00D,
-    &BuiltInVariable::kVar_pt_o_00D};
-constexpr const TVariable *p00E00D00D[3] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00E00E00D00D[4] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00E00E00E[3] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
+    &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D, &BuiltInVariable::kpt_o_00D,
+    &BuiltInVariable::kpt_o_00D};
+constexpr const TVariable *p00E00D00D[3]    = {&BuiltInVariable::kpt00E, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00E00E00D00D[4] = {&BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00E00E00E[3]    = {&BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
 constexpr const TVariable *p00E00E_o_00E_o_00E[4] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt_o_00E,
-    &BuiltInVariable::kVar_pt_o_00E};
-constexpr const TVariable *p00G[1]          = {&BuiltInVariable::kVar_pt00G};
-constexpr const TVariable *p00I00D[2]       = {&BuiltInVariable::kVar_pt00I,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00I10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I10B00D[3] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E, &BuiltInVariable::kpt_o_00E,
+    &BuiltInVariable::kpt_o_00E};
+constexpr const TVariable *p00G[1]          = {&BuiltInVariable::kpt00G};
+constexpr const TVariable *p00I00D[2]       = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00I10B00B10D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I10B00D[3]    = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00I10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I10B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00I10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00I10D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I10B10D00B[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00I10B10D00D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00I10D00D10D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I20B00B10D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00I20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00I30B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00I, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I20B10D00B[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00I30B00B10D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00I30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I30B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00J00D[2]       = {&BuiltInVariable::kVar_pt00J,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00J20B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00I, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I30B10D00B[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00J00D[2]       = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00J20B00B20D[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00J20B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00J20B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00J20D00D20D[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00J30B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00J, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00J20B20D00B[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00J20D00D20D[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00J30B00B20D[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00J30B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00J30B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00K00D[2]    = {&BuiltInVariable::kVar_pt00K,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00K20B00B[3] = {
-    &BuiltInVariable::kVar_pt00K, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00K20B00D[3] = {
-    &BuiltInVariable::kVar_pt00K, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00K20B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00K, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00L00D[2]       = {&BuiltInVariable::kVar_pt00L,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00L20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00L20B00D[3] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00J, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00J30B20D00B[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00K00D[2]       = {&BuiltInVariable::kpt00K, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00K20B00B[3]    = {&BuiltInVariable::kpt00K, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00K20B00D[3]    = {&BuiltInVariable::kpt00K, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00K20B20B20B[4] = {&BuiltInVariable::kpt00K, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00L00D[2]       = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00L20B00B10D[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00L20B00D[3]    = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00L20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00L20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00L20B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00L20D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00M00D[2]    = {&BuiltInVariable::kVar_pt00M,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00M10B00B[3] = {
-    &BuiltInVariable::kVar_pt00M, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00M10D00D[3] = {
-    &BuiltInVariable::kVar_pt00M, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00M20B00B[3] = {
-    &BuiltInVariable::kVar_pt00M, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00M30B00B[3] = {
-    &BuiltInVariable::kVar_pt00M, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00N00D[2]    = {&BuiltInVariable::kVar_pt00N,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00N10B00B[3] = {
-    &BuiltInVariable::kVar_pt00N, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00N10D00D[3] = {
-    &BuiltInVariable::kVar_pt00N, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00N20B00B[3] = {
-    &BuiltInVariable::kVar_pt00N, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00N30B00B[3] = {
-    &BuiltInVariable::kVar_pt00N, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00O10B[2]    = {&BuiltInVariable::kVar_pt00O,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00O20B[2]    = {&BuiltInVariable::kVar_pt00O,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00O30B[2]    = {&BuiltInVariable::kVar_pt00O,
-                                         &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p00P10D00D[3] = {
-    &BuiltInVariable::kVar_pt00P, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00Q20D00D[3] = {
-    &BuiltInVariable::kVar_pt00Q, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00R00D[2]       = {&BuiltInVariable::kVar_pt00R,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00R10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R10B00D[3] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00L20B10D00B[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00L20B10D00D[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00L20D00D10D[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00M00D[2]       = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00M10B00B[3]    = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00M10D00D[3]    = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00M20B00B[3]    = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00M30B00B[3]    = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00N00D[2]       = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00N10B00B[3]    = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00N10D00D[3]    = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00N20B00B[3]    = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00N30B00B[3]    = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00O10B[2]       = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00O20B[2]       = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00O30B[2]       = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p00P10D00D[3]    = {&BuiltInVariable::kpt00P, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00Q20D00D[3]    = {&BuiltInVariable::kpt00Q, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00R00D[2]       = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00R10B00B10D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R10B00D[3]    = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00R10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R10B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00R10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00R10D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R10B10D00B[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00R10B10D00D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00R10D00D10D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R20B00B10D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00R20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00R30B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00R, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R20B10D00B[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00R30B00B10D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00R30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R30B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00S00D[2]       = {&BuiltInVariable::kVar_pt00S,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00S20B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00R, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R30B10D00B[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00S00D[2]       = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00S20B00B20D[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00S20B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00S20B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00S20D00D20D[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00S30B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00S, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00S20B20D00B[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00S20D00D20D[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00S30B00B20D[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00S30B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00S30B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00T00D[2]    = {&BuiltInVariable::kVar_pt00T,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00T20B00B[3] = {
-    &BuiltInVariable::kVar_pt00T, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00T20B00D[3] = {
-    &BuiltInVariable::kVar_pt00T, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00T20B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00T, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00U00D[2]       = {&BuiltInVariable::kVar_pt00U,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00U20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00U20B00D[3] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00S, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00S30B20D00B[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00T00D[2]       = {&BuiltInVariable::kpt00T, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00T20B00B[3]    = {&BuiltInVariable::kpt00T, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00T20B00D[3]    = {&BuiltInVariable::kpt00T, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00T20B20B20B[4] = {&BuiltInVariable::kpt00T, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00U00D[2]       = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00U20B00B10D[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00U20B00D[3]    = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00U20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00U20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00U20B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00U20D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00V10D00D[3] = {
-    &BuiltInVariable::kVar_pt00V, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00W20D00D[3] = {
-    &BuiltInVariable::kVar_pt00W, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00X00D[2]       = {&BuiltInVariable::kVar_pt00X,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00X10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X10B00D[3] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00U20B10D00B[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00U20B10D00D[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00U20D00D10D[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00V10D00D[3]    = {&BuiltInVariable::kpt00V, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00W20D00D[3]    = {&BuiltInVariable::kpt00W, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00X00D[2]       = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00X10B00B10D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X10B00D[3]    = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00X10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X10B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00X10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00X10D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X10B10D00B[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00X10B10D00D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00X10D00D10D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X20B00B10D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00X20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00X30B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00X, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X20B10D00B[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00X30B00B10D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00X30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X30B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00Y00D[2]       = {&BuiltInVariable::kVar_pt00Y,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00Y20B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00X, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X30B10D00B[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00Y00D[2]       = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00Y20B00B20D[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00Y20B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00Y20B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00Y20D00D20D[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00Y30B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00Y, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00Y20B20D00B[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00Y20D00D20D[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00Y30B00B20D[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00Y30B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00Y30B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00Z00D[2]    = {&BuiltInVariable::kVar_pt00Z,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00Z20B00B[3] = {
-    &BuiltInVariable::kVar_pt00Z, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00Z20B00D[3] = {
-    &BuiltInVariable::kVar_pt00Z, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00Z20B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00Z, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00a00D[2]       = {&BuiltInVariable::kVar_pt00a,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00a20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00a20B00D[3] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00Y, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00Y30B20D00B[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00Z00D[2]       = {&BuiltInVariable::kpt00Z, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00Z20B00B[3]    = {&BuiltInVariable::kpt00Z, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00Z20B00D[3]    = {&BuiltInVariable::kpt00Z, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00Z20B20B20B[4] = {&BuiltInVariable::kpt00Z, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00a00D[2]       = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00a20B00B10D[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00a20B00D[3]    = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00a20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00a20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00a20B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00a20D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00b10D00D[3] = {
-    &BuiltInVariable::kVar_pt00b, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00c20D00D[3] = {
-    &BuiltInVariable::kVar_pt00c, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00d00D[2]       = {&BuiltInVariable::kVar_pt00d,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00d10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00d20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00a20B10D00B[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00a20B10D00D[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00a20D00D10D[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00b10D00D[3]    = {&BuiltInVariable::kpt00b, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00c20D00D[3]    = {&BuiltInVariable::kpt00c, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00d00D[2]       = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00d10B00B10D[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00d20B00B10D[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00d20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00d20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00d30B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00d, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00d20B10D00B[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00d30B00B10D[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00d30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00d30B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00e00D[2]    = {&BuiltInVariable::kVar_pt00e,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00e20B00B[3] = {
-    &BuiltInVariable::kVar_pt00e, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00e30B00B[3] = {
-    &BuiltInVariable::kVar_pt00e, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00e30B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00e, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00f00D[2]       = {&BuiltInVariable::kVar_pt00f,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00f20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00f, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00d, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00d30B10D00B[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00e00D[2]       = {&BuiltInVariable::kpt00e, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00e20B00B[3]    = {&BuiltInVariable::kpt00e, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00e30B00B[3]    = {&BuiltInVariable::kpt00e, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00e30B20B20B[4] = {&BuiltInVariable::kpt00e, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00f00D[2]       = {&BuiltInVariable::kpt00f, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00f20B00B10D[4] = {&BuiltInVariable::kpt00f, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00f30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00f, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00y10D30B[3] = {
-    &BuiltInVariable::kVar_pt00y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p00z10D30D[3] = {
-    &BuiltInVariable::kVar_pt00z, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01A10D30E[3] = {
-    &BuiltInVariable::kVar_pt01A, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01B20D30B[3] = {
-    &BuiltInVariable::kVar_pt01B, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01C20D30D[3] = {
-    &BuiltInVariable::kVar_pt01C, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01D20D30E[3] = {
-    &BuiltInVariable::kVar_pt01D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01E20D30B[3] = {
-    &BuiltInVariable::kVar_pt01E, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01F20D30D[3] = {
-    &BuiltInVariable::kVar_pt01F, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01G20D30E[3] = {
-    &BuiltInVariable::kVar_pt01G, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01H20D30B[3] = {
-    &BuiltInVariable::kVar_pt01H, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01I20D30D[3] = {
-    &BuiltInVariable::kVar_pt01I, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01J20D30E[3] = {
-    &BuiltInVariable::kVar_pt01J, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p10B00B00B[3] = {
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p10B10B00B[3] = {
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p10B10B10B[3] = {
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p10B10B10F[3] = {
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10F};
-constexpr const TVariable *p10B10D[2]    = {&BuiltInVariable::kVar_pt10B,
-                                         &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p10B20B[2]    = {&BuiltInVariable::kVar_pt10B,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p10B30B[2]    = {&BuiltInVariable::kVar_pt10B,
-                                         &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p10B_o_10B[2] = {&BuiltInVariable::kVar_pt10B,
-                                            &BuiltInVariable::kVar_pt_o_10B};
-constexpr const TVariable *p10B_o_10D[2] = {&BuiltInVariable::kVar_pt10B,
-                                            &BuiltInVariable::kVar_pt_o_10D};
-constexpr const TVariable *p10D00D00D[3] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10D10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10D10D10D[3] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00f, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00y10D30B[3] = {&BuiltInVariable::kpt00y, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p00z10D30D[3] = {&BuiltInVariable::kpt00z, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01A10D30E[3] = {&BuiltInVariable::kpt01A, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01B20D30B[3] = {&BuiltInVariable::kpt01B, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01C20D30D[3] = {&BuiltInVariable::kpt01C, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01D20D30E[3] = {&BuiltInVariable::kpt01D, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01E20D30B[3] = {&BuiltInVariable::kpt01E, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01F20D30D[3] = {&BuiltInVariable::kpt01F, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01G20D30E[3] = {&BuiltInVariable::kpt01G, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01H20D30B[3] = {&BuiltInVariable::kpt01H, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01I20D30D[3] = {&BuiltInVariable::kpt01I, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01J20D30E[3] = {&BuiltInVariable::kpt01J, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p10B00B00B[3] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p10B10B00B[3] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p10B10B10B[3] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt10B};
+constexpr const TVariable *p10B10B10F[3] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt10F};
+constexpr const TVariable *p10B10D[2]    = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p10B20B[2]    = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p10B30B[2]    = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p10B_o_10B[2] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt_o_10B};
+constexpr const TVariable *p10B_o_10D[2] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt_o_10D};
+constexpr const TVariable *p10D00D00D[3] = {&BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10D10D00D00D[4] = {&BuiltInVariable::kpt10D, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10D10D10D[3]    = {&BuiltInVariable::kpt10D, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt10D};
 constexpr const TVariable *p10D10D_o_10D_o_10D[4] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt_o_10D,
-    &BuiltInVariable::kVar_pt_o_10D};
-constexpr const TVariable *p10E00D00D[3] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10E00E00E[3] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p10E10E00D00D[4] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10E10E10E[3] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E};
+    &BuiltInVariable::kpt10D, &BuiltInVariable::kpt10D, &BuiltInVariable::kpt_o_10D,
+    &BuiltInVariable::kpt_o_10D};
+constexpr const TVariable *p10E00D00D[3]    = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10E00E00E[3]    = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
+constexpr const TVariable *p10E10E00D00D[4] = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt10E,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10E10E10E[3]    = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt10E,
+                                            &BuiltInVariable::kpt10E};
 constexpr const TVariable *p10E10E_o_10E_o_10E[4] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt_o_10E,
-    &BuiltInVariable::kVar_pt_o_10E};
-constexpr const TVariable *p10F10F[2]    = {&BuiltInVariable::kVar_pt10F,
-                                         &BuiltInVariable::kVar_pt10F};
-constexpr const TVariable *p20B00B00B[3] = {
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p20B00H[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt00H};
-constexpr const TVariable *p20B10B[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p20B20B00B[3] = {
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p20B20B20B[3] = {
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p20B20B20F[3] = {
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20F};
-constexpr const TVariable *p20B20D[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p20B30B[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p20B_o_20B[2] = {&BuiltInVariable::kVar_pt20B,
-                                            &BuiltInVariable::kVar_pt_o_20B};
-constexpr const TVariable *p20B_o_20D[2] = {&BuiltInVariable::kVar_pt20B,
-                                            &BuiltInVariable::kVar_pt_o_20D};
-constexpr const TVariable *p20D00D00D[3] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20D20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20D20D20D[3] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt10E, &BuiltInVariable::kpt10E, &BuiltInVariable::kpt_o_10E,
+    &BuiltInVariable::kpt_o_10E};
+constexpr const TVariable *p10F10F[2]    = {&BuiltInVariable::kpt10F, &BuiltInVariable::kpt10F};
+constexpr const TVariable *p20B00B00B[3] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p20B00H[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt00H};
+constexpr const TVariable *p20B10B[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p20B20B00B[3] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p20B20B20B[3] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt20B};
+constexpr const TVariable *p20B20B20F[3] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt20F};
+constexpr const TVariable *p20B20D[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p20B30B[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p20B_o_20B[2] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt_o_20B};
+constexpr const TVariable *p20B_o_20D[2] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt_o_20D};
+constexpr const TVariable *p20D00D00D[3] = {&BuiltInVariable::kpt20D, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20D20D00D00D[4] = {&BuiltInVariable::kpt20D, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20D20D20D[3]    = {&BuiltInVariable::kpt20D, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt20D};
 constexpr const TVariable *p20D20D_o_20D_o_20D[4] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt_o_20D,
-    &BuiltInVariable::kVar_pt_o_20D};
-constexpr const TVariable *p20E00D00D[3] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20E00E00E[3] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p20E20E00D00D[4] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20E20E20E[3] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E};
+    &BuiltInVariable::kpt20D, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt_o_20D,
+    &BuiltInVariable::kpt_o_20D};
+constexpr const TVariable *p20E00D00D[3]    = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20E00E00E[3]    = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
+constexpr const TVariable *p20E20E00D00D[4] = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt20E,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20E20E20E[3]    = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt20E,
+                                            &BuiltInVariable::kpt20E};
 constexpr const TVariable *p20E20E_o_20E_o_20E[4] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt_o_20E,
-    &BuiltInVariable::kVar_pt_o_20E};
-constexpr const TVariable *p20F20F[2]    = {&BuiltInVariable::kVar_pt20F,
-                                         &BuiltInVariable::kVar_pt20F};
-constexpr const TVariable *p30B00B00B[3] = {
-    &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p30B10B[2]    = {&BuiltInVariable::kVar_pt30B,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p30B20B[2]    = {&BuiltInVariable::kVar_pt30B,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p30B30B00B[3] = {
-    &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p30B30B30B[3] = {
-    &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p30B30B30F[3] = {
-    &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30F};
-constexpr const TVariable *p30B30D[2]    = {&BuiltInVariable::kVar_pt30B,
-                                         &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p30B_o_30B[2] = {&BuiltInVariable::kVar_pt30B,
-                                            &BuiltInVariable::kVar_pt_o_30B};
-constexpr const TVariable *p30B_o_30D[2] = {&BuiltInVariable::kVar_pt30B,
-                                            &BuiltInVariable::kVar_pt_o_30D};
-constexpr const TVariable *p30D00D00D[3] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30D30D00D00D[4] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30D30D30D[3] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D};
+    &BuiltInVariable::kpt20E, &BuiltInVariable::kpt20E, &BuiltInVariable::kpt_o_20E,
+    &BuiltInVariable::kpt_o_20E};
+constexpr const TVariable *p20F20F[2]    = {&BuiltInVariable::kpt20F, &BuiltInVariable::kpt20F};
+constexpr const TVariable *p30B00B00B[3] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p30B10B[2]    = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p30B20B[2]    = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p30B30B00B[3] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p30B30B30B[3] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p30B30B30F[3] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt30F};
+constexpr const TVariable *p30B30D[2]    = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt30D};
+constexpr const TVariable *p30B_o_30B[2] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt_o_30B};
+constexpr const TVariable *p30B_o_30D[2] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt_o_30D};
+constexpr const TVariable *p30D00D00D[3] = {&BuiltInVariable::kpt30D, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30D30D00D00D[4] = {&BuiltInVariable::kpt30D, &BuiltInVariable::kpt30D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30D30D30D[3]    = {&BuiltInVariable::kpt30D, &BuiltInVariable::kpt30D,
+                                            &BuiltInVariable::kpt30D};
 constexpr const TVariable *p30D30D_o_30D_o_30D[4] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt_o_30D,
-    &BuiltInVariable::kVar_pt_o_30D};
-constexpr const TVariable *p30E00D00D[3] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30E00E00E[3] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p30E30E00D00D[4] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30E30E30E[3] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E};
+    &BuiltInVariable::kpt30D, &BuiltInVariable::kpt30D, &BuiltInVariable::kpt_o_30D,
+    &BuiltInVariable::kpt_o_30D};
+constexpr const TVariable *p30E00D00D[3]    = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30E00E00E[3]    = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
+constexpr const TVariable *p30E30E00D00D[4] = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt30E,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30E30E30E[3]    = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt30E,
+                                            &BuiltInVariable::kpt30E};
 constexpr const TVariable *p30E30E_o_30E_o_30E[4] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt_o_30E,
-    &BuiltInVariable::kVar_pt_o_30E};
-constexpr const TVariable *p30F30F[2]        = {&BuiltInVariable::kVar_pt30F,
-                                         &BuiltInVariable::kVar_pt30F};
-constexpr const TVariable *p50B50B[2]        = {&BuiltInVariable::kVar_pt50B,
-                                         &BuiltInVariable::kVar_pt50B};
-constexpr const TVariable *p60B60B[2]        = {&BuiltInVariable::kVar_pt60B,
-                                         &BuiltInVariable::kVar_pt60B};
-constexpr const TVariable *p70B70B[2]        = {&BuiltInVariable::kVar_pt70B,
-                                         &BuiltInVariable::kVar_pt70B};
-constexpr const TVariable *p90B90B[2]        = {&BuiltInVariable::kVar_pt90B,
-                                         &BuiltInVariable::kVar_pt90B};
-constexpr const TVariable *pA0BA0B[2]        = {&BuiltInVariable::kVar_ptA0B,
-                                         &BuiltInVariable::kVar_ptA0B};
-constexpr const TVariable *pB0BB0B[2]        = {&BuiltInVariable::kVar_ptB0B,
-                                         &BuiltInVariable::kVar_ptB0B};
-constexpr const TVariable *pD0BD0B[2]        = {&BuiltInVariable::kVar_ptD0B,
-                                         &BuiltInVariable::kVar_ptD0B};
-constexpr const TVariable *pE0BE0B[2]        = {&BuiltInVariable::kVar_ptE0B,
-                                         &BuiltInVariable::kVar_ptE0B};
-constexpr const TVariable *pF0BF0B[2]        = {&BuiltInVariable::kVar_ptF0B,
-                                         &BuiltInVariable::kVar_ptF0B};
-constexpr const TVariable *p_io_00D00D00D[3] = {
-    &BuiltInVariable::kVar_pt_io_00D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p_io_00E00E00E[3] = {
-    &BuiltInVariable::kVar_pt_io_00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
+    &BuiltInVariable::kpt30E, &BuiltInVariable::kpt30E, &BuiltInVariable::kpt_o_30E,
+    &BuiltInVariable::kpt_o_30E};
+constexpr const TVariable *p30F30F[2]        = {&BuiltInVariable::kpt30F, &BuiltInVariable::kpt30F};
+constexpr const TVariable *p50B50B[2]        = {&BuiltInVariable::kpt50B, &BuiltInVariable::kpt50B};
+constexpr const TVariable *p60B60B[2]        = {&BuiltInVariable::kpt60B, &BuiltInVariable::kpt60B};
+constexpr const TVariable *p70B70B[2]        = {&BuiltInVariable::kpt70B, &BuiltInVariable::kpt70B};
+constexpr const TVariable *p90B90B[2]        = {&BuiltInVariable::kpt90B, &BuiltInVariable::kpt90B};
+constexpr const TVariable *pA0BA0B[2]        = {&BuiltInVariable::kptA0B, &BuiltInVariable::kptA0B};
+constexpr const TVariable *pB0BB0B[2]        = {&BuiltInVariable::kptB0B, &BuiltInVariable::kptB0B};
+constexpr const TVariable *pD0BD0B[2]        = {&BuiltInVariable::kptD0B, &BuiltInVariable::kptD0B};
+constexpr const TVariable *pE0BE0B[2]        = {&BuiltInVariable::kptE0B, &BuiltInVariable::kptE0B};
+constexpr const TVariable *pF0BF0B[2]        = {&BuiltInVariable::kptF0B, &BuiltInVariable::kptF0B};
+constexpr const TVariable *p_io_00D00D00D[3] = {&BuiltInVariable::kpt_io_00D,
+                                                &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p_io_00E00E00E[3] = {&BuiltInVariable::kpt_io_00E,
+                                                &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
 
 }  // namespace BuiltInParameters
 
-namespace UnmangledBuiltIns
-{
-
-constexpr const UnmangledBuiltIn ARB_texture_rectangle(TExtension::ARB_texture_rectangle);
-constexpr const UnmangledBuiltIn EXT_YUV_target(TExtension::EXT_YUV_target);
-constexpr const UnmangledBuiltIn EXT_geometry_shader(TExtension::EXT_geometry_shader);
-constexpr const UnmangledBuiltIn EXT_shader_texture_lod(TExtension::EXT_shader_texture_lod);
-constexpr const UnmangledBuiltIn OES_EGL_image_external_essl3(
-    TExtension::OES_EGL_image_external_essl3);
-constexpr const UnmangledBuiltIn OES_texture_3D(TExtension::OES_texture_3D);
-constexpr const UnmangledBuiltIn UNDEFINED(TExtension::UNDEFINED);
-
-}  // namespace UnmangledBuiltIns
-
 // TODO(oetuaho): Would be nice to make this a class instead of a namespace so that we could friend
 // this from TFunction. Now symbol constructors taking an id have to be public even though they're
 // not supposed to be accessible from outside of here. http://anglebug.com/2390
-namespace BuiltInFunction
+namespace Func
 {
 
-constexpr const TFunction function_radians_00B(
-    BuiltInId::radians_Float1,
-    BuiltInName::radians,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpRadians,
-    true);
-constexpr const TFunction function_radians_10B(
-    BuiltInId::radians_Float2,
-    BuiltInName::radians,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpRadians,
-    true);
-constexpr const TFunction function_radians_20B(
-    BuiltInId::radians_Float3,
-    BuiltInName::radians,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpRadians,
-    true);
-constexpr const TFunction function_radians_30B(
-    BuiltInId::radians_Float4,
-    BuiltInName::radians,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpRadians,
-    true);
-constexpr const TFunction function_degrees_00B(
-    BuiltInId::degrees_Float1,
-    BuiltInName::degrees,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDegrees,
-    true);
-constexpr const TFunction function_degrees_10B(
-    BuiltInId::degrees_Float2,
-    BuiltInName::degrees,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDegrees,
-    true);
-constexpr const TFunction function_degrees_20B(
-    BuiltInId::degrees_Float3,
-    BuiltInName::degrees,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDegrees,
-    true);
-constexpr const TFunction function_degrees_30B(
-    BuiltInId::degrees_Float4,
-    BuiltInName::degrees,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDegrees,
-    true);
-constexpr const TFunction function_sin_00B(
-    BuiltInId::sin_Float1,
-    BuiltInName::sin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSin,
-    true);
-constexpr const TFunction function_sin_10B(
-    BuiltInId::sin_Float2,
-    BuiltInName::sin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSin,
-    true);
-constexpr const TFunction function_sin_20B(
-    BuiltInId::sin_Float3,
-    BuiltInName::sin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSin,
-    true);
-constexpr const TFunction function_sin_30B(
-    BuiltInId::sin_Float4,
-    BuiltInName::sin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSin,
-    true);
-constexpr const TFunction function_cos_00B(
-    BuiltInId::cos_Float1,
-    BuiltInName::cos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCos,
-    true);
-constexpr const TFunction function_cos_10B(
-    BuiltInId::cos_Float2,
-    BuiltInName::cos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCos,
-    true);
-constexpr const TFunction function_cos_20B(
-    BuiltInId::cos_Float3,
-    BuiltInName::cos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCos,
-    true);
-constexpr const TFunction function_cos_30B(
-    BuiltInId::cos_Float4,
-    BuiltInName::cos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCos,
-    true);
-constexpr const TFunction function_tan_00B(
-    BuiltInId::tan_Float1,
-    BuiltInName::tan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpTan,
-    true);
-constexpr const TFunction function_tan_10B(
-    BuiltInId::tan_Float2,
-    BuiltInName::tan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpTan,
-    true);
-constexpr const TFunction function_tan_20B(
-    BuiltInId::tan_Float3,
-    BuiltInName::tan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpTan,
-    true);
-constexpr const TFunction function_tan_30B(
-    BuiltInId::tan_Float4,
-    BuiltInName::tan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpTan,
-    true);
-constexpr const TFunction function_asin_00B(
-    BuiltInId::asin_Float1,
-    BuiltInName::asin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAsin,
-    true);
-constexpr const TFunction function_asin_10B(
-    BuiltInId::asin_Float2,
-    BuiltInName::asin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAsin,
-    true);
-constexpr const TFunction function_asin_20B(
-    BuiltInId::asin_Float3,
-    BuiltInName::asin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAsin,
-    true);
-constexpr const TFunction function_asin_30B(
-    BuiltInId::asin_Float4,
-    BuiltInName::asin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAsin,
-    true);
-constexpr const TFunction function_acos_00B(
-    BuiltInId::acos_Float1,
-    BuiltInName::acos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAcos,
-    true);
-constexpr const TFunction function_acos_10B(
-    BuiltInId::acos_Float2,
-    BuiltInName::acos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAcos,
-    true);
-constexpr const TFunction function_acos_20B(
-    BuiltInId::acos_Float3,
-    BuiltInName::acos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAcos,
-    true);
-constexpr const TFunction function_acos_30B(
-    BuiltInId::acos_Float4,
-    BuiltInName::acos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAcos,
-    true);
-constexpr const TFunction function_atan_00B00B(
-    BuiltInId::atan_Float1_Float1,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_10B10B(
-    BuiltInId::atan_Float2_Float2,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_20B20B(
-    BuiltInId::atan_Float3_Float3,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_30B30B(
-    BuiltInId::atan_Float4_Float4,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_00B(
-    BuiltInId::atan_Float1,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_10B(
-    BuiltInId::atan_Float2,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_20B(
-    BuiltInId::atan_Float3,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_30B(
-    BuiltInId::atan_Float4,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_sinh_00B(
-    BuiltInId::sinh_Float1,
-    BuiltInName::sinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSinh,
-    true);
-constexpr const TFunction function_sinh_10B(
-    BuiltInId::sinh_Float2,
-    BuiltInName::sinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSinh,
-    true);
-constexpr const TFunction function_sinh_20B(
-    BuiltInId::sinh_Float3,
-    BuiltInName::sinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSinh,
-    true);
-constexpr const TFunction function_sinh_30B(
-    BuiltInId::sinh_Float4,
-    BuiltInName::sinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSinh,
-    true);
-constexpr const TFunction function_cosh_00B(
-    BuiltInId::cosh_Float1,
-    BuiltInName::cosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCosh,
-    true);
-constexpr const TFunction function_cosh_10B(
-    BuiltInId::cosh_Float2,
-    BuiltInName::cosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCosh,
-    true);
-constexpr const TFunction function_cosh_20B(
-    BuiltInId::cosh_Float3,
-    BuiltInName::cosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCosh,
-    true);
-constexpr const TFunction function_cosh_30B(
-    BuiltInId::cosh_Float4,
-    BuiltInName::cosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCosh,
-    true);
-constexpr const TFunction function_tanh_00B(
-    BuiltInId::tanh_Float1,
-    BuiltInName::tanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpTanh,
-    true);
-constexpr const TFunction function_tanh_10B(
-    BuiltInId::tanh_Float2,
-    BuiltInName::tanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpTanh,
-    true);
-constexpr const TFunction function_tanh_20B(
-    BuiltInId::tanh_Float3,
-    BuiltInName::tanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpTanh,
-    true);
-constexpr const TFunction function_tanh_30B(
-    BuiltInId::tanh_Float4,
-    BuiltInName::tanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpTanh,
-    true);
-constexpr const TFunction function_asinh_00B(
-    BuiltInId::asinh_Float1,
-    BuiltInName::asinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAsinh,
-    true);
-constexpr const TFunction function_asinh_10B(
-    BuiltInId::asinh_Float2,
-    BuiltInName::asinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAsinh,
-    true);
-constexpr const TFunction function_asinh_20B(
-    BuiltInId::asinh_Float3,
-    BuiltInName::asinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAsinh,
-    true);
-constexpr const TFunction function_asinh_30B(
-    BuiltInId::asinh_Float4,
-    BuiltInName::asinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAsinh,
-    true);
-constexpr const TFunction function_acosh_00B(
-    BuiltInId::acosh_Float1,
-    BuiltInName::acosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAcosh,
-    true);
-constexpr const TFunction function_acosh_10B(
-    BuiltInId::acosh_Float2,
-    BuiltInName::acosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAcosh,
-    true);
-constexpr const TFunction function_acosh_20B(
-    BuiltInId::acosh_Float3,
-    BuiltInName::acosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAcosh,
-    true);
-constexpr const TFunction function_acosh_30B(
-    BuiltInId::acosh_Float4,
-    BuiltInName::acosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAcosh,
-    true);
-constexpr const TFunction function_atanh_00B(
-    BuiltInId::atanh_Float1,
-    BuiltInName::atanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtanh,
-    true);
-constexpr const TFunction function_atanh_10B(
-    BuiltInId::atanh_Float2,
-    BuiltInName::atanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAtanh,
-    true);
-constexpr const TFunction function_atanh_20B(
-    BuiltInId::atanh_Float3,
-    BuiltInName::atanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAtanh,
-    true);
-constexpr const TFunction function_atanh_30B(
-    BuiltInId::atanh_Float4,
-    BuiltInName::atanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAtanh,
-    true);
-constexpr const TFunction function_pow_00B00B(
-    BuiltInId::pow_Float1_Float1,
-    BuiltInName::pow,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpPow,
-    true);
-constexpr const TFunction function_pow_10B10B(
-    BuiltInId::pow_Float2_Float2,
-    BuiltInName::pow,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpPow,
-    true);
-constexpr const TFunction function_pow_20B20B(
-    BuiltInId::pow_Float3_Float3,
-    BuiltInName::pow,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpPow,
-    true);
-constexpr const TFunction function_pow_30B30B(
-    BuiltInId::pow_Float4_Float4,
-    BuiltInName::pow,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpPow,
-    true);
-constexpr const TFunction function_exp_00B(
-    BuiltInId::exp_Float1,
-    BuiltInName::exp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpExp,
-    true);
-constexpr const TFunction function_exp_10B(
-    BuiltInId::exp_Float2,
-    BuiltInName::exp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpExp,
-    true);
-constexpr const TFunction function_exp_20B(
-    BuiltInId::exp_Float3,
-    BuiltInName::exp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpExp,
-    true);
-constexpr const TFunction function_exp_30B(
-    BuiltInId::exp_Float4,
-    BuiltInName::exp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpExp,
-    true);
-constexpr const TFunction function_log_00B(
-    BuiltInId::log_Float1,
-    BuiltInName::log,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLog,
-    true);
-constexpr const TFunction function_log_10B(
-    BuiltInId::log_Float2,
-    BuiltInName::log,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLog,
-    true);
-constexpr const TFunction function_log_20B(
-    BuiltInId::log_Float3,
-    BuiltInName::log,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLog,
-    true);
-constexpr const TFunction function_log_30B(
-    BuiltInId::log_Float4,
-    BuiltInName::log,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLog,
-    true);
-constexpr const TFunction function_exp2_00B(
-    BuiltInId::exp2_Float1,
-    BuiltInName::exp2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpExp2,
-    true);
-constexpr const TFunction function_exp2_10B(
-    BuiltInId::exp2_Float2,
-    BuiltInName::exp2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpExp2,
-    true);
-constexpr const TFunction function_exp2_20B(
-    BuiltInId::exp2_Float3,
-    BuiltInName::exp2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpExp2,
-    true);
-constexpr const TFunction function_exp2_30B(
-    BuiltInId::exp2_Float4,
-    BuiltInName::exp2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpExp2,
-    true);
-constexpr const TFunction function_log2_00B(
-    BuiltInId::log2_Float1,
-    BuiltInName::log2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLog2,
-    true);
-constexpr const TFunction function_log2_10B(
-    BuiltInId::log2_Float2,
-    BuiltInName::log2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLog2,
-    true);
-constexpr const TFunction function_log2_20B(
-    BuiltInId::log2_Float3,
-    BuiltInName::log2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLog2,
-    true);
-constexpr const TFunction function_log2_30B(
-    BuiltInId::log2_Float4,
-    BuiltInName::log2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLog2,
-    true);
-constexpr const TFunction function_sqrt_00B(
-    BuiltInId::sqrt_Float1,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_10B(
-    BuiltInId::sqrt_Float2,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_20B(
-    BuiltInId::sqrt_Float3,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_30B(
-    BuiltInId::sqrt_Float4,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_inversesqrt_00B(
+constexpr const TFunction radians_00B(BuiltInId::radians_Float1,
+                                      BuiltInName::radians,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B30B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpRadians,
+                                      true);
+constexpr const TFunction radians_10B(BuiltInId::radians_Float2,
+                                      BuiltInName::radians,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B20B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpRadians,
+                                      true);
+constexpr const TFunction radians_20B(BuiltInId::radians_Float3,
+                                      BuiltInName::radians,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B10B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpRadians,
+                                      true);
+constexpr const TFunction radians_30B(BuiltInId::radians_Float4,
+                                      BuiltInName::radians,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B00B00B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpRadians,
+                                      true);
+constexpr const TFunction degrees_00B(BuiltInId::degrees_Float1,
+                                      BuiltInName::degrees,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B30B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpDegrees,
+                                      true);
+constexpr const TFunction degrees_10B(BuiltInId::degrees_Float2,
+                                      BuiltInName::degrees,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B20B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpDegrees,
+                                      true);
+constexpr const TFunction degrees_20B(BuiltInId::degrees_Float3,
+                                      BuiltInName::degrees,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B10B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpDegrees,
+                                      true);
+constexpr const TFunction degrees_30B(BuiltInId::degrees_Float4,
+                                      BuiltInName::degrees,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B00B00B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpDegrees,
+                                      true);
+constexpr const TFunction sin_00B(BuiltInId::sin_Float1,
+                                  BuiltInName::sin,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpSin,
+                                  true);
+constexpr const TFunction sin_10B(BuiltInId::sin_Float2,
+                                  BuiltInName::sin,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B20B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpSin,
+                                  true);
+constexpr const TFunction sin_20B(BuiltInId::sin_Float3,
+                                  BuiltInName::sin,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpSin,
+                                  true);
+constexpr const TFunction sin_30B(BuiltInId::sin_Float4,
+                                  BuiltInName::sin,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B00B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpSin,
+                                  true);
+constexpr const TFunction cos_00B(BuiltInId::cos_Float1,
+                                  BuiltInName::cos,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpCos,
+                                  true);
+constexpr const TFunction cos_10B(BuiltInId::cos_Float2,
+                                  BuiltInName::cos,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B20B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpCos,
+                                  true);
+constexpr const TFunction cos_20B(BuiltInId::cos_Float3,
+                                  BuiltInName::cos,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpCos,
+                                  true);
+constexpr const TFunction cos_30B(BuiltInId::cos_Float4,
+                                  BuiltInName::cos,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B00B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpCos,
+                                  true);
+constexpr const TFunction tan_00B(BuiltInId::tan_Float1,
+                                  BuiltInName::tan,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpTan,
+                                  true);
+constexpr const TFunction tan_10B(BuiltInId::tan_Float2,
+                                  BuiltInName::tan,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B20B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpTan,
+                                  true);
+constexpr const TFunction tan_20B(BuiltInId::tan_Float3,
+                                  BuiltInName::tan,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpTan,
+                                  true);
+constexpr const TFunction tan_30B(BuiltInId::tan_Float4,
+                                  BuiltInName::tan,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B00B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpTan,
+                                  true);
+constexpr const TFunction asin_00B(BuiltInId::asin_Float1,
+                                   BuiltInName::asin,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpAsin,
+                                   true);
+constexpr const TFunction asin_10B(BuiltInId::asin_Float2,
+                                   BuiltInName::asin,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpAsin,
+                                   true);
+constexpr const TFunction asin_20B(BuiltInId::asin_Float3,
+                                   BuiltInName::asin,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpAsin,
+                                   true);
+constexpr const TFunction asin_30B(BuiltInId::asin_Float4,
+                                   BuiltInName::asin,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpAsin,
+                                   true);
+constexpr const TFunction acos_00B(BuiltInId::acos_Float1,
+                                   BuiltInName::acos,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpAcos,
+                                   true);
+constexpr const TFunction acos_10B(BuiltInId::acos_Float2,
+                                   BuiltInName::acos,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpAcos,
+                                   true);
+constexpr const TFunction acos_20B(BuiltInId::acos_Float3,
+                                   BuiltInName::acos,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpAcos,
+                                   true);
+constexpr const TFunction acos_30B(BuiltInId::acos_Float4,
+                                   BuiltInName::acos,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpAcos,
+                                   true);
+constexpr const TFunction atan_00B00B(BuiltInId::atan_Float1_Float1,
+                                      BuiltInName::atan,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B00B00F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpAtan,
+                                      true);
+constexpr const TFunction atan_10B10B(BuiltInId::atan_Float2_Float2,
+                                      BuiltInName::atan,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B10B10F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpAtan,
+                                      true);
+constexpr const TFunction atan_20B20B(BuiltInId::atan_Float3_Float3,
+                                      BuiltInName::atan,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B20B20F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpAtan,
+                                      true);
+constexpr const TFunction atan_30B30B(BuiltInId::atan_Float4_Float4,
+                                      BuiltInName::atan,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B30B30F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpAtan,
+                                      true);
+constexpr const TFunction atan_00B(BuiltInId::atan_Float1,
+                                   BuiltInName::atan,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpAtan,
+                                   true);
+constexpr const TFunction atan_10B(BuiltInId::atan_Float2,
+                                   BuiltInName::atan,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpAtan,
+                                   true);
+constexpr const TFunction atan_20B(BuiltInId::atan_Float3,
+                                   BuiltInName::atan,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpAtan,
+                                   true);
+constexpr const TFunction atan_30B(BuiltInId::atan_Float4,
+                                   BuiltInName::atan,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpAtan,
+                                   true);
+constexpr const TFunction sinh_00B(BuiltInId::sinh_Float1,
+                                   BuiltInName::sinh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSinh,
+                                   true);
+constexpr const TFunction sinh_10B(BuiltInId::sinh_Float2,
+                                   BuiltInName::sinh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSinh,
+                                   true);
+constexpr const TFunction sinh_20B(BuiltInId::sinh_Float3,
+                                   BuiltInName::sinh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSinh,
+                                   true);
+constexpr const TFunction sinh_30B(BuiltInId::sinh_Float4,
+                                   BuiltInName::sinh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSinh,
+                                   true);
+constexpr const TFunction cosh_00B(BuiltInId::cosh_Float1,
+                                   BuiltInName::cosh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpCosh,
+                                   true);
+constexpr const TFunction cosh_10B(BuiltInId::cosh_Float2,
+                                   BuiltInName::cosh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpCosh,
+                                   true);
+constexpr const TFunction cosh_20B(BuiltInId::cosh_Float3,
+                                   BuiltInName::cosh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpCosh,
+                                   true);
+constexpr const TFunction cosh_30B(BuiltInId::cosh_Float4,
+                                   BuiltInName::cosh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpCosh,
+                                   true);
+constexpr const TFunction tanh_00B(BuiltInId::tanh_Float1,
+                                   BuiltInName::tanh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpTanh,
+                                   true);
+constexpr const TFunction tanh_10B(BuiltInId::tanh_Float2,
+                                   BuiltInName::tanh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpTanh,
+                                   true);
+constexpr const TFunction tanh_20B(BuiltInId::tanh_Float3,
+                                   BuiltInName::tanh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpTanh,
+                                   true);
+constexpr const TFunction tanh_30B(BuiltInId::tanh_Float4,
+                                   BuiltInName::tanh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpTanh,
+                                   true);
+constexpr const TFunction asinh_00B(BuiltInId::asinh_Float1,
+                                    BuiltInName::asinh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpAsinh,
+                                    true);
+constexpr const TFunction asinh_10B(BuiltInId::asinh_Float2,
+                                    BuiltInName::asinh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpAsinh,
+                                    true);
+constexpr const TFunction asinh_20B(BuiltInId::asinh_Float3,
+                                    BuiltInName::asinh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpAsinh,
+                                    true);
+constexpr const TFunction asinh_30B(BuiltInId::asinh_Float4,
+                                    BuiltInName::asinh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpAsinh,
+                                    true);
+constexpr const TFunction acosh_00B(BuiltInId::acosh_Float1,
+                                    BuiltInName::acosh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpAcosh,
+                                    true);
+constexpr const TFunction acosh_10B(BuiltInId::acosh_Float2,
+                                    BuiltInName::acosh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpAcosh,
+                                    true);
+constexpr const TFunction acosh_20B(BuiltInId::acosh_Float3,
+                                    BuiltInName::acosh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpAcosh,
+                                    true);
+constexpr const TFunction acosh_30B(BuiltInId::acosh_Float4,
+                                    BuiltInName::acosh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpAcosh,
+                                    true);
+constexpr const TFunction atanh_00B(BuiltInId::atanh_Float1,
+                                    BuiltInName::atanh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpAtanh,
+                                    true);
+constexpr const TFunction atanh_10B(BuiltInId::atanh_Float2,
+                                    BuiltInName::atanh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpAtanh,
+                                    true);
+constexpr const TFunction atanh_20B(BuiltInId::atanh_Float3,
+                                    BuiltInName::atanh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpAtanh,
+                                    true);
+constexpr const TFunction atanh_30B(BuiltInId::atanh_Float4,
+                                    BuiltInName::atanh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpAtanh,
+                                    true);
+constexpr const TFunction pow_00B00B(BuiltInId::pow_Float1_Float1,
+                                     BuiltInName::pow,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B00F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpPow,
+                                     true);
+constexpr const TFunction pow_10B10B(BuiltInId::pow_Float2_Float2,
+                                     BuiltInName::pow,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B10F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpPow,
+                                     true);
+constexpr const TFunction pow_20B20B(BuiltInId::pow_Float3_Float3,
+                                     BuiltInName::pow,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B20F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpPow,
+                                     true);
+constexpr const TFunction pow_30B30B(BuiltInId::pow_Float4_Float4,
+                                     BuiltInName::pow,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpPow,
+                                     true);
+constexpr const TFunction exp_00B(BuiltInId::exp_Float1,
+                                  BuiltInName::exp,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpExp,
+                                  true);
+constexpr const TFunction exp_10B(BuiltInId::exp_Float2,
+                                  BuiltInName::exp,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B20B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpExp,
+                                  true);
+constexpr const TFunction exp_20B(BuiltInId::exp_Float3,
+                                  BuiltInName::exp,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpExp,
+                                  true);
+constexpr const TFunction exp_30B(BuiltInId::exp_Float4,
+                                  BuiltInName::exp,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B00B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpExp,
+                                  true);
+constexpr const TFunction log_00B(BuiltInId::log_Float1,
+                                  BuiltInName::log,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpLog,
+                                  true);
+constexpr const TFunction log_10B(BuiltInId::log_Float2,
+                                  BuiltInName::log,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B20B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpLog,
+                                  true);
+constexpr const TFunction log_20B(BuiltInId::log_Float3,
+                                  BuiltInName::log,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpLog,
+                                  true);
+constexpr const TFunction log_30B(BuiltInId::log_Float4,
+                                  BuiltInName::log,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B00B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpLog,
+                                  true);
+constexpr const TFunction exp2_00B(BuiltInId::exp2_Float1,
+                                   BuiltInName::exp2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpExp2,
+                                   true);
+constexpr const TFunction exp2_10B(BuiltInId::exp2_Float2,
+                                   BuiltInName::exp2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpExp2,
+                                   true);
+constexpr const TFunction exp2_20B(BuiltInId::exp2_Float3,
+                                   BuiltInName::exp2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpExp2,
+                                   true);
+constexpr const TFunction exp2_30B(BuiltInId::exp2_Float4,
+                                   BuiltInName::exp2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpExp2,
+                                   true);
+constexpr const TFunction log2_00B(BuiltInId::log2_Float1,
+                                   BuiltInName::log2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpLog2,
+                                   true);
+constexpr const TFunction log2_10B(BuiltInId::log2_Float2,
+                                   BuiltInName::log2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpLog2,
+                                   true);
+constexpr const TFunction log2_20B(BuiltInId::log2_Float3,
+                                   BuiltInName::log2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpLog2,
+                                   true);
+constexpr const TFunction log2_30B(BuiltInId::log2_Float4,
+                                   BuiltInName::log2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpLog2,
+                                   true);
+constexpr const TFunction sqrt_00B(BuiltInId::sqrt_Float1,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_10B(BuiltInId::sqrt_Float2,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_20B(BuiltInId::sqrt_Float3,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_30B(BuiltInId::sqrt_Float4,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction inversesqrt_00B(
     BuiltInId::inversesqrt_Float1,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -3395,7 +3151,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_10B(
+constexpr const TFunction inversesqrt_10B(
     BuiltInId::inversesqrt_Float2,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -3404,7 +3160,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_20B(
+constexpr const TFunction inversesqrt_20B(
     BuiltInId::inversesqrt_Float3,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -3413,7 +3169,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_30B(
+constexpr const TFunction inversesqrt_30B(
     BuiltInId::inversesqrt_Float4,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -3422,804 +3178,719 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_abs_00B(
-    BuiltInId::abs_Float1,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_10B(
-    BuiltInId::abs_Float2,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_20B(
-    BuiltInId::abs_Float3,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_30B(
-    BuiltInId::abs_Float4,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_00D(BuiltInId::abs_Int1,
-                                           BuiltInName::abs,
-                                           TExtension::UNDEFINED,
-                                           BuiltInParameters::p00D00D00D00D,
-                                           1,
-                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-                                           EOpAbs,
-                                           true);
-constexpr const TFunction function_abs_10D(BuiltInId::abs_Int2,
-                                           BuiltInName::abs,
-                                           TExtension::UNDEFINED,
-                                           BuiltInParameters::p10D00D00D,
-                                           1,
-                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-                                           EOpAbs,
-                                           true);
-constexpr const TFunction function_abs_20D(BuiltInId::abs_Int3,
-                                           BuiltInName::abs,
-                                           TExtension::UNDEFINED,
-                                           BuiltInParameters::p20D20D00D00D,
-                                           1,
-                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-                                           EOpAbs,
-                                           true);
-constexpr const TFunction function_abs_30D(BuiltInId::abs_Int4,
-                                           BuiltInName::abs,
-                                           TExtension::UNDEFINED,
-                                           BuiltInParameters::p30D00D00D,
-                                           1,
-                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-                                           EOpAbs,
-                                           true);
-constexpr const TFunction function_sign_00B(
-    BuiltInId::sign_Float1,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_10B(
-    BuiltInId::sign_Float2,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_20B(
-    BuiltInId::sign_Float3,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_30B(
-    BuiltInId::sign_Float4,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_00D(
-    BuiltInId::sign_Int1,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_10D(
-    BuiltInId::sign_Int2,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_20D(
-    BuiltInId::sign_Int3,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_30D(
-    BuiltInId::sign_Int4,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_floor_00B(
-    BuiltInId::floor_Float1,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_10B(
-    BuiltInId::floor_Float2,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_20B(
-    BuiltInId::floor_Float3,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_30B(
-    BuiltInId::floor_Float4,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_trunc_00B(
-    BuiltInId::trunc_Float1,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_10B(
-    BuiltInId::trunc_Float2,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_20B(
-    BuiltInId::trunc_Float3,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_30B(
-    BuiltInId::trunc_Float4,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_round_00B(
-    BuiltInId::round_Float1,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_10B(
-    BuiltInId::round_Float2,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_20B(
-    BuiltInId::round_Float3,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_30B(
-    BuiltInId::round_Float4,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_roundEven_00B(
-    BuiltInId::roundEven_Float1,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_10B(
-    BuiltInId::roundEven_Float2,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_20B(
-    BuiltInId::roundEven_Float3,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_30B(
-    BuiltInId::roundEven_Float4,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_ceil_00B(
-    BuiltInId::ceil_Float1,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_10B(
-    BuiltInId::ceil_Float2,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_20B(
-    BuiltInId::ceil_Float3,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_30B(
-    BuiltInId::ceil_Float4,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_fract_00B(
-    BuiltInId::fract_Float1,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_10B(
-    BuiltInId::fract_Float2,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_20B(
-    BuiltInId::fract_Float3,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_30B(
-    BuiltInId::fract_Float4,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_mod_00B00B(
-    BuiltInId::mod_Float1_Float1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_10B00B(
-    BuiltInId::mod_Float2_Float1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_20B00B(
-    BuiltInId::mod_Float3_Float1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_30B00B(
-    BuiltInId::mod_Float4_Float1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_10B10B(
-    BuiltInId::mod_Float2_Float2,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_20B20B(
-    BuiltInId::mod_Float3_Float3,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_30B30B(
-    BuiltInId::mod_Float4_Float4,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_min_00B00B(
-    BuiltInId::min_Float1_Float1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10B00B(
-    BuiltInId::min_Float2_Float1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20B00B(
-    BuiltInId::min_Float3_Float1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30B00B(
-    BuiltInId::min_Float4_Float1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10B10B(
-    BuiltInId::min_Float2_Float2,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20B20B(
-    BuiltInId::min_Float3_Float3,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30B30B(
-    BuiltInId::min_Float4_Float4,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_00D00D(
-    BuiltInId::min_Int1_Int1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10D10D(
-    BuiltInId::min_Int2_Int2,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D10D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20D20D(
-    BuiltInId::min_Int3_Int3,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30D30D(
-    BuiltInId::min_Int4_Int4,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10D00D(
-    BuiltInId::min_Int2_Int1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20D00D(
-    BuiltInId::min_Int3_Int1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30D00D(
-    BuiltInId::min_Int4_Int1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_00E00E(
-    BuiltInId::min_UInt1_UInt1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10E10E(
-    BuiltInId::min_UInt2_UInt2,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E10E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20E20E(
-    BuiltInId::min_UInt3_UInt3,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30E30E(
-    BuiltInId::min_UInt4_UInt4,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10E00E(
-    BuiltInId::min_UInt2_UInt1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20E00E(
-    BuiltInId::min_UInt3_UInt1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30E00E(
-    BuiltInId::min_UInt4_UInt1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_max_00B00B(
-    BuiltInId::max_Float1_Float1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10B00B(
-    BuiltInId::max_Float2_Float1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20B00B(
-    BuiltInId::max_Float3_Float1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30B00B(
-    BuiltInId::max_Float4_Float1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10B10B(
-    BuiltInId::max_Float2_Float2,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20B20B(
-    BuiltInId::max_Float3_Float3,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30B30B(
-    BuiltInId::max_Float4_Float4,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_00D00D(
-    BuiltInId::max_Int1_Int1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10D10D(
-    BuiltInId::max_Int2_Int2,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D10D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20D20D(
-    BuiltInId::max_Int3_Int3,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30D30D(
-    BuiltInId::max_Int4_Int4,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10D00D(
-    BuiltInId::max_Int2_Int1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20D00D(
-    BuiltInId::max_Int3_Int1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30D00D(
-    BuiltInId::max_Int4_Int1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_00E00E(
-    BuiltInId::max_UInt1_UInt1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10E10E(
-    BuiltInId::max_UInt2_UInt2,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E10E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20E20E(
-    BuiltInId::max_UInt3_UInt3,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30E30E(
-    BuiltInId::max_UInt4_UInt4,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10E00E(
-    BuiltInId::max_UInt2_UInt1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20E00E(
-    BuiltInId::max_UInt3_UInt1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30E00E(
-    BuiltInId::max_UInt4_UInt1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_clamp_00B00B00B(
+constexpr const TFunction abs_00B(BuiltInId::abs_Float1,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_10B(BuiltInId::abs_Float2,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B20B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_20B(BuiltInId::abs_Float3,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_30B(BuiltInId::abs_Float4,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B00B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_00D(BuiltInId::abs_Int1,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00D00D00D00D,
+                                  1,
+                                  StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_10D(BuiltInId::abs_Int2,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10D00D00D,
+                                  1,
+                                  StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_20D(BuiltInId::abs_Int3,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20D20D00D00D,
+                                  1,
+                                  StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_30D(BuiltInId::abs_Int4,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30D00D00D,
+                                  1,
+                                  StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction sign_00B(BuiltInId::sign_Float1,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_10B(BuiltInId::sign_Float2,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_20B(BuiltInId::sign_Float3,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_30B(BuiltInId::sign_Float4,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_00D(BuiltInId::sign_Int1,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00D00D00D00D,
+                                   1,
+                                   StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_10D(BuiltInId::sign_Int2,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10D00D00D,
+                                   1,
+                                   StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_20D(BuiltInId::sign_Int3,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20D20D00D00D,
+                                   1,
+                                   StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_30D(BuiltInId::sign_Int4,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30D00D00D,
+                                   1,
+                                   StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction floor_00B(BuiltInId::floor_Float1,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_10B(BuiltInId::floor_Float2,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_20B(BuiltInId::floor_Float3,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_30B(BuiltInId::floor_Float4,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction trunc_00B(BuiltInId::trunc_Float1,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_10B(BuiltInId::trunc_Float2,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_20B(BuiltInId::trunc_Float3,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_30B(BuiltInId::trunc_Float4,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction round_00B(BuiltInId::round_Float1,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_10B(BuiltInId::round_Float2,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_20B(BuiltInId::round_Float3,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_30B(BuiltInId::round_Float4,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction roundEven_00B(BuiltInId::roundEven_Float1,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B30B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_10B(BuiltInId::roundEven_Float2,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B20B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_20B(BuiltInId::roundEven_Float3,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B10B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_30B(BuiltInId::roundEven_Float4,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B00B00B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction ceil_00B(BuiltInId::ceil_Float1,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_10B(BuiltInId::ceil_Float2,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_20B(BuiltInId::ceil_Float3,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_30B(BuiltInId::ceil_Float4,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction fract_00B(BuiltInId::fract_Float1,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_10B(BuiltInId::fract_Float2,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_20B(BuiltInId::fract_Float3,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_30B(BuiltInId::fract_Float4,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction mod_00B00B(BuiltInId::mod_Float1_Float1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B00F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_10B00B(BuiltInId::mod_Float2_Float1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_20B00B(BuiltInId::mod_Float3_Float1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_30B00B(BuiltInId::mod_Float4_Float1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_10B10B(BuiltInId::mod_Float2_Float2,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B10F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_20B20B(BuiltInId::mod_Float3_Float3,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B20F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_30B30B(BuiltInId::mod_Float4_Float4,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction min_00B00B(BuiltInId::min_Float1_Float1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B00F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10B00B(BuiltInId::min_Float2_Float1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20B00B(BuiltInId::min_Float3_Float1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30B00B(BuiltInId::min_Float4_Float1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10B10B(BuiltInId::min_Float2_Float2,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B10F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20B20B(BuiltInId::min_Float3_Float3,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B20F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30B30B(BuiltInId::min_Float4_Float4,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_00D00D(BuiltInId::min_Int1_Int1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00D00D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10D10D(BuiltInId::min_Int2_Int2,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10D10D10D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20D20D(BuiltInId::min_Int3_Int3,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20D20D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30D30D(BuiltInId::min_Int4_Int4,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30D30D30D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10D00D(BuiltInId::min_Int2_Int1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20D00D(BuiltInId::min_Int3_Int1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30D00D(BuiltInId::min_Int4_Int1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_00E00E(BuiltInId::min_UInt1_UInt1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10E10E(BuiltInId::min_UInt2_UInt2,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10E10E10E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20E20E(BuiltInId::min_UInt3_UInt3,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20E20E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30E30E(BuiltInId::min_UInt4_UInt4,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30E30E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10E00E(BuiltInId::min_UInt2_UInt1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20E00E(BuiltInId::min_UInt3_UInt1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30E00E(BuiltInId::min_UInt4_UInt1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction max_00B00B(BuiltInId::max_Float1_Float1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B00F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10B00B(BuiltInId::max_Float2_Float1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20B00B(BuiltInId::max_Float3_Float1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30B00B(BuiltInId::max_Float4_Float1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10B10B(BuiltInId::max_Float2_Float2,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B10F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20B20B(BuiltInId::max_Float3_Float3,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B20F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30B30B(BuiltInId::max_Float4_Float4,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_00D00D(BuiltInId::max_Int1_Int1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00D00D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10D10D(BuiltInId::max_Int2_Int2,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10D10D10D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20D20D(BuiltInId::max_Int3_Int3,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20D20D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30D30D(BuiltInId::max_Int4_Int4,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30D30D30D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10D00D(BuiltInId::max_Int2_Int1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20D00D(BuiltInId::max_Int3_Int1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30D00D(BuiltInId::max_Int4_Int1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_00E00E(BuiltInId::max_UInt1_UInt1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10E10E(BuiltInId::max_UInt2_UInt2,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10E10E10E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20E20E(BuiltInId::max_UInt3_UInt3,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20E20E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30E30E(BuiltInId::max_UInt4_UInt4,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30E30E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10E00E(BuiltInId::max_UInt2_UInt1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20E00E(BuiltInId::max_UInt3_UInt1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30E00E(BuiltInId::max_UInt4_UInt1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction clamp_00B00B00B(
     BuiltInId::clamp_Float1_Float1_Float1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -4228,7 +3899,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_10B00B00B(
+constexpr const TFunction clamp_10B00B00B(
     BuiltInId::clamp_Float2_Float1_Float1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -4237,7 +3908,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_20B00B00B(
+constexpr const TFunction clamp_20B00B00B(
     BuiltInId::clamp_Float3_Float1_Float1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -4246,7 +3917,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_30B00B00B(
+constexpr const TFunction clamp_30B00B00B(
     BuiltInId::clamp_Float4_Float1_Float1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -4255,7 +3926,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_10B10B10B(
+constexpr const TFunction clamp_10B10B10B(
     BuiltInId::clamp_Float2_Float2_Float2,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -4264,7 +3935,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_20B20B20B(
+constexpr const TFunction clamp_20B20B20B(
     BuiltInId::clamp_Float3_Float3_Float3,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -4273,7 +3944,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_30B30B30B(
+constexpr const TFunction clamp_30B30B30B(
     BuiltInId::clamp_Float4_Float4_Float4,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -4282,295 +3953,263 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_00D00D00D(
-    BuiltInId::clamp_Int1_Int1_Int1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00D00D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_10D00D00D(
-    BuiltInId::clamp_Int2_Int1_Int1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_20D00D00D(
-    BuiltInId::clamp_Int3_Int1_Int1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D00D00D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_30D00D00D(
-    BuiltInId::clamp_Int4_Int1_Int1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_10D10D10D(
-    BuiltInId::clamp_Int2_Int2_Int2,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D10D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_20D20D20D(
-    BuiltInId::clamp_Int3_Int3_Int3,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D20D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_30D30D30D(
-    BuiltInId::clamp_Int4_Int4_Int4,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_00E00E00E(
-    BuiltInId::clamp_UInt1_UInt1_UInt1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_10E00E00E(
-    BuiltInId::clamp_UInt2_UInt1_UInt1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00E00E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_20E00E00E(
-    BuiltInId::clamp_UInt3_UInt1_UInt1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E00E00E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_30E00E00E(
-    BuiltInId::clamp_UInt4_UInt1_UInt1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E00E00E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_10E10E10E(
-    BuiltInId::clamp_UInt2_UInt2_UInt2,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E10E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_20E20E20E(
-    BuiltInId::clamp_UInt3_UInt3_UInt3,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E20E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_30E30E30E(
-    BuiltInId::clamp_UInt4_UInt4_UInt4,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E30E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_mix_00B00B00B(
-    BuiltInId::mix_Float1_Float1_Float1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10B10B00B(
-    BuiltInId::mix_Float2_Float2_Float1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20B20B00B(
-    BuiltInId::mix_Float3_Float3_Float1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30B30B00B(
-    BuiltInId::mix_Float4_Float4_Float1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10B10B10B(
-    BuiltInId::mix_Float2_Float2_Float2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20B20B20B(
-    BuiltInId::mix_Float3_Float3_Float3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30B30B30B(
-    BuiltInId::mix_Float4_Float4_Float4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_00B00B00F(
-    BuiltInId::mix_Float1_Float1_Bool1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10B10B10F(
-    BuiltInId::mix_Float2_Float2_Bool2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20B20B20F(
-    BuiltInId::mix_Float3_Float3_Bool3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30B30B30F(
-    BuiltInId::mix_Float4_Float4_Bool4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_step_00B00B(
-    BuiltInId::step_Float1_Float1,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_10B10B(
-    BuiltInId::step_Float2_Float2,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_20B20B(
-    BuiltInId::step_Float3_Float3,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_30B30B(
-    BuiltInId::step_Float4_Float4,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00B10B(
-    BuiltInId::step_Float1_Float2,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B10B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00B20B(
-    BuiltInId::step_Float1_Float3,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B20B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00B30B(
-    BuiltInId::step_Float1_Float4,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_smoothstep_00B00B00B(
+constexpr const TFunction clamp_00D00D00D(BuiltInId::clamp_Int1_Int1_Int1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00D00D00D00D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_10D00D00D(BuiltInId::clamp_Int2_Int1_Int1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10D00D00D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_20D00D00D(BuiltInId::clamp_Int3_Int1_Int1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20D00D00D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_30D00D00D(BuiltInId::clamp_Int4_Int1_Int1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30D00D00D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_10D10D10D(BuiltInId::clamp_Int2_Int2_Int2,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10D10D10D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_20D20D20D(BuiltInId::clamp_Int3_Int3_Int3,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20D20D20D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_30D30D30D(BuiltInId::clamp_Int4_Int4_Int4,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30D30D30D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_00E00E00E(BuiltInId::clamp_UInt1_UInt1_UInt1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00E00E00E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_10E00E00E(BuiltInId::clamp_UInt2_UInt1_UInt1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10E00E00E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_20E00E00E(BuiltInId::clamp_UInt3_UInt1_UInt1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20E00E00E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_30E00E00E(BuiltInId::clamp_UInt4_UInt1_UInt1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30E00E00E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_10E10E10E(BuiltInId::clamp_UInt2_UInt2_UInt2,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10E10E10E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_20E20E20E(BuiltInId::clamp_UInt3_UInt3_UInt3,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20E20E20E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_30E30E30E(BuiltInId::clamp_UInt4_UInt4_UInt4,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30E30E30E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction mix_00B00B00B(BuiltInId::mix_Float1_Float1_Float1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B00B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10B10B00B(BuiltInId::mix_Float2_Float2_Float1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B10B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20B20B00B(BuiltInId::mix_Float3_Float3_Float1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30B30B00B(BuiltInId::mix_Float4_Float4_Float1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10B10B10B(BuiltInId::mix_Float2_Float2_Float2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B10B10B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20B20B20B(BuiltInId::mix_Float3_Float3_Float3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B20B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30B30B30B(BuiltInId::mix_Float4_Float4_Float4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30B30B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_00B00B00F(BuiltInId::mix_Float1_Float1_Bool1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B00B00F,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10B10B10F(BuiltInId::mix_Float2_Float2_Bool2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B10B10F,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20B20B20F(BuiltInId::mix_Float3_Float3_Bool3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B20F,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30B30B30F(BuiltInId::mix_Float4_Float4_Bool4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30B30F,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction step_00B00B(BuiltInId::step_Float1_Float1,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B00B00F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_10B10B(BuiltInId::step_Float2_Float2,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B10B10F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_20B20B(BuiltInId::step_Float3_Float3,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B20B20F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_30B30B(BuiltInId::step_Float4_Float4,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B30B30F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00B10B(BuiltInId::step_Float1_Float2,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B10B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00B20B(BuiltInId::step_Float1_Float3,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B20B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00B30B(BuiltInId::step_Float1_Float4,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B30B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction smoothstep_00B00B00B(
     BuiltInId::smoothstep_Float1_Float1_Float1,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -4579,7 +4218,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_10B10B10B(
+constexpr const TFunction smoothstep_10B10B10B(
     BuiltInId::smoothstep_Float2_Float2_Float2,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -4588,7 +4227,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_20B20B20B(
+constexpr const TFunction smoothstep_20B20B20B(
     BuiltInId::smoothstep_Float3_Float3_Float3,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -4597,7 +4236,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_30B30B30B(
+constexpr const TFunction smoothstep_30B30B30B(
     BuiltInId::smoothstep_Float4_Float4_Float4,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -4606,7 +4245,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00B00B10B(
+constexpr const TFunction smoothstep_00B00B10B(
     BuiltInId::smoothstep_Float1_Float1_Float2,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -4615,7 +4254,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00B00B20B(
+constexpr const TFunction smoothstep_00B00B20B(
     BuiltInId::smoothstep_Float1_Float1_Float3,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -4624,7 +4263,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00B00B30B(
+constexpr const TFunction smoothstep_00B00B30B(
     BuiltInId::smoothstep_Float1_Float1_Float4,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -4633,115 +4272,103 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_modf_00B00B(
-    BuiltInId::modf_Float1_Float1,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B_o_00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_10B10B(
-    BuiltInId::modf_Float2_Float2,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_20B20B(
-    BuiltInId::modf_Float3_Float3,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B_o_20B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_30B30B(
-    BuiltInId::modf_Float4_Float4,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B_o_30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_isnan_00B(
-    BuiltInId::isnan_Float1,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_10B(
-    BuiltInId::isnan_Float2,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_20B(
-    BuiltInId::isnan_Float3,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_30B(
-    BuiltInId::isnan_Float4,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isinf_00B(
-    BuiltInId::isinf_Float1,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_10B(
-    BuiltInId::isinf_Float2,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_20B(
-    BuiltInId::isinf_Float3,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_30B(
-    BuiltInId::isinf_Float4,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_floatBitsToInt_00B(
+constexpr const TFunction modf_00B00B(BuiltInId::modf_Float1_Float1,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B_o_00B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_10B10B(BuiltInId::modf_Float2_Float2,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B_o_10B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_20B20B(BuiltInId::modf_Float3_Float3,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B_o_20B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_30B30B(BuiltInId::modf_Float4_Float4,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B_o_30B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction isnan_00B(BuiltInId::isnan_Float1,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_10B(BuiltInId::isnan_Float2,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_20B(BuiltInId::isnan_Float3,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_30B(BuiltInId::isnan_Float4,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isinf_00B(BuiltInId::isinf_Float1,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B30B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_10B(BuiltInId::isinf_Float2,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B20B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_20B(BuiltInId::isinf_Float3,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B10B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_30B(BuiltInId::isinf_Float4,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B00B00B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction floatBitsToInt_00B(
     BuiltInId::floatBitsToInt_Float1,
     BuiltInName::floatBitsToInt,
     TExtension::UNDEFINED,
@@ -4750,7 +4377,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpFloatBitsToInt,
     true);
-constexpr const TFunction function_floatBitsToInt_10B(
+constexpr const TFunction floatBitsToInt_10B(
     BuiltInId::floatBitsToInt_Float2,
     BuiltInName::floatBitsToInt,
     TExtension::UNDEFINED,
@@ -4759,7 +4386,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpFloatBitsToInt,
     true);
-constexpr const TFunction function_floatBitsToInt_20B(
+constexpr const TFunction floatBitsToInt_20B(
     BuiltInId::floatBitsToInt_Float3,
     BuiltInName::floatBitsToInt,
     TExtension::UNDEFINED,
@@ -4768,7 +4395,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpFloatBitsToInt,
     true);
-constexpr const TFunction function_floatBitsToInt_30B(
+constexpr const TFunction floatBitsToInt_30B(
     BuiltInId::floatBitsToInt_Float4,
     BuiltInName::floatBitsToInt,
     TExtension::UNDEFINED,
@@ -4777,7 +4404,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpFloatBitsToInt,
     true);
-constexpr const TFunction function_floatBitsToUint_00B(
+constexpr const TFunction floatBitsToUint_00B(
     BuiltInId::floatBitsToUint_Float1,
     BuiltInName::floatBitsToUint,
     TExtension::UNDEFINED,
@@ -4786,7 +4413,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpFloatBitsToUint,
     true);
-constexpr const TFunction function_floatBitsToUint_10B(
+constexpr const TFunction floatBitsToUint_10B(
     BuiltInId::floatBitsToUint_Float2,
     BuiltInName::floatBitsToUint,
     TExtension::UNDEFINED,
@@ -4795,7 +4422,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpFloatBitsToUint,
     true);
-constexpr const TFunction function_floatBitsToUint_20B(
+constexpr const TFunction floatBitsToUint_20B(
     BuiltInId::floatBitsToUint_Float3,
     BuiltInName::floatBitsToUint,
     TExtension::UNDEFINED,
@@ -4804,7 +4431,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpFloatBitsToUint,
     true);
-constexpr const TFunction function_floatBitsToUint_30B(
+constexpr const TFunction floatBitsToUint_30B(
     BuiltInId::floatBitsToUint_Float4,
     BuiltInName::floatBitsToUint,
     TExtension::UNDEFINED,
@@ -4813,7 +4440,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpFloatBitsToUint,
     true);
-constexpr const TFunction function_intBitsToFloat_00D(
+constexpr const TFunction intBitsToFloat_00D(
     BuiltInId::intBitsToFloat_Int1,
     BuiltInName::intBitsToFloat,
     TExtension::UNDEFINED,
@@ -4822,7 +4449,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpIntBitsToFloat,
     true);
-constexpr const TFunction function_intBitsToFloat_10D(
+constexpr const TFunction intBitsToFloat_10D(
     BuiltInId::intBitsToFloat_Int2,
     BuiltInName::intBitsToFloat,
     TExtension::UNDEFINED,
@@ -4831,7 +4458,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpIntBitsToFloat,
     true);
-constexpr const TFunction function_intBitsToFloat_20D(
+constexpr const TFunction intBitsToFloat_20D(
     BuiltInId::intBitsToFloat_Int3,
     BuiltInName::intBitsToFloat,
     TExtension::UNDEFINED,
@@ -4840,7 +4467,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpIntBitsToFloat,
     true);
-constexpr const TFunction function_intBitsToFloat_30D(
+constexpr const TFunction intBitsToFloat_30D(
     BuiltInId::intBitsToFloat_Int4,
     BuiltInName::intBitsToFloat,
     TExtension::UNDEFINED,
@@ -4849,7 +4476,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpIntBitsToFloat,
     true);
-constexpr const TFunction function_uintBitsToFloat_00E(
+constexpr const TFunction uintBitsToFloat_00E(
     BuiltInId::uintBitsToFloat_UInt1,
     BuiltInName::uintBitsToFloat,
     TExtension::UNDEFINED,
@@ -4858,7 +4485,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUintBitsToFloat,
     true);
-constexpr const TFunction function_uintBitsToFloat_10E(
+constexpr const TFunction uintBitsToFloat_10E(
     BuiltInId::uintBitsToFloat_UInt2,
     BuiltInName::uintBitsToFloat,
     TExtension::UNDEFINED,
@@ -4867,7 +4494,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUintBitsToFloat,
     true);
-constexpr const TFunction function_uintBitsToFloat_20E(
+constexpr const TFunction uintBitsToFloat_20E(
     BuiltInId::uintBitsToFloat_UInt3,
     BuiltInName::uintBitsToFloat,
     TExtension::UNDEFINED,
@@ -4876,7 +4503,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpUintBitsToFloat,
     true);
-constexpr const TFunction function_uintBitsToFloat_30E(
+constexpr const TFunction uintBitsToFloat_30E(
     BuiltInId::uintBitsToFloat_UInt4,
     BuiltInName::uintBitsToFloat,
     TExtension::UNDEFINED,
@@ -4885,79 +4512,71 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUintBitsToFloat,
     true);
-constexpr const TFunction function_frexp_00B00D(
-    BuiltInId::frexp_Float1_Int1,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B_o_00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_10B10D(
-    BuiltInId::frexp_Float2_Int2,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_20B20D(
-    BuiltInId::frexp_Float3_Int3,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B_o_20D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_30B30D(
-    BuiltInId::frexp_Float4_Int4,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B_o_30D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_ldexp_00B00D(
-    BuiltInId::ldexp_Float1_Int1,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_10B10D(
-    BuiltInId::ldexp_Float2_Int2,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_20B20D(
-    BuiltInId::ldexp_Float3_Int3,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_30B30D(
-    BuiltInId::ldexp_Float4_Int4,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_packSnorm2x16_10B(
+constexpr const TFunction frexp_00B00D(BuiltInId::frexp_Float1_Int1,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00B_o_00D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_10B10D(BuiltInId::frexp_Float2_Int2,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10B_o_10D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_20B20D(BuiltInId::frexp_Float3_Int3,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B_o_20D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_30B30D(BuiltInId::frexp_Float4_Int4,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30B_o_30D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction ldexp_00B00D(BuiltInId::ldexp_Float1_Int1,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00B00D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_10B10D(BuiltInId::ldexp_Float2_Int2,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10B10D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_20B20D(BuiltInId::ldexp_Float3_Int3,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B20D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_30B30D(BuiltInId::ldexp_Float4_Int4,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30B30D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction packSnorm2x16_10B(
     BuiltInId::packSnorm2x16_Float2,
     BuiltInName::packSnorm2x16,
     TExtension::UNDEFINED,
@@ -4966,7 +4585,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackSnorm2x16,
     true);
-constexpr const TFunction function_packHalf2x16_10B(
+constexpr const TFunction packHalf2x16_10B(
     BuiltInId::packHalf2x16_Float2,
     BuiltInName::packHalf2x16,
     TExtension::UNDEFINED,
@@ -4975,7 +4594,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackHalf2x16,
     true);
-constexpr const TFunction function_unpackSnorm2x16_00E(
+constexpr const TFunction unpackSnorm2x16_00E(
     BuiltInId::unpackSnorm2x16_UInt1,
     BuiltInName::unpackSnorm2x16,
     TExtension::UNDEFINED,
@@ -4984,7 +4603,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUnpackSnorm2x16,
     true);
-constexpr const TFunction function_unpackHalf2x16_00E(
+constexpr const TFunction unpackHalf2x16_00E(
     BuiltInId::unpackHalf2x16_UInt1,
     BuiltInName::unpackHalf2x16,
     TExtension::UNDEFINED,
@@ -4993,7 +4612,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUnpackHalf2x16,
     true);
-constexpr const TFunction function_packUnorm2x16_10B(
+constexpr const TFunction packUnorm2x16_10B(
     BuiltInId::packUnorm2x16_Float2,
     BuiltInName::packUnorm2x16,
     TExtension::UNDEFINED,
@@ -5002,7 +4621,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackUnorm2x16,
     true);
-constexpr const TFunction function_unpackUnorm2x16_00E(
+constexpr const TFunction unpackUnorm2x16_00E(
     BuiltInId::unpackUnorm2x16_UInt1,
     BuiltInName::unpackUnorm2x16,
     TExtension::UNDEFINED,
@@ -5011,7 +4630,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUnpackUnorm2x16,
     true);
-constexpr const TFunction function_packUnorm4x8_30B(
+constexpr const TFunction packUnorm4x8_30B(
     BuiltInId::packUnorm4x8_Float4,
     BuiltInName::packUnorm4x8,
     TExtension::UNDEFINED,
@@ -5020,7 +4639,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackUnorm4x8,
     true);
-constexpr const TFunction function_packSnorm4x8_30B(
+constexpr const TFunction packSnorm4x8_30B(
     BuiltInId::packSnorm4x8_Float4,
     BuiltInName::packSnorm4x8,
     TExtension::UNDEFINED,
@@ -5029,7 +4648,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackSnorm4x8,
     true);
-constexpr const TFunction function_unpackUnorm4x8_00E(
+constexpr const TFunction unpackUnorm4x8_00E(
     BuiltInId::unpackUnorm4x8_UInt1,
     BuiltInName::unpackUnorm4x8,
     TExtension::UNDEFINED,
@@ -5038,7 +4657,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUnpackUnorm4x8,
     true);
-constexpr const TFunction function_unpackSnorm4x8_00E(
+constexpr const TFunction unpackSnorm4x8_00E(
     BuiltInId::unpackSnorm4x8_UInt1,
     BuiltInName::unpackSnorm4x8,
     TExtension::UNDEFINED,
@@ -5047,43 +4666,39 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUnpackSnorm4x8,
     true);
-constexpr const TFunction function_length_00B(
-    BuiltInId::length_Float1,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_10B(
-    BuiltInId::length_Float2,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_20B(
-    BuiltInId::length_Float3,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_30B(
-    BuiltInId::length_Float4,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_distance_00B00B(
+constexpr const TFunction length_00B(BuiltInId::length_Float1,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B30B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_10B(BuiltInId::length_Float2,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B20B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_20B(BuiltInId::length_Float3,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B10B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_30B(BuiltInId::length_Float4,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B00B00B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction distance_00B00B(
     BuiltInId::distance_Float1_Float1,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -5092,7 +4707,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_10B10B(
+constexpr const TFunction distance_10B10B(
     BuiltInId::distance_Float2_Float2,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -5101,7 +4716,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_20B20B(
+constexpr const TFunction distance_20B20B(
     BuiltInId::distance_Float3_Float3,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -5110,7 +4725,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_30B30B(
+constexpr const TFunction distance_30B30B(
     BuiltInId::distance_Float4_Float4,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -5119,88 +4734,79 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_dot_00B00B(
-    BuiltInId::dot_Float1_Float1,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_10B10B(
-    BuiltInId::dot_Float2_Float2,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_20B20B(
-    BuiltInId::dot_Float3_Float3,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_30B30B(
-    BuiltInId::dot_Float4_Float4,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_cross_20B20B(
-    BuiltInId::cross_Float3_Float3,
-    BuiltInName::cross,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCross,
-    true);
-constexpr const TFunction function_normalize_00B(
-    BuiltInId::normalize_Float1,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_10B(
-    BuiltInId::normalize_Float2,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_20B(
-    BuiltInId::normalize_Float3,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_30B(
-    BuiltInId::normalize_Float4,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_faceforward_00B00B00B(
+constexpr const TFunction dot_00B00B(BuiltInId::dot_Float1_Float1,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B00F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_10B10B(BuiltInId::dot_Float2_Float2,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B10F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_20B20B(BuiltInId::dot_Float3_Float3,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B20F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_30B30B(BuiltInId::dot_Float4_Float4,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction cross_20B20B(BuiltInId::cross_Float3_Float3,
+                                       BuiltInName::cross,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B20B20F,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpCross,
+                                       true);
+constexpr const TFunction normalize_00B(BuiltInId::normalize_Float1,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B30B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_10B(BuiltInId::normalize_Float2,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B20B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_20B(BuiltInId::normalize_Float3,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B10B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_30B(BuiltInId::normalize_Float4,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B00B00B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction faceforward_00B00B00B(
     BuiltInId::faceforward_Float1_Float1_Float1,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -5209,7 +4815,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_10B10B10B(
+constexpr const TFunction faceforward_10B10B10B(
     BuiltInId::faceforward_Float2_Float2_Float2,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -5218,7 +4824,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_20B20B20B(
+constexpr const TFunction faceforward_20B20B20B(
     BuiltInId::faceforward_Float3_Float3_Float3,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -5227,7 +4833,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_30B30B30B(
+constexpr const TFunction faceforward_30B30B30B(
     BuiltInId::faceforward_Float4_Float4_Float4,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -5236,43 +4842,39 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_reflect_00B00B(
-    BuiltInId::reflect_Float1_Float1,
-    BuiltInName::reflect,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpReflect,
-    true);
-constexpr const TFunction function_reflect_10B10B(
-    BuiltInId::reflect_Float2_Float2,
-    BuiltInName::reflect,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpReflect,
-    true);
-constexpr const TFunction function_reflect_20B20B(
-    BuiltInId::reflect_Float3_Float3,
-    BuiltInName::reflect,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpReflect,
-    true);
-constexpr const TFunction function_reflect_30B30B(
-    BuiltInId::reflect_Float4_Float4,
-    BuiltInName::reflect,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpReflect,
-    true);
-constexpr const TFunction function_refract_00B00B00B(
+constexpr const TFunction reflect_00B00B(BuiltInId::reflect_Float1_Float1,
+                                         BuiltInName::reflect,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00B00B00F,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpReflect,
+                                         true);
+constexpr const TFunction reflect_10B10B(BuiltInId::reflect_Float2_Float2,
+                                         BuiltInName::reflect,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p10B10B10F,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                         EOpReflect,
+                                         true);
+constexpr const TFunction reflect_20B20B(BuiltInId::reflect_Float3_Float3,
+                                         BuiltInName::reflect,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p20B20B20F,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                         EOpReflect,
+                                         true);
+constexpr const TFunction reflect_30B30B(BuiltInId::reflect_Float4_Float4,
+                                         BuiltInName::reflect,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p30B30B30F,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpReflect,
+                                         true);
+constexpr const TFunction refract_00B00B00B(
     BuiltInId::refract_Float1_Float1_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -5281,7 +4883,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_10B10B00B(
+constexpr const TFunction refract_10B10B00B(
     BuiltInId::refract_Float2_Float2_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -5290,7 +4892,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_20B20B00B(
+constexpr const TFunction refract_20B20B00B(
     BuiltInId::refract_Float3_Float3_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -5299,7 +4901,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_30B30B00B(
+constexpr const TFunction refract_30B30B00B(
     BuiltInId::refract_Float4_Float4_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -5308,7 +4910,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_matrixCompMult_50B50B(
+constexpr const TFunction matrixCompMult_50B50B(
     BuiltInId::matrixCompMult_Float2x2_Float2x2,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5317,7 +4919,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_A0BA0B(
+constexpr const TFunction matrixCompMult_A0BA0B(
     BuiltInId::matrixCompMult_Float3x3_Float3x3,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5326,7 +4928,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_F0BF0B(
+constexpr const TFunction matrixCompMult_F0BF0B(
     BuiltInId::matrixCompMult_Float4x4_Float4x4,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5335,7 +4937,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_90B90B(
+constexpr const TFunction matrixCompMult_90B90B(
     BuiltInId::matrixCompMult_Float2x3_Float2x3,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5344,7 +4946,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_60B60B(
+constexpr const TFunction matrixCompMult_60B60B(
     BuiltInId::matrixCompMult_Float3x2_Float3x2,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5353,7 +4955,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_D0BD0B(
+constexpr const TFunction matrixCompMult_D0BD0B(
     BuiltInId::matrixCompMult_Float2x4_Float2x4,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5362,7 +4964,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_70B70B(
+constexpr const TFunction matrixCompMult_70B70B(
     BuiltInId::matrixCompMult_Float4x2_Float4x2,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5371,7 +4973,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_E0BE0B(
+constexpr const TFunction matrixCompMult_E0BE0B(
     BuiltInId::matrixCompMult_Float3x4_Float3x4,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5380,7 +4982,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_B0BB0B(
+constexpr const TFunction matrixCompMult_B0BB0B(
     BuiltInId::matrixCompMult_Float4x3_Float4x3,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -5389,7 +4991,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_outerProduct_10B10B(
+constexpr const TFunction outerProduct_10B10B(
     BuiltInId::outerProduct_Float2_Float2,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5398,7 +5000,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_20B20B(
+constexpr const TFunction outerProduct_20B20B(
     BuiltInId::outerProduct_Float3_Float3,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5407,7 +5009,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_30B30B(
+constexpr const TFunction outerProduct_30B30B(
     BuiltInId::outerProduct_Float4_Float4,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5416,7 +5018,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_20B10B(
+constexpr const TFunction outerProduct_20B10B(
     BuiltInId::outerProduct_Float3_Float2,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5425,7 +5027,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_10B20B(
+constexpr const TFunction outerProduct_10B20B(
     BuiltInId::outerProduct_Float2_Float3,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5434,7 +5036,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_30B10B(
+constexpr const TFunction outerProduct_30B10B(
     BuiltInId::outerProduct_Float4_Float2,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5443,7 +5045,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_10B30B(
+constexpr const TFunction outerProduct_10B30B(
     BuiltInId::outerProduct_Float2_Float4,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5452,7 +5054,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_30B20B(
+constexpr const TFunction outerProduct_30B20B(
     BuiltInId::outerProduct_Float4_Float3,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5461,7 +5063,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_20B30B(
+constexpr const TFunction outerProduct_20B30B(
     BuiltInId::outerProduct_Float3_Float4,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -5470,88 +5072,79 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_transpose_50B(
-    BuiltInId::transpose_Float2x2,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p50B50B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_A0B(
-    BuiltInId::transpose_Float3x3,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pA0BA0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_F0B(
-    BuiltInId::transpose_Float4x4,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pF0BF0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_60B(
-    BuiltInId::transpose_Float3x2,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p60B60B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_90B(
-    BuiltInId::transpose_Float2x3,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p90B90B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_70B(
-    BuiltInId::transpose_Float4x2,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p70B70B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_D0B(
-    BuiltInId::transpose_Float2x4,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pD0BD0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_B0B(
-    BuiltInId::transpose_Float4x3,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pB0BB0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_E0B(
-    BuiltInId::transpose_Float3x4,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pE0BE0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_determinant_50B(
+constexpr const TFunction transpose_50B(BuiltInId::transpose_Float2x2,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p50B50B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_A0B(BuiltInId::transpose_Float3x3,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pA0BA0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_F0B(BuiltInId::transpose_Float4x4,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pF0BF0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_60B(BuiltInId::transpose_Float3x2,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p60B60B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_90B(BuiltInId::transpose_Float2x3,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p90B90B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_70B(BuiltInId::transpose_Float4x2,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p70B70B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_D0B(BuiltInId::transpose_Float2x4,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pD0BD0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_B0B(BuiltInId::transpose_Float4x3,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pB0BB0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_E0B(BuiltInId::transpose_Float3x4,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pE0BE0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction determinant_50B(
     BuiltInId::determinant_Float2x2,
     BuiltInName::determinant,
     TExtension::UNDEFINED,
@@ -5560,7 +5153,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDeterminant,
     true);
-constexpr const TFunction function_determinant_A0B(
+constexpr const TFunction determinant_A0B(
     BuiltInId::determinant_Float3x3,
     BuiltInName::determinant,
     TExtension::UNDEFINED,
@@ -5569,7 +5162,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDeterminant,
     true);
-constexpr const TFunction function_determinant_F0B(
+constexpr const TFunction determinant_F0B(
     BuiltInId::determinant_Float4x4,
     BuiltInName::determinant,
     TExtension::UNDEFINED,
@@ -5578,115 +5171,103 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDeterminant,
     true);
-constexpr const TFunction function_inverse_50B(
-    BuiltInId::inverse_Float2x2,
-    BuiltInName::inverse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p50B50B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
-    EOpInverse,
-    true);
-constexpr const TFunction function_inverse_A0B(
-    BuiltInId::inverse_Float3x3,
-    BuiltInName::inverse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pA0BA0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
-    EOpInverse,
-    true);
-constexpr const TFunction function_inverse_F0B(
-    BuiltInId::inverse_Float4x4,
-    BuiltInName::inverse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pF0BF0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
-    EOpInverse,
-    true);
-constexpr const TFunction function_lessThan_10B10B(
-    BuiltInId::lessThan_Float2_Float2,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_20B20B(
-    BuiltInId::lessThan_Float3_Float3,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_30B30B(
-    BuiltInId::lessThan_Float4_Float4,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_10D10D(
-    BuiltInId::lessThan_Int2_Int2,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D10D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_20D20D(
-    BuiltInId::lessThan_Int3_Int3,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_30D30D(
-    BuiltInId::lessThan_Int4_Int4,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_10E10E(
-    BuiltInId::lessThan_UInt2_UInt2,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E10E,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_20E20E(
-    BuiltInId::lessThan_UInt3_UInt3,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_30E30E(
-    BuiltInId::lessThan_UInt4_UInt4,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThanEqual_10B10B(
+constexpr const TFunction inverse_50B(BuiltInId::inverse_Float2x2,
+                                      BuiltInName::inverse,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p50B50B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
+                                      EOpInverse,
+                                      true);
+constexpr const TFunction inverse_A0B(BuiltInId::inverse_Float3x3,
+                                      BuiltInName::inverse,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::pA0BA0B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
+                                      EOpInverse,
+                                      true);
+constexpr const TFunction inverse_F0B(BuiltInId::inverse_Float4x4,
+                                      BuiltInName::inverse,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::pF0BF0B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
+                                      EOpInverse,
+                                      true);
+constexpr const TFunction lessThan_10B10B(BuiltInId::lessThan_Float2_Float2,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10B10B10F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_20B20B(BuiltInId::lessThan_Float3_Float3,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20B20B20F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_30B30B(BuiltInId::lessThan_Float4_Float4,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30B30B30F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_10D10D(BuiltInId::lessThan_Int2_Int2,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10D10D10D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_20D20D(BuiltInId::lessThan_Int3_Int3,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20D20D00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_30D30D(BuiltInId::lessThan_Int4_Int4,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30D30D30D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_10E10E(BuiltInId::lessThan_UInt2_UInt2,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10E10E10E,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_20E20E(BuiltInId::lessThan_UInt3_UInt3,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20E20E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_30E30E(BuiltInId::lessThan_UInt4_UInt4,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30E30E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThanEqual_10B10B(
     BuiltInId::lessThanEqual_Float2_Float2,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5695,7 +5276,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_20B20B(
+constexpr const TFunction lessThanEqual_20B20B(
     BuiltInId::lessThanEqual_Float3_Float3,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5704,7 +5285,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_30B30B(
+constexpr const TFunction lessThanEqual_30B30B(
     BuiltInId::lessThanEqual_Float4_Float4,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5713,7 +5294,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_10D10D(
+constexpr const TFunction lessThanEqual_10D10D(
     BuiltInId::lessThanEqual_Int2_Int2,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5722,7 +5303,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_20D20D(
+constexpr const TFunction lessThanEqual_20D20D(
     BuiltInId::lessThanEqual_Int3_Int3,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5731,7 +5312,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_30D30D(
+constexpr const TFunction lessThanEqual_30D30D(
     BuiltInId::lessThanEqual_Int4_Int4,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5740,7 +5321,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_10E10E(
+constexpr const TFunction lessThanEqual_10E10E(
     BuiltInId::lessThanEqual_UInt2_UInt2,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5749,7 +5330,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_20E20E(
+constexpr const TFunction lessThanEqual_20E20E(
     BuiltInId::lessThanEqual_UInt3_UInt3,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5758,7 +5339,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_30E30E(
+constexpr const TFunction lessThanEqual_30E30E(
     BuiltInId::lessThanEqual_UInt4_UInt4,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -5767,7 +5348,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThan_10B10B(
+constexpr const TFunction greaterThan_10B10B(
     BuiltInId::greaterThan_Float2_Float2,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5776,7 +5357,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_20B20B(
+constexpr const TFunction greaterThan_20B20B(
     BuiltInId::greaterThan_Float3_Float3,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5785,7 +5366,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_30B30B(
+constexpr const TFunction greaterThan_30B30B(
     BuiltInId::greaterThan_Float4_Float4,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5794,7 +5375,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_10D10D(
+constexpr const TFunction greaterThan_10D10D(
     BuiltInId::greaterThan_Int2_Int2,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5803,7 +5384,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_20D20D(
+constexpr const TFunction greaterThan_20D20D(
     BuiltInId::greaterThan_Int3_Int3,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5812,7 +5393,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_30D30D(
+constexpr const TFunction greaterThan_30D30D(
     BuiltInId::greaterThan_Int4_Int4,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5821,7 +5402,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_10E10E(
+constexpr const TFunction greaterThan_10E10E(
     BuiltInId::greaterThan_UInt2_UInt2,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5830,7 +5411,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_20E20E(
+constexpr const TFunction greaterThan_20E20E(
     BuiltInId::greaterThan_UInt3_UInt3,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5839,7 +5420,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_30E30E(
+constexpr const TFunction greaterThan_30E30E(
     BuiltInId::greaterThan_UInt4_UInt4,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -5848,7 +5429,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_10B10B(
+constexpr const TFunction greaterThanEqual_10B10B(
     BuiltInId::greaterThanEqual_Float2_Float2,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5857,7 +5438,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_20B20B(
+constexpr const TFunction greaterThanEqual_20B20B(
     BuiltInId::greaterThanEqual_Float3_Float3,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5866,7 +5447,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_30B30B(
+constexpr const TFunction greaterThanEqual_30B30B(
     BuiltInId::greaterThanEqual_Float4_Float4,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5875,7 +5456,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_10D10D(
+constexpr const TFunction greaterThanEqual_10D10D(
     BuiltInId::greaterThanEqual_Int2_Int2,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5884,7 +5465,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_20D20D(
+constexpr const TFunction greaterThanEqual_20D20D(
     BuiltInId::greaterThanEqual_Int3_Int3,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5893,7 +5474,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_30D30D(
+constexpr const TFunction greaterThanEqual_30D30D(
     BuiltInId::greaterThanEqual_Int4_Int4,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5902,7 +5483,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_10E10E(
+constexpr const TFunction greaterThanEqual_10E10E(
     BuiltInId::greaterThanEqual_UInt2_UInt2,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5911,7 +5492,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_20E20E(
+constexpr const TFunction greaterThanEqual_20E20E(
     BuiltInId::greaterThanEqual_UInt3_UInt3,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5920,7 +5501,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_30E30E(
+constexpr const TFunction greaterThanEqual_30E30E(
     BuiltInId::greaterThanEqual_UInt4_UInt4,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -5929,304 +5510,271 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_equal_10B10B(
-    BuiltInId::equal_Float2_Float2,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_20B20B(
-    BuiltInId::equal_Float3_Float3,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_30B30B(
-    BuiltInId::equal_Float4_Float4,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_10D10D(
-    BuiltInId::equal_Int2_Int2,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D10D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_20D20D(
-    BuiltInId::equal_Int3_Int3,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_30D30D(
-    BuiltInId::equal_Int4_Int4,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_10E10E(
-    BuiltInId::equal_UInt2_UInt2,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E10E,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_20E20E(
-    BuiltInId::equal_UInt3_UInt3,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_30E30E(
-    BuiltInId::equal_UInt4_UInt4,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_10F10F(
-    BuiltInId::equal_Bool2_Bool2,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_20F20F(
-    BuiltInId::equal_Bool3_Bool3,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_30F30F(
-    BuiltInId::equal_Bool4_Bool4,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_10B10B(
-    BuiltInId::notEqual_Float2_Float2,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_20B20B(
-    BuiltInId::notEqual_Float3_Float3,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_30B30B(
-    BuiltInId::notEqual_Float4_Float4,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_10D10D(
-    BuiltInId::notEqual_Int2_Int2,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D10D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_20D20D(
-    BuiltInId::notEqual_Int3_Int3,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_30D30D(
-    BuiltInId::notEqual_Int4_Int4,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_10E10E(
-    BuiltInId::notEqual_UInt2_UInt2,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E10E,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_20E20E(
-    BuiltInId::notEqual_UInt3_UInt3,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_30E30E(
-    BuiltInId::notEqual_UInt4_UInt4,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_10F10F(
-    BuiltInId::notEqual_Bool2_Bool2,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_20F20F(
-    BuiltInId::notEqual_Bool3_Bool3,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_30F30F(
-    BuiltInId::notEqual_Bool4_Bool4,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_any_10F(
-    BuiltInId::any_Bool2,
-    BuiltInName::any,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAny,
-    true);
-constexpr const TFunction function_any_20F(
-    BuiltInId::any_Bool3,
-    BuiltInName::any,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAny,
-    true);
-constexpr const TFunction function_any_30F(
-    BuiltInId::any_Bool4,
-    BuiltInName::any,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAny,
-    true);
-constexpr const TFunction function_all_10F(
-    BuiltInId::all_Bool2,
-    BuiltInName::all,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAll,
-    true);
-constexpr const TFunction function_all_20F(
-    BuiltInId::all_Bool3,
-    BuiltInName::all,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAll,
-    true);
-constexpr const TFunction function_all_30F(
-    BuiltInId::all_Bool4,
-    BuiltInName::all,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAll,
-    true);
-constexpr const TFunction function_notFunc_10F(
-    BuiltInId::notFunc_Bool2,
-    BuiltInName::notFunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLogicalNotComponentWise,
-    true);
-constexpr const TFunction function_notFunc_20F(
-    BuiltInId::notFunc_Bool3,
-    BuiltInName::notFunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLogicalNotComponentWise,
-    true);
-constexpr const TFunction function_notFunc_30F(
-    BuiltInId::notFunc_Bool4,
-    BuiltInName::notFunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLogicalNotComponentWise,
-    true);
-constexpr const TFunction function_bitfieldExtract_00D00D00D(
+constexpr const TFunction equal_10B10B(BuiltInId::equal_Float2_Float2,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10B10B10F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_20B20B(BuiltInId::equal_Float3_Float3,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B20B20F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_30B30B(BuiltInId::equal_Float4_Float4,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30B30B30F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_10D10D(BuiltInId::equal_Int2_Int2,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10D10D10D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_20D20D(BuiltInId::equal_Int3_Int3,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20D20D00D00D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_30D30D(BuiltInId::equal_Int4_Int4,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30D30D30D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_10E10E(BuiltInId::equal_UInt2_UInt2,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10E10E10E,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_20E20E(BuiltInId::equal_UInt3_UInt3,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20E20E00D00D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_30E30E(BuiltInId::equal_UInt4_UInt4,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30E30E00D00D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_10F10F(BuiltInId::equal_Bool2_Bool2,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10F10F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_20F20F(BuiltInId::equal_Bool3_Bool3,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20F20F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_30F30F(BuiltInId::equal_Bool4_Bool4,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30F30F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction notEqual_10B10B(BuiltInId::notEqual_Float2_Float2,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10B10B10F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_20B20B(BuiltInId::notEqual_Float3_Float3,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20B20B20F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_30B30B(BuiltInId::notEqual_Float4_Float4,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30B30B30F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_10D10D(BuiltInId::notEqual_Int2_Int2,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10D10D10D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_20D20D(BuiltInId::notEqual_Int3_Int3,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20D20D00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_30D30D(BuiltInId::notEqual_Int4_Int4,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30D30D30D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_10E10E(BuiltInId::notEqual_UInt2_UInt2,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10E10E10E,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_20E20E(BuiltInId::notEqual_UInt3_UInt3,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20E20E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_30E30E(BuiltInId::notEqual_UInt4_UInt4,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30E30E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_10F10F(BuiltInId::notEqual_Bool2_Bool2,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10F10F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_20F20F(BuiltInId::notEqual_Bool3_Bool3,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20F20F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_30F30F(BuiltInId::notEqual_Bool4_Bool4,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30F30F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction any_10F(BuiltInId::any_Bool2,
+                                  BuiltInName::any,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10F10F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAny,
+                                  true);
+constexpr const TFunction any_20F(BuiltInId::any_Bool3,
+                                  BuiltInName::any,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20F20F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAny,
+                                  true);
+constexpr const TFunction any_30F(BuiltInId::any_Bool4,
+                                  BuiltInName::any,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30F30F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAny,
+                                  true);
+constexpr const TFunction all_10F(BuiltInId::all_Bool2,
+                                  BuiltInName::all,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10F10F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAll,
+                                  true);
+constexpr const TFunction all_20F(BuiltInId::all_Bool3,
+                                  BuiltInName::all,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20F20F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAll,
+                                  true);
+constexpr const TFunction all_30F(BuiltInId::all_Bool4,
+                                  BuiltInName::all,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30F30F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAll,
+                                  true);
+constexpr const TFunction notFunc_10F(BuiltInId::notFunc_Bool2,
+                                      BuiltInName::notFunc,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10F10F,
+                                      1,
+                                      StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpLogicalNotComponentWise,
+                                      true);
+constexpr const TFunction notFunc_20F(BuiltInId::notFunc_Bool3,
+                                      BuiltInName::notFunc,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20F20F,
+                                      1,
+                                      StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpLogicalNotComponentWise,
+                                      true);
+constexpr const TFunction notFunc_30F(BuiltInId::notFunc_Bool4,
+                                      BuiltInName::notFunc,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30F30F,
+                                      1,
+                                      StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpLogicalNotComponentWise,
+                                      true);
+constexpr const TFunction bitfieldExtract_00D00D00D(
     BuiltInId::bitfieldExtract_Int1_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -6235,7 +5783,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_10D00D00D(
+constexpr const TFunction bitfieldExtract_10D00D00D(
     BuiltInId::bitfieldExtract_Int2_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -6244,7 +5792,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_20D00D00D(
+constexpr const TFunction bitfieldExtract_20D00D00D(
     BuiltInId::bitfieldExtract_Int3_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -6253,7 +5801,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_30D00D00D(
+constexpr const TFunction bitfieldExtract_30D00D00D(
     BuiltInId::bitfieldExtract_Int4_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -6262,7 +5810,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_00E00D00D(
+constexpr const TFunction bitfieldExtract_00E00D00D(
     BuiltInId::bitfieldExtract_UInt1_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -6271,7 +5819,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_10E00D00D(
+constexpr const TFunction bitfieldExtract_10E00D00D(
     BuiltInId::bitfieldExtract_UInt2_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -6280,7 +5828,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_20E00D00D(
+constexpr const TFunction bitfieldExtract_20E00D00D(
     BuiltInId::bitfieldExtract_UInt3_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -6289,7 +5837,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_30E00D00D(
+constexpr const TFunction bitfieldExtract_30E00D00D(
     BuiltInId::bitfieldExtract_UInt4_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -6298,7 +5846,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldInsert_00D00D00D00D(
+constexpr const TFunction bitfieldInsert_00D00D00D00D(
     BuiltInId::bitfieldInsert_Int1_Int1_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -6307,7 +5855,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_10D10D00D00D(
+constexpr const TFunction bitfieldInsert_10D10D00D00D(
     BuiltInId::bitfieldInsert_Int2_Int2_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -6316,7 +5864,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_20D20D00D00D(
+constexpr const TFunction bitfieldInsert_20D20D00D00D(
     BuiltInId::bitfieldInsert_Int3_Int3_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -6325,7 +5873,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_30D30D00D00D(
+constexpr const TFunction bitfieldInsert_30D30D00D00D(
     BuiltInId::bitfieldInsert_Int4_Int4_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -6334,7 +5882,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_00E00E00D00D(
+constexpr const TFunction bitfieldInsert_00E00E00D00D(
     BuiltInId::bitfieldInsert_UInt1_UInt1_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -6343,7 +5891,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_10E10E00D00D(
+constexpr const TFunction bitfieldInsert_10E10E00D00D(
     BuiltInId::bitfieldInsert_UInt2_UInt2_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -6352,7 +5900,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_20E20E00D00D(
+constexpr const TFunction bitfieldInsert_20E20E00D00D(
     BuiltInId::bitfieldInsert_UInt3_UInt3_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -6361,7 +5909,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_30E30E00D00D(
+constexpr const TFunction bitfieldInsert_30E30E00D00D(
     BuiltInId::bitfieldInsert_UInt4_UInt4_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -6370,7 +5918,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldReverse_00D(
+constexpr const TFunction bitfieldReverse_00D(
     BuiltInId::bitfieldReverse_Int1,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -6379,7 +5927,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_10D(
+constexpr const TFunction bitfieldReverse_10D(
     BuiltInId::bitfieldReverse_Int2,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -6388,7 +5936,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_20D(
+constexpr const TFunction bitfieldReverse_20D(
     BuiltInId::bitfieldReverse_Int3,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -6397,7 +5945,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_30D(
+constexpr const TFunction bitfieldReverse_30D(
     BuiltInId::bitfieldReverse_Int4,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -6406,7 +5954,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_00E(
+constexpr const TFunction bitfieldReverse_00E(
     BuiltInId::bitfieldReverse_UInt1,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -6415,7 +5963,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_10E(
+constexpr const TFunction bitfieldReverse_10E(
     BuiltInId::bitfieldReverse_UInt2,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -6424,7 +5972,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_20E(
+constexpr const TFunction bitfieldReverse_20E(
     BuiltInId::bitfieldReverse_UInt3,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -6433,7 +5981,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_30E(
+constexpr const TFunction bitfieldReverse_30E(
     BuiltInId::bitfieldReverse_UInt4,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -6442,223 +5990,199 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitCount_00D(
-    BuiltInId::bitCount_Int1,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_10D(
-    BuiltInId::bitCount_Int2,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_20D(
-    BuiltInId::bitCount_Int3,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_30D(
-    BuiltInId::bitCount_Int4,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_00E(
-    BuiltInId::bitCount_UInt1,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_10E(
-    BuiltInId::bitCount_UInt2,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_20E(
-    BuiltInId::bitCount_UInt3,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_30E(
-    BuiltInId::bitCount_UInt4,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_findLSB_00D(
-    BuiltInId::findLSB_Int1,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_10D(
-    BuiltInId::findLSB_Int2,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_20D(
-    BuiltInId::findLSB_Int3,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_30D(
-    BuiltInId::findLSB_Int4,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_00E(
-    BuiltInId::findLSB_UInt1,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_10E(
-    BuiltInId::findLSB_UInt2,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_20E(
-    BuiltInId::findLSB_UInt3,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_30E(
-    BuiltInId::findLSB_UInt4,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findMSB_00D(
-    BuiltInId::findMSB_Int1,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_10D(
-    BuiltInId::findMSB_Int2,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_20D(
-    BuiltInId::findMSB_Int3,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_30D(
-    BuiltInId::findMSB_Int4,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_00E(
-    BuiltInId::findMSB_UInt1,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_10E(
-    BuiltInId::findMSB_UInt2,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_20E(
-    BuiltInId::findMSB_UInt3,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_30E(
-    BuiltInId::findMSB_UInt4,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_uaddCarry_00E00E00E(
+constexpr const TFunction bitCount_00D(BuiltInId::bitCount_Int1,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00D00D00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_10D(BuiltInId::bitCount_Int2,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10D00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_20D(BuiltInId::bitCount_Int3,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20D20D00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_30D(BuiltInId::bitCount_Int4,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30D00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_00E(BuiltInId::bitCount_UInt1,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00E00E00E,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_10E(BuiltInId::bitCount_UInt2,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10E00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_20E(BuiltInId::bitCount_UInt3,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20E20E00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_30E(BuiltInId::bitCount_UInt4,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30E30E00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction findLSB_00D(BuiltInId::findLSB_Int1,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00D00D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_10D(BuiltInId::findLSB_Int2,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_20D(BuiltInId::findLSB_Int3,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20D20D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_30D(BuiltInId::findLSB_Int4,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_00E(BuiltInId::findLSB_UInt1,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00E00E00E,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_10E(BuiltInId::findLSB_UInt2,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_20E(BuiltInId::findLSB_UInt3,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20E20E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_30E(BuiltInId::findLSB_UInt4,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30E30E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findMSB_00D(BuiltInId::findMSB_Int1,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00D00D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_10D(BuiltInId::findMSB_Int2,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_20D(BuiltInId::findMSB_Int3,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20D20D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_30D(BuiltInId::findMSB_Int4,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_00E(BuiltInId::findMSB_UInt1,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00E00E00E,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_10E(BuiltInId::findMSB_UInt2,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_20E(BuiltInId::findMSB_UInt3,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20E20E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_30E(BuiltInId::findMSB_UInt4,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30E30E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction uaddCarry_00E00E00E(
     BuiltInId::uaddCarry_UInt1_UInt1_UInt1,
     BuiltInName::uaddCarry,
     TExtension::UNDEFINED,
@@ -6667,7 +6191,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUaddCarry,
     false);
-constexpr const TFunction function_uaddCarry_10E10E10E(
+constexpr const TFunction uaddCarry_10E10E10E(
     BuiltInId::uaddCarry_UInt2_UInt2_UInt2,
     BuiltInName::uaddCarry,
     TExtension::UNDEFINED,
@@ -6676,7 +6200,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUaddCarry,
     false);
-constexpr const TFunction function_uaddCarry_20E20E20E(
+constexpr const TFunction uaddCarry_20E20E20E(
     BuiltInId::uaddCarry_UInt3_UInt3_UInt3,
     BuiltInName::uaddCarry,
     TExtension::UNDEFINED,
@@ -6685,7 +6209,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpUaddCarry,
     false);
-constexpr const TFunction function_uaddCarry_30E30E30E(
+constexpr const TFunction uaddCarry_30E30E30E(
     BuiltInId::uaddCarry_UInt4_UInt4_UInt4,
     BuiltInName::uaddCarry,
     TExtension::UNDEFINED,
@@ -6694,7 +6218,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUaddCarry,
     false);
-constexpr const TFunction function_usubBorrow_00E00E00E(
+constexpr const TFunction usubBorrow_00E00E00E(
     BuiltInId::usubBorrow_UInt1_UInt1_UInt1,
     BuiltInName::usubBorrow,
     TExtension::UNDEFINED,
@@ -6703,7 +6227,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUsubBorrow,
     false);
-constexpr const TFunction function_usubBorrow_10E10E10E(
+constexpr const TFunction usubBorrow_10E10E10E(
     BuiltInId::usubBorrow_UInt2_UInt2_UInt2,
     BuiltInName::usubBorrow,
     TExtension::UNDEFINED,
@@ -6712,7 +6236,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUsubBorrow,
     false);
-constexpr const TFunction function_usubBorrow_20E20E20E(
+constexpr const TFunction usubBorrow_20E20E20E(
     BuiltInId::usubBorrow_UInt3_UInt3_UInt3,
     BuiltInName::usubBorrow,
     TExtension::UNDEFINED,
@@ -6721,7 +6245,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpUsubBorrow,
     false);
-constexpr const TFunction function_usubBorrow_30E30E30E(
+constexpr const TFunction usubBorrow_30E30E30E(
     BuiltInId::usubBorrow_UInt4_UInt4_UInt4,
     BuiltInName::usubBorrow,
     TExtension::UNDEFINED,
@@ -6730,7 +6254,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUsubBorrow,
     false);
-constexpr const TFunction function_umulExtended_00E00E00E00E(
+constexpr const TFunction umulExtended_00E00E00E00E(
     BuiltInId::umulExtended_UInt1_UInt1_UInt1_UInt1,
     BuiltInName::umulExtended,
     TExtension::UNDEFINED,
@@ -6739,7 +6263,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUmulExtended,
     false);
-constexpr const TFunction function_umulExtended_10E10E10E10E(
+constexpr const TFunction umulExtended_10E10E10E10E(
     BuiltInId::umulExtended_UInt2_UInt2_UInt2_UInt2,
     BuiltInName::umulExtended,
     TExtension::UNDEFINED,
@@ -6748,7 +6272,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUmulExtended,
     false);
-constexpr const TFunction function_umulExtended_20E20E20E20E(
+constexpr const TFunction umulExtended_20E20E20E20E(
     BuiltInId::umulExtended_UInt3_UInt3_UInt3_UInt3,
     BuiltInName::umulExtended,
     TExtension::UNDEFINED,
@@ -6757,7 +6281,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUmulExtended,
     false);
-constexpr const TFunction function_umulExtended_30E30E30E30E(
+constexpr const TFunction umulExtended_30E30E30E30E(
     BuiltInId::umulExtended_UInt4_UInt4_UInt4_UInt4,
     BuiltInName::umulExtended,
     TExtension::UNDEFINED,
@@ -6766,7 +6290,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUmulExtended,
     false);
-constexpr const TFunction function_imulExtended_00D00D00D00D(
+constexpr const TFunction imulExtended_00D00D00D00D(
     BuiltInId::imulExtended_Int1_Int1_Int1_Int1,
     BuiltInName::imulExtended,
     TExtension::UNDEFINED,
@@ -6775,7 +6299,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpImulExtended,
     false);
-constexpr const TFunction function_imulExtended_10D10D10D10D(
+constexpr const TFunction imulExtended_10D10D10D10D(
     BuiltInId::imulExtended_Int2_Int2_Int2_Int2,
     BuiltInName::imulExtended,
     TExtension::UNDEFINED,
@@ -6784,7 +6308,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpImulExtended,
     false);
-constexpr const TFunction function_imulExtended_20D20D20D20D(
+constexpr const TFunction imulExtended_20D20D20D20D(
     BuiltInId::imulExtended_Int3_Int3_Int3_Int3,
     BuiltInName::imulExtended,
     TExtension::UNDEFINED,
@@ -6793,7 +6317,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpImulExtended,
     false);
-constexpr const TFunction function_imulExtended_30D30D30D30D(
+constexpr const TFunction imulExtended_30D30D30D30D(
     BuiltInId::imulExtended_Int4_Int4_Int4_Int4,
     BuiltInName::imulExtended,
     TExtension::UNDEFINED,
@@ -6802,7 +6326,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpImulExtended,
     false);
-constexpr const TFunction function_texture2D_00I10B(
+constexpr const TFunction texture2D_00I10B(
     BuiltInId::texture2D_Sampler2D1_Float2,
     BuiltInName::texture2D,
     TExtension::UNDEFINED,
@@ -6811,7 +6335,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00I20B(
+constexpr const TFunction texture2DProj_00I20B(
     BuiltInId::texture2DProj_Sampler2D1_Float3,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -6820,7 +6344,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00I30B(
+constexpr const TFunction texture2DProj_00I30B(
     BuiltInId::texture2DProj_Sampler2D1_Float4,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -6829,7 +6353,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCube_00K20B(
+constexpr const TFunction textureCube_00K20B(
     BuiltInId::textureCube_SamplerCube1_Float3,
     BuiltInName::textureCube,
     TExtension::UNDEFINED,
@@ -6838,7 +6362,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2D_00M10B(
+constexpr const TFunction texture2D_00M10B(
     BuiltInId::texture2D_SamplerExternalOES1_Float2,
     BuiltInName::texture2D,
     TExtension::UNDEFINED,
@@ -6847,7 +6371,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00M20B(
+constexpr const TFunction texture2DProj_00M20B(
     BuiltInId::texture2DProj_SamplerExternalOES1_Float3,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -6856,7 +6380,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00M30B(
+constexpr const TFunction texture2DProj_00M30B(
     BuiltInId::texture2DProj_SamplerExternalOES1_Float4,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -6865,7 +6389,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DRect_00O10B(
+constexpr const TFunction texture2DRect_00O10B(
     BuiltInId::texture2DRect_Sampler2DRect1_Float2,
     BuiltInName::texture2DRect,
     TExtension::ARB_texture_rectangle,
@@ -6874,7 +6398,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DRectProj_00O20B(
+constexpr const TFunction texture2DRectProj_00O20B(
     BuiltInId::texture2DRectProj_Sampler2DRect1_Float3,
     BuiltInName::texture2DRectProj,
     TExtension::ARB_texture_rectangle,
@@ -6883,7 +6407,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DRectProj_00O30B(
+constexpr const TFunction texture2DRectProj_00O30B(
     BuiltInId::texture2DRectProj_Sampler2DRect1_Float4,
     BuiltInName::texture2DRectProj,
     TExtension::ARB_texture_rectangle,
@@ -6892,16 +6416,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00O10B(
-    BuiltInId::texture_Sampler2DRect1_Float2,
-    BuiltInName::texture,
-    TExtension::ARB_texture_rectangle,
-    BuiltInParameters::p00O10B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureProj_00O20B(
+constexpr const TFunction texture_00O10B(BuiltInId::texture_Sampler2DRect1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::ARB_texture_rectangle,
+                                         BuiltInParameters::p00O10B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction textureProj_00O20B(
     BuiltInId::textureProj_Sampler2DRect1_Float3,
     BuiltInName::textureProj,
     TExtension::ARB_texture_rectangle,
@@ -6910,7 +6433,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00O30B(
+constexpr const TFunction textureProj_00O30B(
     BuiltInId::textureProj_Sampler2DRect1_Float4,
     BuiltInName::textureProj,
     TExtension::ARB_texture_rectangle,
@@ -6919,7 +6442,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DGradEXT_00I10B10B10B(
+constexpr const TFunction texture2DGradEXT_00I10B10B10B(
     BuiltInId::texture2DGradEXT_Sampler2D1_Float2_Float2_Float2,
     BuiltInName::texture2DGradEXT,
     TExtension::EXT_shader_texture_lod,
@@ -6928,7 +6451,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjGradEXT_00I20B10B10B(
+constexpr const TFunction texture2DProjGradEXT_00I20B10B10B(
     BuiltInId::texture2DProjGradEXT_Sampler2D1_Float3_Float2_Float2,
     BuiltInName::texture2DProjGradEXT,
     TExtension::EXT_shader_texture_lod,
@@ -6937,7 +6460,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjGradEXT_00I30B10B10B(
+constexpr const TFunction texture2DProjGradEXT_00I30B10B10B(
     BuiltInId::texture2DProjGradEXT_Sampler2D1_Float4_Float2_Float2,
     BuiltInName::texture2DProjGradEXT,
     TExtension::EXT_shader_texture_lod,
@@ -6946,7 +6469,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCubeGradEXT_00K20B20B20B(
+constexpr const TFunction textureCubeGradEXT_00K20B20B20B(
     BuiltInId::textureCubeGradEXT_SamplerCube1_Float3_Float3_Float3,
     BuiltInName::textureCubeGradEXT,
     TExtension::EXT_shader_texture_lod,
@@ -6955,7 +6478,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2D_00I10B00B(
+constexpr const TFunction texture2D_00I10B00B(
     BuiltInId::texture2D_Sampler2D1_Float2_Float1,
     BuiltInName::texture2D,
     TExtension::UNDEFINED,
@@ -6964,7 +6487,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00I20B00B(
+constexpr const TFunction texture2DProj_00I20B00B(
     BuiltInId::texture2DProj_Sampler2D1_Float3_Float1,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -6973,7 +6496,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00I30B00B(
+constexpr const TFunction texture2DProj_00I30B00B(
     BuiltInId::texture2DProj_Sampler2D1_Float4_Float1,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -6982,7 +6505,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCube_00K20B00B(
+constexpr const TFunction textureCube_00K20B00B(
     BuiltInId::textureCube_SamplerCube1_Float3_Float1,
     BuiltInName::textureCube,
     TExtension::UNDEFINED,
@@ -6991,115 +6514,103 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_dFdxExt_00B(
-    BuiltInId::dFdxExt_Float1,
-    BuiltInName::dFdxExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdxExt_10B(
-    BuiltInId::dFdxExt_Float2,
-    BuiltInName::dFdxExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdxExt_20B(
-    BuiltInId::dFdxExt_Float3,
-    BuiltInName::dFdxExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdxExt_30B(
-    BuiltInId::dFdxExt_Float4,
-    BuiltInName::dFdxExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdyExt_00B(
-    BuiltInId::dFdyExt_Float1,
-    BuiltInName::dFdyExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdyExt_10B(
-    BuiltInId::dFdyExt_Float2,
-    BuiltInName::dFdyExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdyExt_20B(
-    BuiltInId::dFdyExt_Float3,
-    BuiltInName::dFdyExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdyExt_30B(
-    BuiltInId::dFdyExt_Float4,
-    BuiltInName::dFdyExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_fwidthExt_00B(
-    BuiltInId::fwidthExt_Float1,
-    BuiltInName::fwidthExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidthExt_10B(
-    BuiltInId::fwidthExt_Float2,
-    BuiltInName::fwidthExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidthExt_20B(
-    BuiltInId::fwidthExt_Float3,
-    BuiltInName::fwidthExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidthExt_30B(
-    BuiltInId::fwidthExt_Float4,
-    BuiltInName::fwidthExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_texture2DLodEXT_00I10B00B(
+constexpr const TFunction dFdxExt_00B(BuiltInId::dFdxExt_Float1,
+                                      BuiltInName::dFdxExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p00B30B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpDFdx,
+                                      false);
+constexpr const TFunction dFdxExt_10B(BuiltInId::dFdxExt_Float2,
+                                      BuiltInName::dFdxExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p10B20B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpDFdx,
+                                      false);
+constexpr const TFunction dFdxExt_20B(BuiltInId::dFdxExt_Float3,
+                                      BuiltInName::dFdxExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p20B10B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpDFdx,
+                                      false);
+constexpr const TFunction dFdxExt_30B(BuiltInId::dFdxExt_Float4,
+                                      BuiltInName::dFdxExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p30B00B00B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpDFdx,
+                                      false);
+constexpr const TFunction dFdyExt_00B(BuiltInId::dFdyExt_Float1,
+                                      BuiltInName::dFdyExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p00B30B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpDFdy,
+                                      false);
+constexpr const TFunction dFdyExt_10B(BuiltInId::dFdyExt_Float2,
+                                      BuiltInName::dFdyExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p10B20B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpDFdy,
+                                      false);
+constexpr const TFunction dFdyExt_20B(BuiltInId::dFdyExt_Float3,
+                                      BuiltInName::dFdyExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p20B10B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpDFdy,
+                                      false);
+constexpr const TFunction dFdyExt_30B(BuiltInId::dFdyExt_Float4,
+                                      BuiltInName::dFdyExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p30B00B00B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpDFdy,
+                                      false);
+constexpr const TFunction fwidthExt_00B(BuiltInId::fwidthExt_Float1,
+                                        BuiltInName::fwidthExt,
+                                        TExtension::OES_standard_derivatives,
+                                        BuiltInParameters::p00B30B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpFwidth,
+                                        false);
+constexpr const TFunction fwidthExt_10B(BuiltInId::fwidthExt_Float2,
+                                        BuiltInName::fwidthExt,
+                                        TExtension::OES_standard_derivatives,
+                                        BuiltInParameters::p10B20B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpFwidth,
+                                        false);
+constexpr const TFunction fwidthExt_20B(BuiltInId::fwidthExt_Float3,
+                                        BuiltInName::fwidthExt,
+                                        TExtension::OES_standard_derivatives,
+                                        BuiltInParameters::p20B10B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpFwidth,
+                                        false);
+constexpr const TFunction fwidthExt_30B(BuiltInId::fwidthExt_Float4,
+                                        BuiltInName::fwidthExt,
+                                        TExtension::OES_standard_derivatives,
+                                        BuiltInParameters::p30B00B00B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpFwidth,
+                                        false);
+constexpr const TFunction texture2DLodEXT_00I10B00B(
     BuiltInId::texture2DLodEXT_Sampler2D1_Float2_Float1,
     BuiltInName::texture2DLodEXT,
     TExtension::EXT_shader_texture_lod,
@@ -7108,7 +6619,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjLodEXT_00I20B00B(
+constexpr const TFunction texture2DProjLodEXT_00I20B00B(
     BuiltInId::texture2DProjLodEXT_Sampler2D1_Float3_Float1,
     BuiltInName::texture2DProjLodEXT,
     TExtension::EXT_shader_texture_lod,
@@ -7117,7 +6628,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjLodEXT_00I30B00B(
+constexpr const TFunction texture2DProjLodEXT_00I30B00B(
     BuiltInId::texture2DProjLodEXT_Sampler2D1_Float4_Float1,
     BuiltInName::texture2DProjLodEXT,
     TExtension::EXT_shader_texture_lod,
@@ -7126,7 +6637,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCubeLodEXT_00K20B00B(
+constexpr const TFunction textureCubeLodEXT_00K20B00B(
     BuiltInId::textureCubeLodEXT_SamplerCube1_Float3_Float1,
     BuiltInName::textureCubeLodEXT,
     TExtension::EXT_shader_texture_lod,
@@ -7135,7 +6646,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3D_00J20B(
+constexpr const TFunction texture3D_00J20B(
     BuiltInId::texture3D_Sampler3D1_Float3,
     BuiltInName::texture3D,
     TExtension::OES_texture_3D,
@@ -7144,7 +6655,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3DProj_00J30B(
+constexpr const TFunction texture3DProj_00J30B(
     BuiltInId::texture3DProj_Sampler3D1_Float4,
     BuiltInName::texture3DProj,
     TExtension::OES_texture_3D,
@@ -7153,7 +6664,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3D_00J20B00B(
+constexpr const TFunction texture3D_00J20B00B(
     BuiltInId::texture3D_Sampler3D1_Float3_Float1,
     BuiltInName::texture3D,
     TExtension::OES_texture_3D,
@@ -7162,7 +6673,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3DProj_00J30B00B(
+constexpr const TFunction texture3DProj_00J30B00B(
     BuiltInId::texture3DProj_Sampler3D1_Float4_Float1,
     BuiltInName::texture3DProj,
     TExtension::OES_texture_3D,
@@ -7171,7 +6682,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3DLod_00J20B00B(
+constexpr const TFunction texture3DLod_00J20B00B(
     BuiltInId::texture3DLod_Sampler3D1_Float3_Float1,
     BuiltInName::texture3DLod,
     TExtension::OES_texture_3D,
@@ -7180,7 +6691,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3DProjLod_00J30B00B(
+constexpr const TFunction texture3DProjLod_00J30B00B(
     BuiltInId::texture3DProjLod_Sampler3D1_Float4_Float1,
     BuiltInName::texture3DProjLod,
     TExtension::OES_texture_3D,
@@ -7189,7 +6700,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DLod_00I10B00B(
+constexpr const TFunction texture2DLod_00I10B00B(
     BuiltInId::texture2DLod_Sampler2D1_Float2_Float1,
     BuiltInName::texture2DLod,
     TExtension::UNDEFINED,
@@ -7198,7 +6709,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjLod_00I20B00B(
+constexpr const TFunction texture2DProjLod_00I20B00B(
     BuiltInId::texture2DProjLod_Sampler2D1_Float3_Float1,
     BuiltInName::texture2DProjLod,
     TExtension::UNDEFINED,
@@ -7207,7 +6718,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjLod_00I30B00B(
+constexpr const TFunction texture2DProjLod_00I30B00B(
     BuiltInId::texture2DProjLod_Sampler2D1_Float4_Float1,
     BuiltInName::texture2DProjLod,
     TExtension::UNDEFINED,
@@ -7216,7 +6727,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCubeLod_00K20B00B(
+constexpr const TFunction textureCubeLod_00K20B00B(
     BuiltInId::textureCubeLod_SamplerCube1_Float3_Float1,
     BuiltInName::textureCubeLod,
     TExtension::UNDEFINED,
@@ -7225,142 +6736,127 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00I10B(
-    BuiltInId::texture_Sampler2D1_Float2,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00I10B00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00R10B(
-    BuiltInId::texture_ISampler2D1_Float2,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00R10B00B10D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00X10B(
-    BuiltInId::texture_USampler2D1_Float2,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00X10B10B10B10D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00J20B(
-    BuiltInId::texture_Sampler3D1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00J20B20D00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00S20B(
-    BuiltInId::texture_ISampler3D1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00S20B20D00B,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00Y20B(
-    BuiltInId::texture_USampler3D1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00Y20B20B20B20D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00K20B(
-    BuiltInId::texture_SamplerCube1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00K20B20B20B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00T20B(
-    BuiltInId::texture_ISamplerCube1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00T20B00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00Z20B(
-    BuiltInId::texture_USamplerCube1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00Z20B00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00L20B(
-    BuiltInId::texture_Sampler2DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00L20B10D00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00U20B(
-    BuiltInId::texture_ISampler2DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00U20B10D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00a20B(
-    BuiltInId::texture_USampler2DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00a20B10B10B10D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00d20B(
-    BuiltInId::texture_Sampler2DShadow1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00d20B00B10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00e30B(
-    BuiltInId::texture_SamplerCubeShadow1_Float4,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00e30B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00f30B(
-    BuiltInId::texture_Sampler2DArrayShadow1_Float4,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00f30B10B10B10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureProj_00I20B(
+constexpr const TFunction texture_00I10B(BuiltInId::texture_Sampler2D1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00I10B00D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00R10B(BuiltInId::texture_ISampler2D1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00R10B00B10D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00X10B(BuiltInId::texture_USampler2D1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00X10B10B10B10D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00J20B(BuiltInId::texture_Sampler3D1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00J20B20D00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00S20B(BuiltInId::texture_ISampler3D1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00S20B20D00B,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00Y20B(BuiltInId::texture_USampler3D1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00Y20B20B20B20D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00K20B(BuiltInId::texture_SamplerCube1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00K20B20B20B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00T20B(BuiltInId::texture_ISamplerCube1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00T20B00D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00Z20B(BuiltInId::texture_USamplerCube1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00Z20B00D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00L20B(BuiltInId::texture_Sampler2DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00L20B10D00D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00U20B(BuiltInId::texture_ISampler2DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00U20B10D00D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00a20B(BuiltInId::texture_USampler2DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00a20B10B10B10D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00d20B(BuiltInId::texture_Sampler2DShadow1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00d20B00B10D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00e30B(BuiltInId::texture_SamplerCubeShadow1_Float4,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00e30B00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00f30B(BuiltInId::texture_Sampler2DArrayShadow1_Float4,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00f30B10B10B10D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction textureProj_00I20B(
     BuiltInId::textureProj_Sampler2D1_Float3,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7369,7 +6865,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00R20B(
+constexpr const TFunction textureProj_00R20B(
     BuiltInId::textureProj_ISampler2D1_Float3,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7378,7 +6874,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00X20B(
+constexpr const TFunction textureProj_00X20B(
     BuiltInId::textureProj_USampler2D1_Float3,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7387,7 +6883,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00I30B(
+constexpr const TFunction textureProj_00I30B(
     BuiltInId::textureProj_Sampler2D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7396,7 +6892,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00R30B(
+constexpr const TFunction textureProj_00R30B(
     BuiltInId::textureProj_ISampler2D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7405,7 +6901,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00X30B(
+constexpr const TFunction textureProj_00X30B(
     BuiltInId::textureProj_USampler2D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7414,7 +6910,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00J30B(
+constexpr const TFunction textureProj_00J30B(
     BuiltInId::textureProj_Sampler3D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7423,7 +6919,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00S30B(
+constexpr const TFunction textureProj_00S30B(
     BuiltInId::textureProj_ISampler3D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7432,7 +6928,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00Y30B(
+constexpr const TFunction textureProj_00Y30B(
     BuiltInId::textureProj_USampler3D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7441,7 +6937,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00d30B(
+constexpr const TFunction textureProj_00d30B(
     BuiltInId::textureProj_Sampler2DShadow1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -7450,7 +6946,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00I10B00B(
+constexpr const TFunction textureLod_00I10B00B(
     BuiltInId::textureLod_Sampler2D1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7459,7 +6955,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00R10B00B(
+constexpr const TFunction textureLod_00R10B00B(
     BuiltInId::textureLod_ISampler2D1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7468,7 +6964,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00X10B00B(
+constexpr const TFunction textureLod_00X10B00B(
     BuiltInId::textureLod_USampler2D1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7477,7 +6973,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00J20B00B(
+constexpr const TFunction textureLod_00J20B00B(
     BuiltInId::textureLod_Sampler3D1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7486,7 +6982,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00S20B00B(
+constexpr const TFunction textureLod_00S20B00B(
     BuiltInId::textureLod_ISampler3D1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7495,7 +6991,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00Y20B00B(
+constexpr const TFunction textureLod_00Y20B00B(
     BuiltInId::textureLod_USampler3D1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7504,7 +7000,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00K20B00B(
+constexpr const TFunction textureLod_00K20B00B(
     BuiltInId::textureLod_SamplerCube1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7513,7 +7009,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00T20B00B(
+constexpr const TFunction textureLod_00T20B00B(
     BuiltInId::textureLod_ISamplerCube1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7522,7 +7018,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00Z20B00B(
+constexpr const TFunction textureLod_00Z20B00B(
     BuiltInId::textureLod_USamplerCube1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7531,7 +7027,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00L20B00B(
+constexpr const TFunction textureLod_00L20B00B(
     BuiltInId::textureLod_Sampler2DArray1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7540,7 +7036,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00U20B00B(
+constexpr const TFunction textureLod_00U20B00B(
     BuiltInId::textureLod_ISampler2DArray1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7549,7 +7045,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00a20B00B(
+constexpr const TFunction textureLod_00a20B00B(
     BuiltInId::textureLod_USampler2DArray1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7558,7 +7054,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00d20B00B(
+constexpr const TFunction textureLod_00d20B00B(
     BuiltInId::textureLod_Sampler2DShadow1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -7567,7 +7063,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00I00D(
+constexpr const TFunction textureSize_00I00D(
     BuiltInId::textureSize_Sampler2D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7576,7 +7072,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00R00D(
+constexpr const TFunction textureSize_00R00D(
     BuiltInId::textureSize_ISampler2D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7585,7 +7081,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00X00D(
+constexpr const TFunction textureSize_00X00D(
     BuiltInId::textureSize_USampler2D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7594,7 +7090,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00J00D(
+constexpr const TFunction textureSize_00J00D(
     BuiltInId::textureSize_Sampler3D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7603,7 +7099,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00S00D(
+constexpr const TFunction textureSize_00S00D(
     BuiltInId::textureSize_ISampler3D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7612,7 +7108,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00Y00D(
+constexpr const TFunction textureSize_00Y00D(
     BuiltInId::textureSize_USampler3D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7621,7 +7117,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00K00D(
+constexpr const TFunction textureSize_00K00D(
     BuiltInId::textureSize_SamplerCube1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7630,7 +7126,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00T00D(
+constexpr const TFunction textureSize_00T00D(
     BuiltInId::textureSize_ISamplerCube1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7639,7 +7135,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00Z00D(
+constexpr const TFunction textureSize_00Z00D(
     BuiltInId::textureSize_USamplerCube1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7648,7 +7144,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00L00D(
+constexpr const TFunction textureSize_00L00D(
     BuiltInId::textureSize_Sampler2DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7657,7 +7153,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00U00D(
+constexpr const TFunction textureSize_00U00D(
     BuiltInId::textureSize_ISampler2DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7666,7 +7162,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00a00D(
+constexpr const TFunction textureSize_00a00D(
     BuiltInId::textureSize_USampler2DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7675,7 +7171,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00d00D(
+constexpr const TFunction textureSize_00d00D(
     BuiltInId::textureSize_Sampler2DShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7684,7 +7180,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00e00D(
+constexpr const TFunction textureSize_00e00D(
     BuiltInId::textureSize_SamplerCubeShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7693,7 +7189,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00f00D(
+constexpr const TFunction textureSize_00f00D(
     BuiltInId::textureSize_Sampler2DArrayShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -7702,7 +7198,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00I20B00B(
+constexpr const TFunction textureProjLod_00I20B00B(
     BuiltInId::textureProjLod_Sampler2D1_Float3_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7711,7 +7207,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00R20B00B(
+constexpr const TFunction textureProjLod_00R20B00B(
     BuiltInId::textureProjLod_ISampler2D1_Float3_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7720,7 +7216,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00X20B00B(
+constexpr const TFunction textureProjLod_00X20B00B(
     BuiltInId::textureProjLod_USampler2D1_Float3_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7729,7 +7225,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00I30B00B(
+constexpr const TFunction textureProjLod_00I30B00B(
     BuiltInId::textureProjLod_Sampler2D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7738,7 +7234,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00R30B00B(
+constexpr const TFunction textureProjLod_00R30B00B(
     BuiltInId::textureProjLod_ISampler2D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7747,7 +7243,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00X30B00B(
+constexpr const TFunction textureProjLod_00X30B00B(
     BuiltInId::textureProjLod_USampler2D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7756,7 +7252,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00J30B00B(
+constexpr const TFunction textureProjLod_00J30B00B(
     BuiltInId::textureProjLod_Sampler3D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7765,7 +7261,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00S30B00B(
+constexpr const TFunction textureProjLod_00S30B00B(
     BuiltInId::textureProjLod_ISampler3D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7774,7 +7270,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00Y30B00B(
+constexpr const TFunction textureProjLod_00Y30B00B(
     BuiltInId::textureProjLod_USampler3D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7783,7 +7279,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00d30B00B(
+constexpr const TFunction textureProjLod_00d30B00B(
     BuiltInId::textureProjLod_Sampler2DShadow1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -7792,7 +7288,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00I10D00D(
+constexpr const TFunction texelFetch_00I10D00D(
     BuiltInId::texelFetch_Sampler2D1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7801,7 +7297,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00R10D00D(
+constexpr const TFunction texelFetch_00R10D00D(
     BuiltInId::texelFetch_ISampler2D1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7810,7 +7306,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00X10D00D(
+constexpr const TFunction texelFetch_00X10D00D(
     BuiltInId::texelFetch_USampler2D1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7819,7 +7315,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00J20D00D(
+constexpr const TFunction texelFetch_00J20D00D(
     BuiltInId::texelFetch_Sampler3D1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7828,7 +7324,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00S20D00D(
+constexpr const TFunction texelFetch_00S20D00D(
     BuiltInId::texelFetch_ISampler3D1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7837,7 +7333,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00Y20D00D(
+constexpr const TFunction texelFetch_00Y20D00D(
     BuiltInId::texelFetch_USampler3D1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7846,7 +7342,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00L20D00D(
+constexpr const TFunction texelFetch_00L20D00D(
     BuiltInId::texelFetch_Sampler2DArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7855,7 +7351,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00U20D00D(
+constexpr const TFunction texelFetch_00U20D00D(
     BuiltInId::texelFetch_ISampler2DArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7864,7 +7360,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00a20D00D(
+constexpr const TFunction texelFetch_00a20D00D(
     BuiltInId::texelFetch_USampler2DArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -7873,7 +7369,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00I10B10B10B(
+constexpr const TFunction textureGrad_00I10B10B10B(
     BuiltInId::textureGrad_Sampler2D1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7882,7 +7378,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00R10B10B10B(
+constexpr const TFunction textureGrad_00R10B10B10B(
     BuiltInId::textureGrad_ISampler2D1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7891,7 +7387,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00X10B10B10B(
+constexpr const TFunction textureGrad_00X10B10B10B(
     BuiltInId::textureGrad_USampler2D1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7900,7 +7396,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00J20B20B20B(
+constexpr const TFunction textureGrad_00J20B20B20B(
     BuiltInId::textureGrad_Sampler3D1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7909,7 +7405,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00S20B20B20B(
+constexpr const TFunction textureGrad_00S20B20B20B(
     BuiltInId::textureGrad_ISampler3D1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7918,7 +7414,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00Y20B20B20B(
+constexpr const TFunction textureGrad_00Y20B20B20B(
     BuiltInId::textureGrad_USampler3D1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7927,7 +7423,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00K20B20B20B(
+constexpr const TFunction textureGrad_00K20B20B20B(
     BuiltInId::textureGrad_SamplerCube1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7936,7 +7432,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00T20B20B20B(
+constexpr const TFunction textureGrad_00T20B20B20B(
     BuiltInId::textureGrad_ISamplerCube1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7945,7 +7441,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00Z20B20B20B(
+constexpr const TFunction textureGrad_00Z20B20B20B(
     BuiltInId::textureGrad_USamplerCube1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7954,7 +7450,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00d20B10B10B(
+constexpr const TFunction textureGrad_00d20B10B10B(
     BuiltInId::textureGrad_Sampler2DShadow1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7963,7 +7459,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00e30B20B20B(
+constexpr const TFunction textureGrad_00e30B20B20B(
     BuiltInId::textureGrad_SamplerCubeShadow1_Float4_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7972,7 +7468,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00L20B10B10B(
+constexpr const TFunction textureGrad_00L20B10B10B(
     BuiltInId::textureGrad_Sampler2DArray1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7981,7 +7477,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00U20B10B10B(
+constexpr const TFunction textureGrad_00U20B10B10B(
     BuiltInId::textureGrad_ISampler2DArray1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7990,7 +7486,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00a20B10B10B(
+constexpr const TFunction textureGrad_00a20B10B10B(
     BuiltInId::textureGrad_USampler2DArray1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -7999,7 +7495,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00f30B10B10B(
+constexpr const TFunction textureGrad_00f30B10B10B(
     BuiltInId::textureGrad_Sampler2DArrayShadow1_Float4_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -8008,7 +7504,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00I20B10B10B(
+constexpr const TFunction textureProjGrad_00I20B10B10B(
     BuiltInId::textureProjGrad_Sampler2D1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8017,7 +7513,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00R20B10B10B(
+constexpr const TFunction textureProjGrad_00R20B10B10B(
     BuiltInId::textureProjGrad_ISampler2D1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8026,7 +7522,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00X20B10B10B(
+constexpr const TFunction textureProjGrad_00X20B10B10B(
     BuiltInId::textureProjGrad_USampler2D1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8035,7 +7531,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00I30B10B10B(
+constexpr const TFunction textureProjGrad_00I30B10B10B(
     BuiltInId::textureProjGrad_Sampler2D1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8044,7 +7540,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00R30B10B10B(
+constexpr const TFunction textureProjGrad_00R30B10B10B(
     BuiltInId::textureProjGrad_ISampler2D1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8053,7 +7549,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00X30B10B10B(
+constexpr const TFunction textureProjGrad_00X30B10B10B(
     BuiltInId::textureProjGrad_USampler2D1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8062,7 +7558,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00J30B20B20B(
+constexpr const TFunction textureProjGrad_00J30B20B20B(
     BuiltInId::textureProjGrad_Sampler3D1_Float4_Float3_Float3,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8071,7 +7567,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00S30B20B20B(
+constexpr const TFunction textureProjGrad_00S30B20B20B(
     BuiltInId::textureProjGrad_ISampler3D1_Float4_Float3_Float3,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8080,7 +7576,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00Y30B20B20B(
+constexpr const TFunction textureProjGrad_00Y30B20B20B(
     BuiltInId::textureProjGrad_USampler3D1_Float4_Float3_Float3,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8089,7 +7585,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00d30B10B10B(
+constexpr const TFunction textureProjGrad_00d30B10B10B(
     BuiltInId::textureProjGrad_Sampler2DShadow1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -8098,34 +7594,31 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00P(
-    BuiltInId::textureSize_Sampler2DMS1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00P10D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00V(
-    BuiltInId::textureSize_ISampler2DMS1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00V10D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00b(
-    BuiltInId::textureSize_USampler2DMS1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00b10D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSizeExt_00P(
+constexpr const TFunction textureSize_00P(BuiltInId::textureSize_Sampler2DMS1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00P10D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00V(BuiltInId::textureSize_ISampler2DMS1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00V10D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00b(BuiltInId::textureSize_USampler2DMS1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00b10D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSizeExt_00P(
     BuiltInId::textureSizeExt_Sampler2DMS1,
     BuiltInName::textureSizeExt,
     TExtension::ANGLE_texture_multisample,
@@ -8134,7 +7627,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00V(
+constexpr const TFunction textureSizeExt_00V(
     BuiltInId::textureSizeExt_ISampler2DMS1,
     BuiltInName::textureSizeExt,
     TExtension::ANGLE_texture_multisample,
@@ -8143,7 +7636,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00b(
+constexpr const TFunction textureSizeExt_00b(
     BuiltInId::textureSizeExt_USampler2DMS1,
     BuiltInName::textureSizeExt,
     TExtension::ANGLE_texture_multisample,
@@ -8152,7 +7645,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00Q(
+constexpr const TFunction textureSizeExt_00Q(
     BuiltInId::textureSizeExt_Sampler2DMSArray1,
     BuiltInName::textureSizeExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -8161,7 +7654,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00W(
+constexpr const TFunction textureSizeExt_00W(
     BuiltInId::textureSizeExt_ISampler2DMSArray1,
     BuiltInName::textureSizeExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -8170,7 +7663,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00c(
+constexpr const TFunction textureSizeExt_00c(
     BuiltInId::textureSizeExt_USampler2DMSArray1,
     BuiltInName::textureSizeExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -8179,7 +7672,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00P10D00D(
+constexpr const TFunction texelFetch_00P10D00D(
     BuiltInId::texelFetch_Sampler2DMS1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -8188,7 +7681,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00V10D00D(
+constexpr const TFunction texelFetch_00V10D00D(
     BuiltInId::texelFetch_ISampler2DMS1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -8197,7 +7690,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00b10D00D(
+constexpr const TFunction texelFetch_00b10D00D(
     BuiltInId::texelFetch_USampler2DMS1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -8206,7 +7699,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00P10D00D(
+constexpr const TFunction texelFetchExt_00P10D00D(
     BuiltInId::texelFetchExt_Sampler2DMS1_Int2_Int1,
     BuiltInName::texelFetchExt,
     TExtension::ANGLE_texture_multisample,
@@ -8215,7 +7708,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00V10D00D(
+constexpr const TFunction texelFetchExt_00V10D00D(
     BuiltInId::texelFetchExt_ISampler2DMS1_Int2_Int1,
     BuiltInName::texelFetchExt,
     TExtension::ANGLE_texture_multisample,
@@ -8224,7 +7717,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00b10D00D(
+constexpr const TFunction texelFetchExt_00b10D00D(
     BuiltInId::texelFetchExt_USampler2DMS1_Int2_Int1,
     BuiltInName::texelFetchExt,
     TExtension::ANGLE_texture_multisample,
@@ -8233,7 +7726,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00Q20D00D(
+constexpr const TFunction texelFetchExt_00Q20D00D(
     BuiltInId::texelFetchExt_Sampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetchExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -8242,7 +7735,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00W20D00D(
+constexpr const TFunction texelFetchExt_00W20D00D(
     BuiltInId::texelFetchExt_ISampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetchExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -8251,7 +7744,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00c20D00D(
+constexpr const TFunction texelFetchExt_00c20D00D(
     BuiltInId::texelFetchExt_USampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetchExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -8260,7 +7753,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00I10B00B(
+constexpr const TFunction texture_00I10B00B(
     BuiltInId::texture_Sampler2D1_Float2_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8269,7 +7762,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00R10B00B(
+constexpr const TFunction texture_00R10B00B(
     BuiltInId::texture_ISampler2D1_Float2_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8278,7 +7771,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00X10B00B(
+constexpr const TFunction texture_00X10B00B(
     BuiltInId::texture_USampler2D1_Float2_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8287,7 +7780,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00J20B00B(
+constexpr const TFunction texture_00J20B00B(
     BuiltInId::texture_Sampler3D1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8296,7 +7789,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00S20B00B(
+constexpr const TFunction texture_00S20B00B(
     BuiltInId::texture_ISampler3D1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8305,7 +7798,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00Y20B00B(
+constexpr const TFunction texture_00Y20B00B(
     BuiltInId::texture_USampler3D1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8314,7 +7807,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00K20B00B(
+constexpr const TFunction texture_00K20B00B(
     BuiltInId::texture_SamplerCube1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8323,7 +7816,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00T20B00B(
+constexpr const TFunction texture_00T20B00B(
     BuiltInId::texture_ISamplerCube1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8332,7 +7825,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00Z20B00B(
+constexpr const TFunction texture_00Z20B00B(
     BuiltInId::texture_USamplerCube1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8341,7 +7834,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00L20B00B(
+constexpr const TFunction texture_00L20B00B(
     BuiltInId::texture_Sampler2DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8350,7 +7843,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00U20B00B(
+constexpr const TFunction texture_00U20B00B(
     BuiltInId::texture_ISampler2DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8359,7 +7852,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00a20B00B(
+constexpr const TFunction texture_00a20B00B(
     BuiltInId::texture_USampler2DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8368,7 +7861,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00I20B00B(
+constexpr const TFunction textureProj_00I20B00B(
     BuiltInId::textureProj_Sampler2D1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8377,7 +7870,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00R20B00B(
+constexpr const TFunction textureProj_00R20B00B(
     BuiltInId::textureProj_ISampler2D1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8386,7 +7879,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00X20B00B(
+constexpr const TFunction textureProj_00X20B00B(
     BuiltInId::textureProj_USampler2D1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8395,7 +7888,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00I30B00B(
+constexpr const TFunction textureProj_00I30B00B(
     BuiltInId::textureProj_Sampler2D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8404,7 +7897,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00R30B00B(
+constexpr const TFunction textureProj_00R30B00B(
     BuiltInId::textureProj_ISampler2D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8413,7 +7906,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00X30B00B(
+constexpr const TFunction textureProj_00X30B00B(
     BuiltInId::textureProj_USampler2D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8422,7 +7915,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00J30B00B(
+constexpr const TFunction textureProj_00J30B00B(
     BuiltInId::textureProj_Sampler3D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8431,7 +7924,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00S30B00B(
+constexpr const TFunction textureProj_00S30B00B(
     BuiltInId::textureProj_ISampler3D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8440,7 +7933,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00Y30B00B(
+constexpr const TFunction textureProj_00Y30B00B(
     BuiltInId::textureProj_USampler3D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8449,7 +7942,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00d20B00B(
+constexpr const TFunction texture_00d20B00B(
     BuiltInId::texture_Sampler2DShadow1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8458,7 +7951,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00e30B00B(
+constexpr const TFunction texture_00e30B00B(
     BuiltInId::texture_SamplerCubeShadow1_Float4_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -8467,7 +7960,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00d30B00B(
+constexpr const TFunction textureProj_00d30B00B(
     BuiltInId::textureProj_Sampler2DShadow1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -8476,7 +7969,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00M10B00B(
+constexpr const TFunction texture_00M10B00B(
     BuiltInId::texture_SamplerExternalOES1_Float2_Float1,
     BuiltInName::texture,
     TExtension::OES_EGL_image_external_essl3,
@@ -8485,7 +7978,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00M20B00B(
+constexpr const TFunction textureProj_00M20B00B(
     BuiltInId::textureProj_SamplerExternalOES1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::OES_EGL_image_external_essl3,
@@ -8494,7 +7987,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00M30B00B(
+constexpr const TFunction textureProj_00M30B00B(
     BuiltInId::textureProj_SamplerExternalOES1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::OES_EGL_image_external_essl3,
@@ -8503,7 +7996,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00N10B00B(
+constexpr const TFunction texture_00N10B00B(
     BuiltInId::texture_SamplerExternal2DY2YEXT1_Float2_Float1,
     BuiltInName::texture,
     TExtension::EXT_YUV_target,
@@ -8512,7 +8005,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00N20B00B(
+constexpr const TFunction textureProj_00N20B00B(
     BuiltInId::textureProj_SamplerExternal2DY2YEXT1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::EXT_YUV_target,
@@ -8521,7 +8014,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00N30B00B(
+constexpr const TFunction textureProj_00N30B00B(
     BuiltInId::textureProj_SamplerExternal2DY2YEXT1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::EXT_YUV_target,
@@ -8530,7 +8023,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00I10B10D(
+constexpr const TFunction textureOffset_00I10B10D(
     BuiltInId::textureOffset_Sampler2D1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8539,7 +8032,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00R10B10D(
+constexpr const TFunction textureOffset_00R10B10D(
     BuiltInId::textureOffset_ISampler2D1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8548,7 +8041,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00X10B10D(
+constexpr const TFunction textureOffset_00X10B10D(
     BuiltInId::textureOffset_USampler2D1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8557,7 +8050,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00J20B20D(
+constexpr const TFunction textureOffset_00J20B20D(
     BuiltInId::textureOffset_Sampler3D1_Float3_Int3,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8566,7 +8059,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00S20B20D(
+constexpr const TFunction textureOffset_00S20B20D(
     BuiltInId::textureOffset_ISampler3D1_Float3_Int3,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8575,7 +8068,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00Y20B20D(
+constexpr const TFunction textureOffset_00Y20B20D(
     BuiltInId::textureOffset_USampler3D1_Float3_Int3,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8584,7 +8077,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00d20B10D(
+constexpr const TFunction textureOffset_00d20B10D(
     BuiltInId::textureOffset_Sampler2DShadow1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8593,7 +8086,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00L20B10D(
+constexpr const TFunction textureOffset_00L20B10D(
     BuiltInId::textureOffset_Sampler2DArray1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8602,7 +8095,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00U20B10D(
+constexpr const TFunction textureOffset_00U20B10D(
     BuiltInId::textureOffset_ISampler2DArray1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8611,7 +8104,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00a20B10D(
+constexpr const TFunction textureOffset_00a20B10D(
     BuiltInId::textureOffset_USampler2DArray1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -8620,7 +8113,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00I20B10D(
+constexpr const TFunction textureProjOffset_00I20B10D(
     BuiltInId::textureProjOffset_Sampler2D1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8629,7 +8122,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00R20B10D(
+constexpr const TFunction textureProjOffset_00R20B10D(
     BuiltInId::textureProjOffset_ISampler2D1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8638,7 +8131,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00X20B10D(
+constexpr const TFunction textureProjOffset_00X20B10D(
     BuiltInId::textureProjOffset_USampler2D1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8647,7 +8140,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00I30B10D(
+constexpr const TFunction textureProjOffset_00I30B10D(
     BuiltInId::textureProjOffset_Sampler2D1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8656,7 +8149,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00R30B10D(
+constexpr const TFunction textureProjOffset_00R30B10D(
     BuiltInId::textureProjOffset_ISampler2D1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8665,7 +8158,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00X30B10D(
+constexpr const TFunction textureProjOffset_00X30B10D(
     BuiltInId::textureProjOffset_USampler2D1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8674,7 +8167,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00J30B20D(
+constexpr const TFunction textureProjOffset_00J30B20D(
     BuiltInId::textureProjOffset_Sampler3D1_Float4_Int3,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8683,7 +8176,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00S30B20D(
+constexpr const TFunction textureProjOffset_00S30B20D(
     BuiltInId::textureProjOffset_ISampler3D1_Float4_Int3,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8692,7 +8185,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00Y30B20D(
+constexpr const TFunction textureProjOffset_00Y30B20D(
     BuiltInId::textureProjOffset_USampler3D1_Float4_Int3,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8701,7 +8194,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00d30B10D(
+constexpr const TFunction textureProjOffset_00d30B10D(
     BuiltInId::textureProjOffset_Sampler2DShadow1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -8710,7 +8203,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00I10B00B10D(
+constexpr const TFunction textureLodOffset_00I10B00B10D(
     BuiltInId::textureLodOffset_Sampler2D1_Float2_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8719,7 +8212,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00R10B00B10D(
+constexpr const TFunction textureLodOffset_00R10B00B10D(
     BuiltInId::textureLodOffset_ISampler2D1_Float2_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8728,7 +8221,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00X10B00B10D(
+constexpr const TFunction textureLodOffset_00X10B00B10D(
     BuiltInId::textureLodOffset_USampler2D1_Float2_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8737,7 +8230,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00J20B00B20D(
+constexpr const TFunction textureLodOffset_00J20B00B20D(
     BuiltInId::textureLodOffset_Sampler3D1_Float3_Float1_Int3,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8746,7 +8239,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00S20B00B20D(
+constexpr const TFunction textureLodOffset_00S20B00B20D(
     BuiltInId::textureLodOffset_ISampler3D1_Float3_Float1_Int3,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8755,7 +8248,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00Y20B00B20D(
+constexpr const TFunction textureLodOffset_00Y20B00B20D(
     BuiltInId::textureLodOffset_USampler3D1_Float3_Float1_Int3,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8764,7 +8257,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00d20B00B10D(
+constexpr const TFunction textureLodOffset_00d20B00B10D(
     BuiltInId::textureLodOffset_Sampler2DShadow1_Float3_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8773,7 +8266,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00L20B00B10D(
+constexpr const TFunction textureLodOffset_00L20B00B10D(
     BuiltInId::textureLodOffset_Sampler2DArray1_Float3_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8782,7 +8275,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00U20B00B10D(
+constexpr const TFunction textureLodOffset_00U20B00B10D(
     BuiltInId::textureLodOffset_ISampler2DArray1_Float3_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8791,7 +8284,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00a20B00B10D(
+constexpr const TFunction textureLodOffset_00a20B00B10D(
     BuiltInId::textureLodOffset_USampler2DArray1_Float3_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -8800,7 +8293,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00I20B00B10D(
+constexpr const TFunction textureProjLodOffset_00I20B00B10D(
     BuiltInId::textureProjLodOffset_Sampler2D1_Float3_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8809,7 +8302,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00R20B00B10D(
+constexpr const TFunction textureProjLodOffset_00R20B00B10D(
     BuiltInId::textureProjLodOffset_ISampler2D1_Float3_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8818,7 +8311,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00X20B00B10D(
+constexpr const TFunction textureProjLodOffset_00X20B00B10D(
     BuiltInId::textureProjLodOffset_USampler2D1_Float3_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8827,7 +8320,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00I30B00B10D(
+constexpr const TFunction textureProjLodOffset_00I30B00B10D(
     BuiltInId::textureProjLodOffset_Sampler2D1_Float4_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8836,7 +8329,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00R30B00B10D(
+constexpr const TFunction textureProjLodOffset_00R30B00B10D(
     BuiltInId::textureProjLodOffset_ISampler2D1_Float4_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8845,7 +8338,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00X30B00B10D(
+constexpr const TFunction textureProjLodOffset_00X30B00B10D(
     BuiltInId::textureProjLodOffset_USampler2D1_Float4_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8854,7 +8347,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00J30B00B20D(
+constexpr const TFunction textureProjLodOffset_00J30B00B20D(
     BuiltInId::textureProjLodOffset_Sampler3D1_Float4_Float1_Int3,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8863,7 +8356,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00S30B00B20D(
+constexpr const TFunction textureProjLodOffset_00S30B00B20D(
     BuiltInId::textureProjLodOffset_ISampler3D1_Float4_Float1_Int3,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8872,7 +8365,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00Y30B00B20D(
+constexpr const TFunction textureProjLodOffset_00Y30B00B20D(
     BuiltInId::textureProjLodOffset_USampler3D1_Float4_Float1_Int3,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8881,7 +8374,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00d30B00B10D(
+constexpr const TFunction textureProjLodOffset_00d30B00B10D(
     BuiltInId::textureProjLodOffset_Sampler2DShadow1_Float4_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -8890,7 +8383,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00I10D00D10D(
+constexpr const TFunction texelFetchOffset_00I10D00D10D(
     BuiltInId::texelFetchOffset_Sampler2D1_Int2_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8899,7 +8392,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00R10D00D10D(
+constexpr const TFunction texelFetchOffset_00R10D00D10D(
     BuiltInId::texelFetchOffset_ISampler2D1_Int2_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8908,7 +8401,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00X10D00D10D(
+constexpr const TFunction texelFetchOffset_00X10D00D10D(
     BuiltInId::texelFetchOffset_USampler2D1_Int2_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8917,7 +8410,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00J20D00D20D(
+constexpr const TFunction texelFetchOffset_00J20D00D20D(
     BuiltInId::texelFetchOffset_Sampler3D1_Int3_Int1_Int3,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8926,7 +8419,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00S20D00D20D(
+constexpr const TFunction texelFetchOffset_00S20D00D20D(
     BuiltInId::texelFetchOffset_ISampler3D1_Int3_Int1_Int3,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8935,7 +8428,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00Y20D00D20D(
+constexpr const TFunction texelFetchOffset_00Y20D00D20D(
     BuiltInId::texelFetchOffset_USampler3D1_Int3_Int1_Int3,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8944,7 +8437,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00L20D00D10D(
+constexpr const TFunction texelFetchOffset_00L20D00D10D(
     BuiltInId::texelFetchOffset_Sampler2DArray1_Int3_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8953,7 +8446,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00U20D00D10D(
+constexpr const TFunction texelFetchOffset_00U20D00D10D(
     BuiltInId::texelFetchOffset_ISampler2DArray1_Int3_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8962,7 +8455,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00a20D00D10D(
+constexpr const TFunction texelFetchOffset_00a20D00D10D(
     BuiltInId::texelFetchOffset_USampler2DArray1_Int3_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -8971,7 +8464,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00I10B10B10B10D(
+constexpr const TFunction textureGradOffset_00I10B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2D1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -8980,7 +8473,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00R10B10B10B10D(
+constexpr const TFunction textureGradOffset_00R10B10B10B10D(
     BuiltInId::textureGradOffset_ISampler2D1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -8989,7 +8482,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00X10B10B10B10D(
+constexpr const TFunction textureGradOffset_00X10B10B10B10D(
     BuiltInId::textureGradOffset_USampler2D1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -8998,7 +8491,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00J20B20B20B20D(
+constexpr const TFunction textureGradOffset_00J20B20B20B20D(
     BuiltInId::textureGradOffset_Sampler3D1_Float3_Float3_Float3_Int3,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -9007,7 +8500,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00S20B20B20B20D(
+constexpr const TFunction textureGradOffset_00S20B20B20B20D(
     BuiltInId::textureGradOffset_ISampler3D1_Float3_Float3_Float3_Int3,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -9016,7 +8509,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00Y20B20B20B20D(
+constexpr const TFunction textureGradOffset_00Y20B20B20B20D(
     BuiltInId::textureGradOffset_USampler3D1_Float3_Float3_Float3_Int3,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -9025,7 +8518,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00d20B10B10B10D(
+constexpr const TFunction textureGradOffset_00d20B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2DShadow1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -9034,7 +8527,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00L20B10B10B10D(
+constexpr const TFunction textureGradOffset_00L20B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2DArray1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -9043,7 +8536,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00U20B10B10B10D(
+constexpr const TFunction textureGradOffset_00U20B10B10B10D(
     BuiltInId::textureGradOffset_ISampler2DArray1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -9052,7 +8545,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00a20B10B10B10D(
+constexpr const TFunction textureGradOffset_00a20B10B10B10D(
     BuiltInId::textureGradOffset_USampler2DArray1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -9061,7 +8554,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00f30B10B10B10D(
+constexpr const TFunction textureGradOffset_00f30B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2DArrayShadow1_Float4_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -9070,7 +8563,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00I20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00I20B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2D1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9079,7 +8572,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00R20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00R20B10B10B10D(
     BuiltInId::textureProjGradOffset_ISampler2D1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9088,7 +8581,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00X20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00X20B10B10B10D(
     BuiltInId::textureProjGradOffset_USampler2D1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9097,7 +8590,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00I30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00I30B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2D1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9106,7 +8599,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00R30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00R30B10B10B10D(
     BuiltInId::textureProjGradOffset_ISampler2D1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9115,7 +8608,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00X30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00X30B10B10B10D(
     BuiltInId::textureProjGradOffset_USampler2D1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9124,7 +8617,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00J30B20B20B20D(
+constexpr const TFunction textureProjGradOffset_00J30B20B20B20D(
     BuiltInId::textureProjGradOffset_Sampler3D1_Float4_Float3_Float3_Int3,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9133,7 +8626,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00S30B20B20B20D(
+constexpr const TFunction textureProjGradOffset_00S30B20B20B20D(
     BuiltInId::textureProjGradOffset_ISampler3D1_Float4_Float3_Float3_Int3,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9142,7 +8635,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00Y30B20B20B20D(
+constexpr const TFunction textureProjGradOffset_00Y30B20B20B20D(
     BuiltInId::textureProjGradOffset_USampler3D1_Float4_Float3_Float3_Int3,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9151,7 +8644,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00d30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00d30B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2DShadow1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -9160,7 +8653,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00I10B10D00B(
+constexpr const TFunction textureOffset_00I10B10D00B(
     BuiltInId::textureOffset_Sampler2D1_Float2_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9169,7 +8662,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00R10B10D00B(
+constexpr const TFunction textureOffset_00R10B10D00B(
     BuiltInId::textureOffset_ISampler2D1_Float2_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9178,7 +8671,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00X10B10D00B(
+constexpr const TFunction textureOffset_00X10B10D00B(
     BuiltInId::textureOffset_USampler2D1_Float2_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9187,7 +8680,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00J20B20D00B(
+constexpr const TFunction textureOffset_00J20B20D00B(
     BuiltInId::textureOffset_Sampler3D1_Float3_Int3_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9196,7 +8689,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00S20B20D00B(
+constexpr const TFunction textureOffset_00S20B20D00B(
     BuiltInId::textureOffset_ISampler3D1_Float3_Int3_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9205,7 +8698,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00Y20B20D00B(
+constexpr const TFunction textureOffset_00Y20B20D00B(
     BuiltInId::textureOffset_USampler3D1_Float3_Int3_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9214,7 +8707,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00d20B10D00B(
+constexpr const TFunction textureOffset_00d20B10D00B(
     BuiltInId::textureOffset_Sampler2DShadow1_Float3_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9223,7 +8716,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00L20B10D00B(
+constexpr const TFunction textureOffset_00L20B10D00B(
     BuiltInId::textureOffset_Sampler2DArray1_Float3_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9232,7 +8725,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00U20B10D00B(
+constexpr const TFunction textureOffset_00U20B10D00B(
     BuiltInId::textureOffset_ISampler2DArray1_Float3_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9241,7 +8734,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00a20B10D00B(
+constexpr const TFunction textureOffset_00a20B10D00B(
     BuiltInId::textureOffset_USampler2DArray1_Float3_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -9250,7 +8743,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00I20B10D00B(
+constexpr const TFunction textureProjOffset_00I20B10D00B(
     BuiltInId::textureProjOffset_Sampler2D1_Float3_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9259,7 +8752,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00R20B10D00B(
+constexpr const TFunction textureProjOffset_00R20B10D00B(
     BuiltInId::textureProjOffset_ISampler2D1_Float3_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9268,7 +8761,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00X20B10D00B(
+constexpr const TFunction textureProjOffset_00X20B10D00B(
     BuiltInId::textureProjOffset_USampler2D1_Float3_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9277,7 +8770,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00I30B10D00B(
+constexpr const TFunction textureProjOffset_00I30B10D00B(
     BuiltInId::textureProjOffset_Sampler2D1_Float4_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9286,7 +8779,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00R30B10D00B(
+constexpr const TFunction textureProjOffset_00R30B10D00B(
     BuiltInId::textureProjOffset_ISampler2D1_Float4_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9295,7 +8788,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00X30B10D00B(
+constexpr const TFunction textureProjOffset_00X30B10D00B(
     BuiltInId::textureProjOffset_USampler2D1_Float4_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9304,7 +8797,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00J30B20D00B(
+constexpr const TFunction textureProjOffset_00J30B20D00B(
     BuiltInId::textureProjOffset_Sampler3D1_Float4_Int3_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9313,7 +8806,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00S30B20D00B(
+constexpr const TFunction textureProjOffset_00S30B20D00B(
     BuiltInId::textureProjOffset_ISampler3D1_Float4_Int3_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9322,7 +8815,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00Y30B20D00B(
+constexpr const TFunction textureProjOffset_00Y30B20D00B(
     BuiltInId::textureProjOffset_USampler3D1_Float4_Int3_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9331,7 +8824,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00d30B10D00B(
+constexpr const TFunction textureProjOffset_00d30B10D00B(
     BuiltInId::textureProjOffset_Sampler2DShadow1_Float4_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -9340,16 +8833,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00M10B(
-    BuiltInId::texture_SamplerExternalOES1_Float2,
-    BuiltInName::texture,
-    TExtension::OES_EGL_image_external_essl3,
-    BuiltInParameters::p00M10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureProj_00M20B(
+constexpr const TFunction texture_00M10B(BuiltInId::texture_SamplerExternalOES1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::OES_EGL_image_external_essl3,
+                                         BuiltInParameters::p00M10B00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction textureProj_00M20B(
     BuiltInId::textureProj_SamplerExternalOES1_Float3,
     BuiltInName::textureProj,
     TExtension::OES_EGL_image_external_essl3,
@@ -9358,7 +8850,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00M30B(
+constexpr const TFunction textureProj_00M30B(
     BuiltInId::textureProj_SamplerExternalOES1_Float4,
     BuiltInName::textureProj,
     TExtension::OES_EGL_image_external_essl3,
@@ -9367,7 +8859,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00M00D(
+constexpr const TFunction textureSize_00M00D(
     BuiltInId::textureSize_SamplerExternalOES1_Int1,
     BuiltInName::textureSize,
     TExtension::OES_EGL_image_external_essl3,
@@ -9376,7 +8868,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00M10D00D(
+constexpr const TFunction texelFetch_00M10D00D(
     BuiltInId::texelFetch_SamplerExternalOES1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::OES_EGL_image_external_essl3,
@@ -9385,16 +8877,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00N10B(
-    BuiltInId::texture_SamplerExternal2DY2YEXT1_Float2,
-    BuiltInName::texture,
-    TExtension::EXT_YUV_target,
-    BuiltInParameters::p00N10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureProj_00N20B(
+constexpr const TFunction texture_00N10B(BuiltInId::texture_SamplerExternal2DY2YEXT1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::EXT_YUV_target,
+                                         BuiltInParameters::p00N10B00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction textureProj_00N20B(
     BuiltInId::textureProj_SamplerExternal2DY2YEXT1_Float3,
     BuiltInName::textureProj,
     TExtension::EXT_YUV_target,
@@ -9403,7 +8894,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00N30B(
+constexpr const TFunction textureProj_00N30B(
     BuiltInId::textureProj_SamplerExternal2DY2YEXT1_Float4,
     BuiltInName::textureProj,
     TExtension::EXT_YUV_target,
@@ -9412,7 +8903,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_rgb_2_yuv_20B00H(
+constexpr const TFunction rgb_2_yuv_20B00H(
     BuiltInId::rgb_2_yuv_Float3_YuvCscStandardEXT1,
     BuiltInName::rgb_2_yuv,
     TExtension::EXT_YUV_target,
@@ -9421,7 +8912,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_yuv_2_rgb_20B00H(
+constexpr const TFunction yuv_2_rgb_20B00H(
     BuiltInId::yuv_2_rgb_Float3_YuvCscStandardEXT1,
     BuiltInName::yuv_2_rgb,
     TExtension::EXT_YUV_target,
@@ -9430,7 +8921,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00N00D(
+constexpr const TFunction textureSize_00N00D(
     BuiltInId::textureSize_SamplerExternal2DY2YEXT1_Int1,
     BuiltInName::textureSize,
     TExtension::EXT_YUV_target,
@@ -9439,7 +8930,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00N10D00D(
+constexpr const TFunction texelFetch_00N10D00D(
     BuiltInId::texelFetch_SamplerExternal2DY2YEXT1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::EXT_YUV_target,
@@ -9448,7 +8939,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00I10B(
+constexpr const TFunction textureGather_00I10B(
     BuiltInId::textureGather_Sampler2D1_Float2,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9457,7 +8948,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00R10B(
+constexpr const TFunction textureGather_00R10B(
     BuiltInId::textureGather_ISampler2D1_Float2,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9466,7 +8957,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00X10B(
+constexpr const TFunction textureGather_00X10B(
     BuiltInId::textureGather_USampler2D1_Float2,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9475,7 +8966,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00I10B00D(
+constexpr const TFunction textureGather_00I10B00D(
     BuiltInId::textureGather_Sampler2D1_Float2_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9484,7 +8975,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00R10B00D(
+constexpr const TFunction textureGather_00R10B00D(
     BuiltInId::textureGather_ISampler2D1_Float2_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9493,7 +8984,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00X10B00D(
+constexpr const TFunction textureGather_00X10B00D(
     BuiltInId::textureGather_USampler2D1_Float2_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9502,7 +8993,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00L20B(
+constexpr const TFunction textureGather_00L20B(
     BuiltInId::textureGather_Sampler2DArray1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9511,7 +9002,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00U20B(
+constexpr const TFunction textureGather_00U20B(
     BuiltInId::textureGather_ISampler2DArray1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9520,7 +9011,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00a20B(
+constexpr const TFunction textureGather_00a20B(
     BuiltInId::textureGather_USampler2DArray1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9529,7 +9020,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00L20B00D(
+constexpr const TFunction textureGather_00L20B00D(
     BuiltInId::textureGather_Sampler2DArray1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9538,7 +9029,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00U20B00D(
+constexpr const TFunction textureGather_00U20B00D(
     BuiltInId::textureGather_ISampler2DArray1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9547,7 +9038,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00a20B00D(
+constexpr const TFunction textureGather_00a20B00D(
     BuiltInId::textureGather_USampler2DArray1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9556,7 +9047,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00K20B(
+constexpr const TFunction textureGather_00K20B(
     BuiltInId::textureGather_SamplerCube1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9565,7 +9056,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00T20B(
+constexpr const TFunction textureGather_00T20B(
     BuiltInId::textureGather_ISamplerCube1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9574,7 +9065,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00Z20B(
+constexpr const TFunction textureGather_00Z20B(
     BuiltInId::textureGather_USamplerCube1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9583,7 +9074,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00K20B00D(
+constexpr const TFunction textureGather_00K20B00D(
     BuiltInId::textureGather_SamplerCube1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9592,7 +9083,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00T20B00D(
+constexpr const TFunction textureGather_00T20B00D(
     BuiltInId::textureGather_ISamplerCube1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9601,7 +9092,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00Z20B00D(
+constexpr const TFunction textureGather_00Z20B00D(
     BuiltInId::textureGather_USamplerCube1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9610,7 +9101,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00d10B(
+constexpr const TFunction textureGather_00d10B(
     BuiltInId::textureGather_Sampler2DShadow1_Float2,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9619,7 +9110,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00d10B00B(
+constexpr const TFunction textureGather_00d10B00B(
     BuiltInId::textureGather_Sampler2DShadow1_Float2_Float1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9628,7 +9119,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00f20B(
+constexpr const TFunction textureGather_00f20B(
     BuiltInId::textureGather_Sampler2DArrayShadow1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9637,7 +9128,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00f20B00B(
+constexpr const TFunction textureGather_00f20B00B(
     BuiltInId::textureGather_Sampler2DArrayShadow1_Float3_Float1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9646,7 +9137,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00e20B(
+constexpr const TFunction textureGather_00e20B(
     BuiltInId::textureGather_SamplerCubeShadow1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9655,7 +9146,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00e20B00B(
+constexpr const TFunction textureGather_00e20B00B(
     BuiltInId::textureGather_SamplerCubeShadow1_Float3_Float1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -9664,7 +9155,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00I10B10D(
+constexpr const TFunction textureGatherOffset_00I10B10D(
     BuiltInId::textureGatherOffset_Sampler2D1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9673,7 +9164,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00R10B10D(
+constexpr const TFunction textureGatherOffset_00R10B10D(
     BuiltInId::textureGatherOffset_ISampler2D1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9682,7 +9173,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00X10B10D(
+constexpr const TFunction textureGatherOffset_00X10B10D(
     BuiltInId::textureGatherOffset_USampler2D1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9691,7 +9182,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00I10B10D00D(
+constexpr const TFunction textureGatherOffset_00I10B10D00D(
     BuiltInId::textureGatherOffset_Sampler2D1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9700,7 +9191,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00R10B10D00D(
+constexpr const TFunction textureGatherOffset_00R10B10D00D(
     BuiltInId::textureGatherOffset_ISampler2D1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9709,7 +9200,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00X10B10D00D(
+constexpr const TFunction textureGatherOffset_00X10B10D00D(
     BuiltInId::textureGatherOffset_USampler2D1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9718,7 +9209,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00L20B10D(
+constexpr const TFunction textureGatherOffset_00L20B10D(
     BuiltInId::textureGatherOffset_Sampler2DArray1_Float3_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9727,7 +9218,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00U20B10D(
+constexpr const TFunction textureGatherOffset_00U20B10D(
     BuiltInId::textureGatherOffset_ISampler2DArray1_Float3_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9736,7 +9227,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00a20B10D(
+constexpr const TFunction textureGatherOffset_00a20B10D(
     BuiltInId::textureGatherOffset_USampler2DArray1_Float3_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9745,7 +9236,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00L20B10D00D(
+constexpr const TFunction textureGatherOffset_00L20B10D00D(
     BuiltInId::textureGatherOffset_Sampler2DArray1_Float3_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9754,7 +9245,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00U20B10D00D(
+constexpr const TFunction textureGatherOffset_00U20B10D00D(
     BuiltInId::textureGatherOffset_ISampler2DArray1_Float3_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9763,7 +9254,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00a20B10D00D(
+constexpr const TFunction textureGatherOffset_00a20B10D00D(
     BuiltInId::textureGatherOffset_USampler2DArray1_Float3_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9772,7 +9263,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00d10B00B10D(
+constexpr const TFunction textureGatherOffset_00d10B00B10D(
     BuiltInId::textureGatherOffset_Sampler2DShadow1_Float2_Float1_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9781,7 +9272,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00f20B00B10D(
+constexpr const TFunction textureGatherOffset_00f20B00B10D(
     BuiltInId::textureGatherOffset_Sampler2DArrayShadow1_Float3_Float1_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -9790,115 +9281,103 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_dFdx_00B(
-    BuiltInId::dFdx_Float1,
-    BuiltInName::dFdx,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdx_10B(
-    BuiltInId::dFdx_Float2,
-    BuiltInName::dFdx,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdx_20B(
-    BuiltInId::dFdx_Float3,
-    BuiltInName::dFdx,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdx_30B(
-    BuiltInId::dFdx_Float4,
-    BuiltInName::dFdx,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdy_00B(
-    BuiltInId::dFdy_Float1,
-    BuiltInName::dFdy,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdy_10B(
-    BuiltInId::dFdy_Float2,
-    BuiltInName::dFdy,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdy_20B(
-    BuiltInId::dFdy_Float3,
-    BuiltInName::dFdy,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdy_30B(
-    BuiltInId::dFdy_Float4,
-    BuiltInName::dFdy,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_fwidth_00B(
-    BuiltInId::fwidth_Float1,
-    BuiltInName::fwidth,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidth_10B(
-    BuiltInId::fwidth_Float2,
-    BuiltInName::fwidth,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B20B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidth_20B(
-    BuiltInId::fwidth_Float3,
-    BuiltInName::fwidth,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidth_30B(
-    BuiltInId::fwidth_Float4,
-    BuiltInName::fwidth,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_atomicCounter_00G(
+constexpr const TFunction dFdx_00B(BuiltInId::dFdx_Float1,
+                                   BuiltInName::dFdx,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpDFdx,
+                                   false);
+constexpr const TFunction dFdx_10B(BuiltInId::dFdx_Float2,
+                                   BuiltInName::dFdx,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpDFdx,
+                                   false);
+constexpr const TFunction dFdx_20B(BuiltInId::dFdx_Float3,
+                                   BuiltInName::dFdx,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpDFdx,
+                                   false);
+constexpr const TFunction dFdx_30B(BuiltInId::dFdx_Float4,
+                                   BuiltInName::dFdx,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpDFdx,
+                                   false);
+constexpr const TFunction dFdy_00B(BuiltInId::dFdy_Float1,
+                                   BuiltInName::dFdy,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpDFdy,
+                                   false);
+constexpr const TFunction dFdy_10B(BuiltInId::dFdy_Float2,
+                                   BuiltInName::dFdy,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B20B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpDFdy,
+                                   false);
+constexpr const TFunction dFdy_20B(BuiltInId::dFdy_Float3,
+                                   BuiltInName::dFdy,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpDFdy,
+                                   false);
+constexpr const TFunction dFdy_30B(BuiltInId::dFdy_Float4,
+                                   BuiltInName::dFdy,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B00B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpDFdy,
+                                   false);
+constexpr const TFunction fwidth_00B(BuiltInId::fwidth_Float1,
+                                     BuiltInName::fwidth,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B30B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpFwidth,
+                                     false);
+constexpr const TFunction fwidth_10B(BuiltInId::fwidth_Float2,
+                                     BuiltInName::fwidth,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B20B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpFwidth,
+                                     false);
+constexpr const TFunction fwidth_20B(BuiltInId::fwidth_Float3,
+                                     BuiltInName::fwidth,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B10B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpFwidth,
+                                     false);
+constexpr const TFunction fwidth_30B(BuiltInId::fwidth_Float4,
+                                     BuiltInName::fwidth,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B00B00B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpFwidth,
+                                     false);
+constexpr const TFunction atomicCounter_00G(
     BuiltInId::atomicCounter_AtomicCounter1,
     BuiltInName::atomicCounter,
     TExtension::UNDEFINED,
@@ -9907,7 +9386,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterIncrement_00G(
+constexpr const TFunction atomicCounterIncrement_00G(
     BuiltInId::atomicCounterIncrement_AtomicCounter1,
     BuiltInName::atomicCounterIncrement,
     TExtension::UNDEFINED,
@@ -9916,7 +9395,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterDecrement_00G(
+constexpr const TFunction atomicCounterDecrement_00G(
     BuiltInId::atomicCounterDecrement_AtomicCounter1,
     BuiltInName::atomicCounterDecrement,
     TExtension::UNDEFINED,
@@ -9925,7 +9404,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicAdd_00E00E(
+constexpr const TFunction atomicAdd_00E00E(
     BuiltInId::atomicAdd_UInt1_UInt1,
     BuiltInName::atomicAdd,
     TExtension::UNDEFINED,
@@ -9934,16 +9413,15 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicAdd,
     false);
-constexpr const TFunction function_atomicAdd_00D00D(
-    BuiltInId::atomicAdd_Int1_Int1,
-    BuiltInName::atomicAdd,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicAdd,
-    false);
-constexpr const TFunction function_atomicMin_00E00E(
+constexpr const TFunction atomicAdd_00D00D(BuiltInId::atomicAdd_Int1_Int1,
+                                           BuiltInName::atomicAdd,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicAdd,
+                                           false);
+constexpr const TFunction atomicMin_00E00E(
     BuiltInId::atomicMin_UInt1_UInt1,
     BuiltInName::atomicMin,
     TExtension::UNDEFINED,
@@ -9952,16 +9430,15 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicMin,
     false);
-constexpr const TFunction function_atomicMin_00D00D(
-    BuiltInId::atomicMin_Int1_Int1,
-    BuiltInName::atomicMin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicMin,
-    false);
-constexpr const TFunction function_atomicMax_00E00E(
+constexpr const TFunction atomicMin_00D00D(BuiltInId::atomicMin_Int1_Int1,
+                                           BuiltInName::atomicMin,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicMin,
+                                           false);
+constexpr const TFunction atomicMax_00E00E(
     BuiltInId::atomicMax_UInt1_UInt1,
     BuiltInName::atomicMax,
     TExtension::UNDEFINED,
@@ -9970,16 +9447,15 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicMax,
     false);
-constexpr const TFunction function_atomicMax_00D00D(
-    BuiltInId::atomicMax_Int1_Int1,
-    BuiltInName::atomicMax,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicMax,
-    false);
-constexpr const TFunction function_atomicAnd_00E00E(
+constexpr const TFunction atomicMax_00D00D(BuiltInId::atomicMax_Int1_Int1,
+                                           BuiltInName::atomicMax,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicMax,
+                                           false);
+constexpr const TFunction atomicAnd_00E00E(
     BuiltInId::atomicAnd_UInt1_UInt1,
     BuiltInName::atomicAnd,
     TExtension::UNDEFINED,
@@ -9988,34 +9464,31 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicAnd,
     false);
-constexpr const TFunction function_atomicAnd_00D00D(
-    BuiltInId::atomicAnd_Int1_Int1,
-    BuiltInName::atomicAnd,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicAnd,
-    false);
-constexpr const TFunction function_atomicOr_00E00E(
-    BuiltInId::atomicOr_UInt1_UInt1,
-    BuiltInName::atomicOr,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicOr,
-    false);
-constexpr const TFunction function_atomicOr_00D00D(
-    BuiltInId::atomicOr_Int1_Int1,
-    BuiltInName::atomicOr,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicOr,
-    false);
-constexpr const TFunction function_atomicXor_00E00E(
+constexpr const TFunction atomicAnd_00D00D(BuiltInId::atomicAnd_Int1_Int1,
+                                           BuiltInName::atomicAnd,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicAnd,
+                                           false);
+constexpr const TFunction atomicOr_00E00E(BuiltInId::atomicOr_UInt1_UInt1,
+                                          BuiltInName::atomicOr,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p_io_00E00E00E,
+                                          2,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpAtomicOr,
+                                          false);
+constexpr const TFunction atomicOr_00D00D(BuiltInId::atomicOr_Int1_Int1,
+                                          BuiltInName::atomicOr,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p_io_00D00D00D,
+                                          2,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpAtomicOr,
+                                          false);
+constexpr const TFunction atomicXor_00E00E(
     BuiltInId::atomicXor_UInt1_UInt1,
     BuiltInName::atomicXor,
     TExtension::UNDEFINED,
@@ -10024,16 +9497,15 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicXor,
     false);
-constexpr const TFunction function_atomicXor_00D00D(
-    BuiltInId::atomicXor_Int1_Int1,
-    BuiltInName::atomicXor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicXor,
-    false);
-constexpr const TFunction function_atomicExchange_00E00E(
+constexpr const TFunction atomicXor_00D00D(BuiltInId::atomicXor_Int1_Int1,
+                                           BuiltInName::atomicXor,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicXor,
+                                           false);
+constexpr const TFunction atomicExchange_00E00E(
     BuiltInId::atomicExchange_UInt1_UInt1,
     BuiltInName::atomicExchange,
     TExtension::UNDEFINED,
@@ -10042,7 +9514,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicExchange,
     false);
-constexpr const TFunction function_atomicExchange_00D00D(
+constexpr const TFunction atomicExchange_00D00D(
     BuiltInId::atomicExchange_Int1_Int1,
     BuiltInName::atomicExchange,
     TExtension::UNDEFINED,
@@ -10051,7 +9523,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicExchange,
     false);
-constexpr const TFunction function_atomicCompSwap_00E00E00E(
+constexpr const TFunction atomicCompSwap_00E00E00E(
     BuiltInId::atomicCompSwap_UInt1_UInt1_UInt1,
     BuiltInName::atomicCompSwap,
     TExtension::UNDEFINED,
@@ -10060,7 +9532,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicCompSwap,
     false);
-constexpr const TFunction function_atomicCompSwap_00D00D00D(
+constexpr const TFunction atomicCompSwap_00D00D00D(
     BuiltInId::atomicCompSwap_Int1_Int1_Int1,
     BuiltInName::atomicCompSwap,
     TExtension::UNDEFINED,
@@ -10069,115 +9541,103 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicCompSwap,
     false);
-constexpr const TFunction function_imageSize_00y(
-    BuiltInId::imageSize_Image2D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00y10D30B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_00z(
-    BuiltInId::imageSize_IImage2D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00z10D30D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01A(
-    BuiltInId::imageSize_UImage2D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01A10D30E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01B(
-    BuiltInId::imageSize_Image3D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01B20D30B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01C(
-    BuiltInId::imageSize_IImage3D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01C20D30D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01D(
-    BuiltInId::imageSize_UImage3D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01D20D30E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01E(
-    BuiltInId::imageSize_Image2DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01E20D30B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01F(
-    BuiltInId::imageSize_IImage2DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01F20D30D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01G(
-    BuiltInId::imageSize_UImage2DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01G20D30E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01H(
-    BuiltInId::imageSize_ImageCube1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01H20D30B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01I(
-    BuiltInId::imageSize_IImageCube1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01I20D30D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01J(
-    BuiltInId::imageSize_UImageCube1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01J20D30E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_00y10D(
+constexpr const TFunction imageSize_00y(BuiltInId::imageSize_Image2D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00y10D30B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_00z(BuiltInId::imageSize_IImage2D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00z10D30D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01A(BuiltInId::imageSize_UImage2D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01A10D30E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01B(BuiltInId::imageSize_Image3D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01B20D30B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01C(BuiltInId::imageSize_IImage3D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01C20D30D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01D(BuiltInId::imageSize_UImage3D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01D20D30E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01E(BuiltInId::imageSize_Image2DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01E20D30B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01F(BuiltInId::imageSize_IImage2DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01F20D30D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01G(BuiltInId::imageSize_UImage2DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01G20D30E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01H(BuiltInId::imageSize_ImageCube1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01H20D30B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01I(BuiltInId::imageSize_IImageCube1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01I20D30D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01J(BuiltInId::imageSize_UImageCube1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01J20D30E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageLoad_00y10D(
     BuiltInId::imageLoad_Image2D1_Int2,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -10186,16 +9646,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_00z10D(
-    BuiltInId::imageLoad_IImage2D1_Int2,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00z10D30D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01A10D(
+constexpr const TFunction imageLoad_00z10D(BuiltInId::imageLoad_IImage2D1_Int2,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p00z10D30D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01A10D(
     BuiltInId::imageLoad_UImage2D1_Int2,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -10204,7 +9663,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01B20D(
+constexpr const TFunction imageLoad_01B20D(
     BuiltInId::imageLoad_Image3D1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -10213,16 +9672,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01C20D(
-    BuiltInId::imageLoad_IImage3D1_Int3,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01C20D30D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01D20D(
+constexpr const TFunction imageLoad_01C20D(BuiltInId::imageLoad_IImage3D1_Int3,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01C20D30D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01D20D(
     BuiltInId::imageLoad_UImage3D1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -10231,7 +9689,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01E20D(
+constexpr const TFunction imageLoad_01E20D(
     BuiltInId::imageLoad_Image2DArray1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -10240,16 +9698,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01F20D(
-    BuiltInId::imageLoad_IImage2DArray1_Int3,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01F20D30D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01G20D(
+constexpr const TFunction imageLoad_01F20D(BuiltInId::imageLoad_IImage2DArray1_Int3,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01F20D30D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01G20D(
     BuiltInId::imageLoad_UImage2DArray1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -10258,7 +9715,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01H20D(
+constexpr const TFunction imageLoad_01H20D(
     BuiltInId::imageLoad_ImageCube1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -10267,16 +9724,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01I20D(
-    BuiltInId::imageLoad_IImageCube1_Int3,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01I20D30D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01J20D(
+constexpr const TFunction imageLoad_01I20D(BuiltInId::imageLoad_IImageCube1_Int3,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01I20D30D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01J20D(
     BuiltInId::imageLoad_UImageCube1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -10285,7 +9741,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_00y10D30B(
+constexpr const TFunction imageStore_00y10D30B(
     BuiltInId::imageStore_Image2D1_Int2_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10294,7 +9750,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_00z10D30D(
+constexpr const TFunction imageStore_00z10D30D(
     BuiltInId::imageStore_IImage2D1_Int2_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10303,7 +9759,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01A10D30E(
+constexpr const TFunction imageStore_01A10D30E(
     BuiltInId::imageStore_UImage2D1_Int2_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10312,7 +9768,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01B20D30B(
+constexpr const TFunction imageStore_01B20D30B(
     BuiltInId::imageStore_Image3D1_Int3_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10321,7 +9777,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01C20D30D(
+constexpr const TFunction imageStore_01C20D30D(
     BuiltInId::imageStore_IImage3D1_Int3_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10330,7 +9786,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01D20D30E(
+constexpr const TFunction imageStore_01D20D30E(
     BuiltInId::imageStore_UImage3D1_Int3_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10339,7 +9795,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01E20D30B(
+constexpr const TFunction imageStore_01E20D30B(
     BuiltInId::imageStore_Image2DArray1_Int3_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10348,7 +9804,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01F20D30D(
+constexpr const TFunction imageStore_01F20D30D(
     BuiltInId::imageStore_IImage2DArray1_Int3_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10357,7 +9813,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01G20D30E(
+constexpr const TFunction imageStore_01G20D30E(
     BuiltInId::imageStore_UImage2DArray1_Int3_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10366,7 +9822,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01H20D30B(
+constexpr const TFunction imageStore_01H20D30B(
     BuiltInId::imageStore_ImageCube1_Int3_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10375,7 +9831,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01I20D30D(
+constexpr const TFunction imageStore_01I20D30D(
     BuiltInId::imageStore_IImageCube1_Int3_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10384,7 +9840,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01J20D30E(
+constexpr const TFunction imageStore_01J20D30E(
     BuiltInId::imageStore_UImageCube1_Int3_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -10393,16 +9849,15 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_memoryBarrier_(
-    BuiltInId::memoryBarrier,
-    BuiltInName::memoryBarrier,
-    TExtension::UNDEFINED,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMemoryBarrier,
-    false);
-constexpr const TFunction function_memoryBarrierAtomicCounter_(
+constexpr const TFunction memoryBarrier_(BuiltInId::memoryBarrier,
+                                         BuiltInName::memoryBarrier,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::empty,
+                                         0,
+                                         StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpMemoryBarrier,
+                                         false);
+constexpr const TFunction memoryBarrierAtomicCounter_(
     BuiltInId::memoryBarrierAtomicCounter,
     BuiltInName::memoryBarrierAtomicCounter,
     TExtension::UNDEFINED,
@@ -10411,7 +9866,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpMemoryBarrierAtomicCounter,
     false);
-constexpr const TFunction function_memoryBarrierBuffer_(
+constexpr const TFunction memoryBarrierBuffer_(
     BuiltInId::memoryBarrierBuffer,
     BuiltInName::memoryBarrierBuffer,
     TExtension::UNDEFINED,
@@ -10420,7 +9875,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpMemoryBarrierBuffer,
     false);
-constexpr const TFunction function_memoryBarrierImage_(
+constexpr const TFunction memoryBarrierImage_(
     BuiltInId::memoryBarrierImage,
     BuiltInName::memoryBarrierImage,
     TExtension::UNDEFINED,
@@ -10429,16 +9884,15 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpMemoryBarrierImage,
     false);
-constexpr const TFunction function_barrier_(
-    BuiltInId::barrier,
-    BuiltInName::barrier,
-    TExtension::UNDEFINED,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpBarrier,
-    false);
-constexpr const TFunction function_memoryBarrierShared_(
+constexpr const TFunction barrier_(BuiltInId::barrier,
+                                   BuiltInName::barrier,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::empty,
+                                   0,
+                                   StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpBarrier,
+                                   false);
+constexpr const TFunction memoryBarrierShared_(
     BuiltInId::memoryBarrierShared,
     BuiltInName::memoryBarrierShared,
     TExtension::UNDEFINED,
@@ -10447,7 +9901,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpMemoryBarrierShared,
     false);
-constexpr const TFunction function_groupMemoryBarrier_(
+constexpr const TFunction groupMemoryBarrier_(
     BuiltInId::groupMemoryBarrier,
     BuiltInName::groupMemoryBarrier,
     TExtension::UNDEFINED,
@@ -10456,15908 +9910,3895 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpGroupMemoryBarrier,
     false);
-constexpr const TFunction function_EmitVertex_(
-    BuiltInId::EmitVertex,
-    BuiltInName::EmitVertex,
-    TExtension::EXT_geometry_shader,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpEmitVertex,
-    false);
-constexpr const TFunction function_EndPrimitive_(
-    BuiltInId::EndPrimitive,
-    BuiltInName::EndPrimitive,
-    TExtension::EXT_geometry_shader,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpEndPrimitive,
-    false);
+constexpr const TFunction EmitVertex_(BuiltInId::EmitVertex,
+                                      BuiltInName::EmitVertex,
+                                      TExtension::EXT_geometry_shader,
+                                      BuiltInParameters::empty,
+                                      0,
+                                      StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpEmitVertex,
+                                      false);
+constexpr const TFunction EndPrimitive_(BuiltInId::EndPrimitive,
+                                        BuiltInName::EndPrimitive,
+                                        TExtension::EXT_geometry_shader,
+                                        BuiltInParameters::empty,
+                                        0,
+                                        StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpEndPrimitive,
+                                        false);
 
-}  // namespace BuiltInFunction
+}  // namespace Func
 
 namespace BuiltInArray
 {
+using namespace Func;
+using Rule = SymbolRule;
 
-constexpr SymbolEntry mangled[] = {
-    SymbolEntry(ImmutableString("textureProj(00R30B00B"),
-                &BuiltInFunction::function_textureProj_00R30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00N10B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00N10B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10D00D00D"),
-                &BuiltInFunction::function_clamp_10D00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PrimitiveID"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_PrimitiveID,
-                nullptr,
-                310,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &BuiltInVariable::kVar_gl_PrimitiveIDGS,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader),
-    SymbolEntry(ImmutableString("texture(00R10B00B"),
-                &BuiltInFunction::function_texture_00R10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(00B00B"),
-                &BuiltInFunction::function_modf_00B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxAtomicCounterBindings"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxAtomicCounterBindings,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(20D20D"),
-                &BuiltInFunction::function_notEqual_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeImageUniforms"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeImageUniforms,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00L20B00B"),
-                &BuiltInFunction::function_textureLod_00L20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("angle_BaseVertex"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_angle_BaseVertex,
-                nullptr,
-                0,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_base_vertex_base_instance,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("determinant(A0B"),
-                &BuiltInFunction::function_determinant_A0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00I30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00I30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tanh(30B"),
-                &BuiltInFunction::function_tanh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_Layer"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_Layer,
-                nullptr,
-                310,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &BuiltInVariable::kVar_gl_LayerGS,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader),
-    SymbolEntry(ImmutableString("textureOffset(00d20B10D"),
-                &BuiltInFunction::function_textureOffset_00d20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdx(30B"),
-                &BuiltInFunction::function_dFdx_30B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdxExt_30B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(00E00E00E"),
-                &BuiltInFunction::function_clamp_00E00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(50B"),
-                &BuiltInFunction::function_transpose_50B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(00B00D"),
-                &BuiltInFunction::function_ldexp_00B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00K20B00D"),
-                &BuiltInFunction::function_textureGather_00K20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(30B30B"),
-                &BuiltInFunction::function_lessThanEqual_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(20D20D"),
-                &BuiltInFunction::function_greaterThanEqual_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20E20E"),
-                &BuiltInFunction::function_min_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asin(20B"),
-                &BuiltInFunction::function_asin_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(20B30B"),
-                &BuiltInFunction::function_outerProduct_20B30B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(00D00D00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_00D00D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00Y30B20B20B"),
-                &BuiltInFunction::function_textureProjGrad_00Y30B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(30B"),
-                &BuiltInFunction::function_roundEven_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acosh(20B"),
-                &BuiltInFunction::function_acosh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atanh(10B"),
-                &BuiltInFunction::function_atanh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20B20B00B"),
-                &BuiltInFunction::function_mix_20B20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10B10B10B"),
-                &BuiltInFunction::function_clamp_10B10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00I10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00I10B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00L20B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00L20B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(00D"),
-                &BuiltInFunction::function_bitCount_00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00B20B"),
-                &BuiltInFunction::function_step_00B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(30E30E"),
-                &BuiltInFunction::function_lessThan_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uintBitsToFloat(30E"),
-                &BuiltInFunction::function_uintBitsToFloat_30E,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imulExtended(30D30D30D30D"),
-                &BuiltInFunction::function_imulExtended_30D30D30D30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00K00D"),
-                &BuiltInFunction::function_textureSize_00K00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryOutputVertices"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryOutputVertices,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(70B"),
-                &BuiltInFunction::function_transpose_70B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00S30B20D00B"),
-                &BuiltInFunction::function_textureProjOffset_00S30B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00X30B00B"),
-                &BuiltInFunction::function_textureProjLod_00X30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00Y00D"),
-                &BuiltInFunction::function_textureSize_00Y00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MinProgramTexelOffset"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MinProgramTexelOffset,
-                300,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00d20B"),
-                &BuiltInFunction::function_texture_00d20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00J30B00B"),
-                &BuiltInFunction::function_textureProj_00J30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(10B10B"),
-                &BuiltInFunction::function_atan_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20B00B"),
-                &BuiltInFunction::function_max_20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30B30B30B"),
-                &BuiltInFunction::function_clamp_30B30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("EndPrimitive("),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_EndPrimitive_,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00Y20B00B"),
-                &BuiltInFunction::function_textureLod_00Y20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00a20B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00a20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00Y20D00D20D"),
-                &BuiltInFunction::function_texelFetchOffset_00Y20D00D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00a20D00D"),
-                &BuiltInFunction::function_texelFetch_00a20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20D00D"),
-                &BuiltInFunction::function_min_20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01F20D"),
-                &BuiltInFunction::function_imageLoad_01F20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uintBitsToFloat(00E"),
-                &BuiltInFunction::function_uintBitsToFloat_00E,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(20B20B"),
-                &BuiltInFunction::function_lessThanEqual_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00N10D00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetch_00N10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicAdd(00D00D"),
-                &BuiltInFunction::function_atomicAdd_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryOutputComponents"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryOutputComponents,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryTextureImageUnits"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryTextureImageUnits,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToUint(20B"),
-                &BuiltInFunction::function_floatBitsToUint_20B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(20D20D00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_20D20D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexTextureImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexTextureImageUnits,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00Z20B"),
-                &BuiltInFunction::function_texture_00Z20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10D10D"),
-                &BuiltInFunction::function_min_10D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("degrees(20B"),
-                &BuiltInFunction::function_degrees_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tanh(00B"),
-                &BuiltInFunction::function_tanh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00J30B20D00B"),
-                &BuiltInFunction::function_textureProjOffset_00J30B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("all(30F"),
-                &BuiltInFunction::function_all_30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(20D"),
-                &BuiltInFunction::function_abs_20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(20B"),
-                &BuiltInFunction::function_abs_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(00B"),
-                &BuiltInFunction::function_inversesqrt_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(D0BD0B"),
-                &BuiltInFunction::function_matrixCompMult_D0BD0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(10B10B"),
-                &BuiltInFunction::function_lessThanEqual_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(20D"),
-                &BuiltInFunction::function_bitfieldReverse_20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(20E"),
-                &BuiltInFunction::function_bitfieldReverse_20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00S30B20B20B"),
-                &BuiltInFunction::function_textureProjGrad_00S30B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(10D10D"),
-                &BuiltInFunction::function_equal_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30D00D"),
-                &BuiltInFunction::function_max_30D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("groupMemoryBarrier("),
-                &BuiltInFunction::function_groupMemoryBarrier_,
-                nullptr,
-                310,
-                430,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00B00B00F"),
-                &BuiltInFunction::function_mix_00B00B00F,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00R20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00R20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01A10D"),
-                &BuiltInFunction::function_imageLoad_01A10D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("intBitsToFloat(30D"),
-                &BuiltInFunction::function_intBitsToFloat_30D,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00I20B"),
-                &BuiltInFunction::function_textureProj_00I20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00I10D00D"),
-                &BuiltInFunction::function_texelFetch_00I10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30B30B"),
-                &BuiltInFunction::function_min_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01I20D30D"),
-                &BuiltInFunction::function_imageStore_01I20D30D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexAtomicCounterBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexAtomicCounterBuffers,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00S20B00B20D"),
-                &BuiltInFunction::function_textureLodOffset_00S20B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00R10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00R10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acos(00B"),
-                &BuiltInFunction::function_acos_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(10B"),
-                &BuiltInFunction::function_fract_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(20E20E"),
-                &BuiltInFunction::function_lessThan_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("intBitsToFloat(00D"),
-                &BuiltInFunction::function_intBitsToFloat_00D,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00J20B20B20B20D"),
-                &BuiltInFunction::function_textureGradOffset_00J20B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrierAtomicCounter("),
-                &BuiltInFunction::function_memoryBarrierAtomicCounter_,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DGradEXT(00I10B10B10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DGradEXT_00I10B10B10B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(00E00E00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_00E00E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicXor(00D00D"),
-                &BuiltInFunction::function_atomicXor_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(20B20B"),
-                &BuiltInFunction::function_greaterThan_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00I10B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00I10B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00Y20D00D"),
-                &BuiltInFunction::function_texelFetch_00Y20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjGradEXT(00I30B10B10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DProjGradEXT_00I30B10B10B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00d20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00d20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00R30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00R30B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00U20B10D"),
-                &BuiltInFunction::function_textureOffset_00U20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(10B"),
-                &BuiltInFunction::function_atan_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(10B10B"),
-                &BuiltInFunction::function_modf_10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30B00B"),
-                &BuiltInFunction::function_min_30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("determinant(50B"),
-                &BuiltInFunction::function_determinant_50B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(20B20B"),
-                &BuiltInFunction::function_lessThan_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicAnd(00D00D"),
-                &BuiltInFunction::function_atomicAnd_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragColor"),
-                &BuiltInVariable::kVar_gl_FragColor,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp(10B"),
-                &BuiltInFunction::function_exp_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00I20B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00I20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00B10B"),
-                &BuiltInFunction::function_step_00B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(30D"),
-                &BuiltInFunction::function_bitCount_30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00I20B00B"),
-                &BuiltInFunction::function_textureProjLod_00I20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackUnorm2x16(00E"),
-                &BuiltInFunction::function_unpackUnorm2x16_00E,
-                nullptr,
-                300,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("rgb_2_yuv(20B00H"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_rgb_2_yuv_20B00H,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(20B"),
-                &BuiltInFunction::function_sqrt_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(20B"),
-                &BuiltInFunction::function_sign_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01B20D30B"),
-                &BuiltInFunction::function_imageStore_01B20D30B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(20D"),
-                &BuiltInFunction::function_sign_20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atanh(00B"),
-                &BuiltInFunction::function_atanh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00X10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00X10B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_DepthRange"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_DepthRange,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imulExtended(10D10D10D10D"),
-                &BuiltInFunction::function_imulExtended_10D10D10D10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(20B"),
-                &BuiltInFunction::function_atan_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00M10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00M10B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexOutputVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexOutputVectors,
-                300,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00T20B"),
-                &BuiltInFunction::function_texture_00T20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log2(10B"),
-                &BuiltInFunction::function_log2_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10B10B"),
-                &BuiltInFunction::function_min_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxImageUnits,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("pow(10B10B"),
-                &BuiltInFunction::function_pow_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(20E"),
-                &BuiltInFunction::function_findLSB_20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(20D"),
-                &BuiltInFunction::function_findLSB_20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00Y20B"),
-                &BuiltInFunction::function_texture_00Y20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packUnorm4x8(30B"),
-                &BuiltInFunction::function_packUnorm4x8_30B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00X10B00B"),
-                &BuiltInFunction::function_texture_00X10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(00B00D"),
-                &BuiltInFunction::function_frexp_00B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2D(00I10B"),
-                &BuiltInFunction::function_texture2D_00I10B,
-                nullptr,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("not(10F"),
-                &BuiltInFunction::function_notFunc_10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00P10D00D"),
-                &BuiltInFunction::function_texelFetch_00P10D00D,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00P10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(10E10E"),
-                &BuiltInFunction::function_lessThan_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(20B"),
-                &BuiltInFunction::function_ceil_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00R10B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00R10B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10D10D10D"),
-                &BuiltInFunction::function_clamp_10D10D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00M10D00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetch_00M10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00O10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00O10B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(F0B"),
-                &BuiltInFunction::function_transpose_F0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00Y20B20D00B"),
-                &BuiltInFunction::function_textureOffset_00Y20B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00S20B20B20B20D"),
-                &BuiltInFunction::function_textureGradOffset_00S20B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicXor(00E00E"),
-                &BuiltInFunction::function_atomicXor_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00R20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00R20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragCoord"),
-                &BuiltInVariable::kVar_gl_FragCoord,
-                nullptr,
-                0,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30E30E30E"),
-                &BuiltInFunction::function_clamp_30E30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00N30B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00N30B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00R00D"),
-                &BuiltInFunction::function_textureSize_00R00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentImageUniforms"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentImageUniforms,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(00B"),
-                &BuiltInFunction::function_normalize_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00I10B10D"),
-                &BuiltInFunction::function_textureOffset_00I10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicExchange(00E00E"),
-                &BuiltInFunction::function_atomicExchange_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00I30B00B"),
-                &BuiltInFunction::function_textureProj_00I30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acosh(10B"),
-                &BuiltInFunction::function_acosh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedShaderOutputResources"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedShaderOutputResources,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicOr(00E00E"),
-                &BuiltInFunction::function_atomicOr_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20B00B"),
-                &BuiltInFunction::function_min_20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00M30B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00M30B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicMax(00D00D"),
-                &BuiltInFunction::function_atomicMax_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00M20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00M20B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00I10B00B"),
-                &BuiltInFunction::function_texture_00I10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(00B00B"),
-                &BuiltInFunction::function_reflect_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(20B00B"),
-                &BuiltInFunction::function_mod_20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(20D20D"),
-                &BuiltInFunction::function_lessThan_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(10B10B"),
-                &BuiltInFunction::function_reflect_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToUint(10B"),
-                &BuiltInFunction::function_floatBitsToUint_10B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00J20B00B"),
-                &BuiltInFunction::function_textureLod_00J20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(10B"),
-                &BuiltInFunction::function_sqrt_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00S30B00B"),
-                &BuiltInFunction::function_textureProjLod_00S30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20E20E20E"),
-                &BuiltInFunction::function_clamp_20E20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicAnd(00E00E"),
-                &BuiltInFunction::function_atomicAnd_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20D00D"),
-                &BuiltInFunction::function_max_20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00I00D"),
-                &BuiltInFunction::function_textureSize_00I00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeAtomicCounterBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeAtomicCounterBuffers,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PrimitiveIDIn"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_PrimitiveIDIn,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00R10D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00R10D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(30B"),
-                &BuiltInFunction::function_isinf_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00a20B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00a20B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(30B30B"),
-                &BuiltInFunction::function_lessThan_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00I10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00I10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00L20B10D00B"),
-                &BuiltInFunction::function_textureOffset_00L20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00X10B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00X10B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00T20B00B"),
-                &BuiltInFunction::function_texture_00T20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00L20B10D"),
-                &BuiltInFunction::function_textureOffset_00L20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(30E30E"),
-                &BuiltInFunction::function_lessThanEqual_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00J20B20D00B"),
-                &BuiltInFunction::function_textureOffset_00J20B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10E00E"),
-                &BuiltInFunction::function_min_10E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log(30B"),
-                &BuiltInFunction::function_log_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounter(00G"),
-                &BuiltInFunction::function_atomicCounter_00G,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00S30B20D"),
-                &BuiltInFunction::function_textureProjOffset_00S30B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01I20D"),
-                &BuiltInFunction::function_imageLoad_01I20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(00B"),
-                &BuiltInFunction::function_round_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00B00B20B"),
-                &BuiltInFunction::function_smoothstep_00B00B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01H20D"),
-                &BuiltInFunction::function_imageLoad_01H20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00K20B"),
-                &BuiltInFunction::function_textureGather_00K20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(30D30D00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_30D30D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01G20D30E"),
-                &BuiltInFunction::function_imageStore_01G20D30E,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidth(10B"),
-                &BuiltInFunction::function_fwidth_10B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_fwidthExt_10B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00R20B00B"),
-                &BuiltInFunction::function_textureProjLod_00R20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(30D30D"),
-                &BuiltInFunction::function_notEqual_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(10B10B00B"),
-                &BuiltInFunction::function_refract_10B10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00I20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00I20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(30D30D"),
-                &BuiltInFunction::function_greaterThan_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(10D10D"),
-                &BuiltInFunction::function_greaterThan_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00U20B"),
-                &BuiltInFunction::function_texture_00U20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00a00D"),
-                &BuiltInFunction::function_textureSize_00a00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(10E00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_10E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxDrawBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxDrawBuffers,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00U20B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00U20B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeWorkGroupCount"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeWorkGroupCount,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00J30B00B"),
-                &BuiltInFunction::function_textureProjLod_00J30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DRect(00O10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DRect_00O10B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imulExtended(20D20D20D20D"),
-                &BuiltInFunction::function_imulExtended_20D20D20D20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("any(30F"),
-                &BuiltInFunction::function_any_30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(30B30B"),
-                &BuiltInFunction::function_distance_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(20D20D"),
-                &BuiltInFunction::function_greaterThan_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00a20B10D"),
-                &BuiltInFunction::function_textureOffset_00a20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(30B30B"),
-                &BuiltInFunction::function_greaterThan_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(00B"),
-                &BuiltInFunction::function_trunc_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sinh(30B"),
-                &BuiltInFunction::function_sinh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(10B"),
-                &BuiltInFunction::function_length_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(10E"),
-                &BuiltInFunction::function_findMSB_10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(10D"),
-                &BuiltInFunction::function_findMSB_10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(00B00B"),
-                &BuiltInFunction::function_dot_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asinh(20B"),
-                &BuiltInFunction::function_asinh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(30B30B"),
-                &BuiltInFunction::function_dot_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(00E"),
-                &BuiltInFunction::function_bitCount_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tan(30B"),
-                &BuiltInFunction::function_tan_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00T20B00B"),
-                &BuiltInFunction::function_textureLod_00T20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("usubBorrow(20E20E20E"),
-                &BuiltInFunction::function_usubBorrow_20E20E20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(00z10D30D"),
-                &BuiltInFunction::function_imageStore_00z10D30D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00R30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00R30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp2(10B"),
-                &BuiltInFunction::function_exp2_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00O20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00O20B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00X20B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00X20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(10B20B"),
-                &BuiltInFunction::function_outerProduct_10B20B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryAtomicCounterBuffers"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryAtomicCounterBuffers,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00X30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00X30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00I10B10D00B"),
-                &BuiltInFunction::function_textureOffset_00I10B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30B00B00B"),
-                &BuiltInFunction::function_clamp_30B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inverse(50B"),
-                &BuiltInFunction::function_inverse_50B,
-                nullptr,
-                300,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(10B10B"),
-                &BuiltInFunction::function_dot_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackHalf2x16(00E"),
-                &BuiltInFunction::function_unpackHalf2x16_00E,
-                nullptr,
-                300,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(A0BA0B"),
-                &BuiltInFunction::function_matrixCompMult_A0BA0B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjLod(00I20B00B"),
-                &BuiltInFunction::function_texture2DProjLod_00I20B00B,
-                nullptr,
-                100,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00W20D00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00W20D00D,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DRectProj(00O30B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DRectProj_00O30B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("radians(20B"),
-                &BuiltInFunction::function_radians_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00S20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00S20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10D00D"),
-                &BuiltInFunction::function_max_10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01J20D30E"),
-                &BuiltInFunction::function_imageStore_01J20D30E,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(30B"),
-                &BuiltInFunction::function_round_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeTextureImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeTextureImageUnits,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(00D00D00D"),
-                &BuiltInFunction::function_clamp_00D00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sin(30B"),
-                &BuiltInFunction::function_sin_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(30B"),
-                &BuiltInFunction::function_floor_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00S30B00B"),
-                &BuiltInFunction::function_textureProj_00S30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00Y20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00Y20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedAtomicCounters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedAtomicCounters,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00L20B00D"),
-                &BuiltInFunction::function_textureGather_00L20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00S30B20B20B20D"),
-                &BuiltInFunction::function_textureProjGradOffset_00S30B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01A10D30E"),
-                &BuiltInFunction::function_imageStore_01A10D30E,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00J20B"),
-                &BuiltInFunction::function_texture_00J20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PointCoord"),
-                &BuiltInVariable::kVar_gl_PointCoord,
-                nullptr,
-                0,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdx(20B"),
-                &BuiltInFunction::function_dFdx_20B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdxExt_20B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00X20B"),
-                &BuiltInFunction::function_textureProj_00X20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10E10E"),
-                &BuiltInFunction::function_max_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30B30B"),
-                &BuiltInFunction::function_max_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10E10E10E"),
-                &BuiltInFunction::function_clamp_10E10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00S20D00D20D"),
-                &BuiltInFunction::function_texelFetchOffset_00S20D00D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00N10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00N10B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00L20B"),
-                &BuiltInFunction::function_texture_00L20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("barrier("),
-                &BuiltInFunction::function_barrier_,
-                nullptr,
-                310,
-                400,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryUniformComponents"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryUniformComponents,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(20E20E"),
-                &BuiltInFunction::function_greaterThanEqual_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(10D10D"),
-                &BuiltInFunction::function_lessThan_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00a20D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00a20D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00X20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00X20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00I20B"),
-                &BuiltInFunction::function_texture2DProj_00I20B,
-                nullptr,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3DProjLod(00J30B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture3DProjLod_00J30B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("not(20F"),
-                &BuiltInFunction::function_notFunc_20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString(""),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(20D"),
-                &BuiltInFunction::function_findMSB_20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(20E"),
-                &BuiltInFunction::function_findMSB_20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00I10D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00I10D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00I10B00D"),
-                &BuiltInFunction::function_textureGather_00I10B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00V10D00D"),
-                &BuiltInFunction::function_texelFetch_00V10D00D,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00V10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(20B20B"),
-                &BuiltInFunction::function_outerProduct_20B20B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(30B30B"),
-                &BuiltInFunction::function_atan_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackSnorm4x8(00E"),
-                &BuiltInFunction::function_unpackSnorm4x8_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(30E"),
-                &BuiltInFunction::function_bitCount_30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00R20B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00R20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log(20B"),
-                &BuiltInFunction::function_log_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asin(30B"),
-                &BuiltInFunction::function_asin_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00f20B"),
-                &BuiltInFunction::function_textureGather_00f20B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(30B30B"),
-                &BuiltInFunction::function_modf_30B30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(20B"),
-                &BuiltInFunction::function_isnan_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(00B00B"),
-                &BuiltInFunction::function_max_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(20B"),
-                &BuiltInFunction::function_roundEven_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidth(00B"),
-                &BuiltInFunction::function_fwidth_00B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_fwidthExt_00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00J30B20B20B"),
-                &BuiltInFunction::function_textureProjGrad_00J30B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdy(10B"),
-                &BuiltInFunction::function_dFdy_10B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdyExt_10B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(30B10B"),
-                &BuiltInFunction::function_outerProduct_30B10B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToInt(30B"),
-                &BuiltInFunction::function_floatBitsToInt_30B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00J30B"),
-                &BuiltInFunction::function_textureProj_00J30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_InvocationID"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_InvocationID,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30E00E"),
-                &BuiltInFunction::function_max_30E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp2(20B"),
-                &BuiltInFunction::function_exp2_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00d20B00B"),
-                &BuiltInFunction::function_textureLod_00d20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("radians(10B"),
-                &BuiltInFunction::function_radians_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00U20D00D"),
-                &BuiltInFunction::function_texelFetch_00U20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeWorkGroupSize"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeWorkGroupSize,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_BaseVertex"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_BaseVertex,
-                nullptr,
-                300,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_base_vertex_base_instance,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(00D00D"),
-                &BuiltInFunction::function_max_00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LastFragData"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_LastFragData,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_framebuffer_fetch,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_LastFragDataNV,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::NV_shader_framebuffer_fetch),
-    SymbolEntry(ImmutableString("ceil(30B"),
-                &BuiltInFunction::function_ceil_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicMin(00E00E"),
-                &BuiltInFunction::function_atomicMin_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedTextureImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedTextureImageUnits,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(10E"),
-                &BuiltInFunction::function_bitCount_10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00S20B00B"),
-                &BuiltInFunction::function_texture_00S20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00e20B00B"),
-                &BuiltInFunction::function_textureGather_00e20B00B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_DepthRangeParameters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_DepthRangeParameters,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(10B10B"),
-                &BuiltInFunction::function_distance_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(20B20B"),
-                &BuiltInFunction::function_reflect_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(10B00B"),
-                &BuiltInFunction::function_mod_10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uintBitsToFloat(10E"),
-                &BuiltInFunction::function_uintBitsToFloat_10E,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00Z20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00Z20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(10F10F"),
-                &BuiltInFunction::function_equal_10F10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cosh(00B"),
-                &BuiltInFunction::function_cosh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(00D"),
-                &BuiltInFunction::function_bitfieldReverse_00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(00E"),
-                &BuiltInFunction::function_bitfieldReverse_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20E20E"),
-                &BuiltInFunction::function_max_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(70B70B"),
-                &BuiltInFunction::function_matrixCompMult_70B70B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(30E00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_30E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00I10B00B"),
-                &BuiltInFunction::function_textureLod_00I10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(10D10D"),
-                &BuiltInFunction::function_greaterThanEqual_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00e30B00B"),
-                &BuiltInFunction::function_texture_00e30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00Y20B00B20D"),
-                &BuiltInFunction::function_textureLodOffset_00Y20B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log2(00B"),
-                &BuiltInFunction::function_log2_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LastFragColor"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_LastFragColor,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::NV_shader_framebuffer_fetch,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(10D"),
-                &BuiltInFunction::function_abs_10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(10B"),
-                &BuiltInFunction::function_abs_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acos(30B"),
-                &BuiltInFunction::function_acos_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tanh(10B"),
-                &BuiltInFunction::function_tanh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("degrees(30B"),
-                &BuiltInFunction::function_degrees_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragDepthEXT"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_FragDepthEXT,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_frag_depth,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdx(10B"),
-                &BuiltInFunction::function_dFdx_10B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdxExt_10B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00I30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00I30B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(30E"),
-                &BuiltInFunction::function_bitfieldReverse_30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(30D"),
-                &BuiltInFunction::function_bitfieldReverse_30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(30B"),
-                &BuiltInFunction::function_inversesqrt_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LocalInvocationID"),
-                &BuiltInVariable::kVar_gl_LocalInvocationID,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString(""),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(00B00B00B"),
-                &BuiltInFunction::function_clamp_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00d10B"),
-                &BuiltInFunction::function_textureGather_00d10B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(20B20D"),
-                &BuiltInFunction::function_frexp_20B20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("intBitsToFloat(20D"),
-                &BuiltInFunction::function_intBitsToFloat_20D,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(00B"),
-                &BuiltInFunction::function_fract_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragDepth"),
-                &BuiltInVariable::kVar_gl_FragDepth,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30E00E"),
-                &BuiltInFunction::function_min_30E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp(20B"),
-                &BuiltInFunction::function_exp_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(20B20B"),
-                &BuiltInFunction::function_equal_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00X20B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00X20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acosh(00B"),
-                &BuiltInFunction::function_acosh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log(10B"),
-                &BuiltInFunction::function_log_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00S30B00B20D"),
-                &BuiltInFunction::function_textureProjLodOffset_00S30B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sinh(20B"),
-                &BuiltInFunction::function_sinh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00L20B"),
-                &BuiltInFunction::function_textureGather_00L20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(30B30B"),
-                &BuiltInFunction::function_reflect_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(30B20B"),
-                &BuiltInFunction::function_outerProduct_30B20B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00U20B00B"),
-                &BuiltInFunction::function_texture_00U20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00S20B"),
-                &BuiltInFunction::function_texture_00S20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(20B10B"),
-                &BuiltInFunction::function_outerProduct_20B10B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("umulExtended(10E10E10E10E"),
-                &BuiltInFunction::function_umulExtended_10E10E10E10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00Z20B00B"),
-                &BuiltInFunction::function_texture_00Z20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00a20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00a20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(20F20F"),
-                &BuiltInFunction::function_notEqual_20F20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(30B30B"),
-                &BuiltInFunction::function_mod_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(10D00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_10D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(30B"),
-                &BuiltInFunction::function_sign_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(30D"),
-                &BuiltInFunction::function_sign_30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("pow(00B00B"),
-                &BuiltInFunction::function_pow_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(00B00B"),
-                &BuiltInFunction::function_mod_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00Y20B00B"),
-                &BuiltInFunction::function_texture_00Y20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(30B30B"),
-                &BuiltInFunction::function_notEqual_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(10B"),
-                &BuiltInFunction::function_roundEven_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjLodEXT(00I30B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DProjLodEXT_00I30B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atanh(30B"),
-                &BuiltInFunction::function_atanh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdy(20B"),
-                &BuiltInFunction::function_dFdy_20B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdyExt_20B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00Y30B"),
-                &BuiltInFunction::function_textureProj_00Y30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(20D"),
-                &BuiltInFunction::function_bitCount_20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00B00B"),
-                &BuiltInFunction::function_step_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00L20D00D"),
-                &BuiltInFunction::function_texelFetch_00L20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(00y"),
-                &BuiltInFunction::function_imageSize_00y,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(00B"),
-                &BuiltInFunction::function_isinf_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(00z"),
-                &BuiltInFunction::function_imageSize_00z,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(20B20B"),
-                &BuiltInFunction::function_distance_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00U20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00U20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uaddCarry(30E30E30E"),
-                &BuiltInFunction::function_uaddCarry_30E30E30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(30B00B"),
-                &BuiltInFunction::function_mod_30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00K20B00B"),
-                &BuiltInFunction::function_texture_00K20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedImageUniforms"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedImageUniforms,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("yuv_2_rgb(20B00H"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_yuv_2_rgb_20B00H,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00f20B00B"),
-                &BuiltInFunction::function_textureGather_00f20B00B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(20E20E"),
-                &BuiltInFunction::function_greaterThan_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00a20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00a20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00U20B10D00B"),
-                &BuiltInFunction::function_textureOffset_00U20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("intBitsToFloat(10D"),
-                &BuiltInFunction::function_intBitsToFloat_10D,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00J20B00B"),
-                &BuiltInFunction::function_texture_00J20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(20B20B00B"),
-                &BuiltInFunction::function_refract_20B20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00I30B00B"),
-                &BuiltInFunction::function_textureProjLod_00I30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(00B00B00B"),
-                &BuiltInFunction::function_refract_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(10D"),
-                &BuiltInFunction::function_findLSB_10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(10E"),
-                &BuiltInFunction::function_findLSB_10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10B10B10F"),
-                &BuiltInFunction::function_mix_10B10B10F,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10B10B10B"),
-                &BuiltInFunction::function_mix_10B10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00Y30B00B"),
-                &BuiltInFunction::function_textureProj_00Y30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3D(00J20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture3D_00J20B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(D0B"),
-                &BuiltInFunction::function_transpose_D0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log2(30B"),
-                &BuiltInFunction::function_log2_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00J20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00J20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00d30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00d30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(30B"),
-                &BuiltInFunction::function_fract_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LocalInvocationIndex"),
-                &BuiltInVariable::kVar_gl_LocalInvocationIndex,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00J00D"),
-                &BuiltInFunction::function_textureSize_00J00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00I10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00I10B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00X10B00D"),
-                &BuiltInFunction::function_textureGather_00X10B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00U20D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00U20D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00Y30B00B20D"),
-                &BuiltInFunction::function_textureProjLodOffset_00Y30B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00e00D"),
-                &BuiltInFunction::function_textureSize_00e00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(20E20E"),
-                &BuiltInFunction::function_notEqual_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00d20B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00d20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inverse(A0B"),
-                &BuiltInFunction::function_inverse_A0B,
-                nullptr,
-                300,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01E20D30B"),
-                &BuiltInFunction::function_imageStore_01E20D30B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00X20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00X20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30E30E"),
-                &BuiltInFunction::function_max_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(30B"),
-                &BuiltInFunction::function_isnan_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imulExtended(00D00D00D00D"),
-                &BuiltInFunction::function_imulExtended_00D00D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_in"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_in,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(20B20B"),
-                &BuiltInFunction::function_atan_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("usubBorrow(00E00E00E"),
-                &BuiltInFunction::function_usubBorrow_00E00E00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00J30B00B20D"),
-                &BuiltInFunction::function_textureProjLodOffset_00J30B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(30B30D"),
-                &BuiltInFunction::function_frexp_30B30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_SecondaryFragDataEXT"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_SecondaryFragDataEXT,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_blend_func_extended,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30E30E"),
-                &BuiltInFunction::function_min_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00I30B00B"),
-                &BuiltInFunction::function_texture2DProj_00I30B00B,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCubeGradEXT(00K20B20B20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureCubeGradEXT_00K20B20B20B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00I10B"),
-                &BuiltInFunction::function_texture_00I10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(00B00B"),
-                &BuiltInFunction::function_min_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_InstanceID"),
-                &BuiltInVariable::kVar_gl_InstanceID,
-                nullptr,
-                300,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00c20D00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00c20D00D,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexImageUniforms"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexImageUniforms,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(00B"),
-                &BuiltInFunction::function_sqrt_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(20B"),
-                &BuiltInFunction::function_normalize_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentAtomicCounterBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentAtomicCounterBuffers,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_WorkGroupID"),
-                &BuiltInVariable::kVar_gl_WorkGroupID,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("degrees(00B"),
-                &BuiltInFunction::function_degrees_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inverse(F0B"),
-                &BuiltInFunction::function_inverse_F0B,
-                nullptr,
-                300,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20E00E"),
-                &BuiltInFunction::function_min_20E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00R30B00B"),
-                &BuiltInFunction::function_textureProjLod_00R30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00P"),
-                &BuiltInFunction::function_textureSize_00P,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00P,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00d20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00d20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00R30B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00R30B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(00B"),
-                &BuiltInFunction::function_atan_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicExchange(00D00D"),
-                &BuiltInFunction::function_atomicExchange_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00R10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00R10B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(00y10D30B"),
-                &BuiltInFunction::function_imageStore_00y10D30B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryAtomicCounters"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryAtomicCounters,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2D(00I10B00B"),
-                &BuiltInFunction::function_texture2D_00I10B00B,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00X20B00B"),
-                &BuiltInFunction::function_textureProj_00X20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20D20D20D"),
-                &BuiltInFunction::function_clamp_20D20D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(30E30E"),
-                &BuiltInFunction::function_greaterThan_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(10B10D"),
-                &BuiltInFunction::function_frexp_10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10E00E"),
-                &BuiltInFunction::function_max_10E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00B00B10B"),
-                &BuiltInFunction::function_smoothstep_00B00B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_GlobalInvocationID"),
-                &BuiltInVariable::kVar_gl_GlobalInvocationID,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(60B60B"),
-                &BuiltInFunction::function_matrixCompMult_60B60B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrierShared("),
-                &BuiltInFunction::function_memoryBarrierShared_,
-                nullptr,
-                310,
-                430,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(10B"),
-                &BuiltInFunction::function_normalize_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackSnorm2x16(00E"),
-                &BuiltInFunction::function_unpackSnorm2x16_00E,
-                nullptr,
-                300,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(00z10D"),
-                &BuiltInFunction::function_imageLoad_00z10D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(30D30D"),
-                &BuiltInFunction::function_lessThan_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(00B00B"),
-                &BuiltInFunction::function_atan_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(20D00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_20D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00L20B00B"),
-                &BuiltInFunction::function_texture_00L20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(10B10B"),
-                &BuiltInFunction::function_notEqual_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01G20D"),
-                &BuiltInFunction::function_imageLoad_01G20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(00E00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_00E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCompSwap(00D00D00D"),
-                &BuiltInFunction::function_atomicCompSwap_00D00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(30B"),
-                &BuiltInFunction::function_trunc_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(E0BE0B"),
-                &BuiltInFunction::function_matrixCompMult_E0BE0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(00B"),
-                &BuiltInFunction::function_length_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("any(20F"),
-                &BuiltInFunction::function_any_20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PerVertex"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_PerVertex,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00X30B00B"),
-                &BuiltInFunction::function_textureProj_00X30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_ViewID_OVR"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_ViewID_OVR,
-                nullptr,
-                300,
-                Shader::NOT_COMPUTE,
-                &ShBuiltInResources::OVR_multiview,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(10B"),
-                &BuiltInFunction::function_floor_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sin(10B"),
-                &BuiltInFunction::function_sin_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00N00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSize_00N00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00J20D00D20D"),
-                &BuiltInFunction::function_texelFetchOffset_00J20D00D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tan(00B"),
-                &BuiltInFunction::function_tan_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(20B20B"),
-                &BuiltInFunction::function_mod_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01J20D"),
-                &BuiltInFunction::function_imageLoad_01J20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_WorkGroupSize"),
-                &BuiltInVariable::kVar_gl_WorkGroupSize,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asinh(30B"),
-                &BuiltInFunction::function_asinh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(10B30B"),
-                &BuiltInFunction::function_outerProduct_10B30B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCube(00K20B"),
-                &BuiltInFunction::function_textureCube_00K20B,
-                nullptr,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00c"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00c,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00b"),
-                &BuiltInFunction::function_textureSize_00b,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00b,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cos(00B"),
-                &BuiltInFunction::function_cos_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20B20B"),
-                &BuiltInFunction::function_min_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00f30B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00f30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20D20D"),
-                &BuiltInFunction::function_max_20D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00I30B"),
-                &BuiltInFunction::function_textureProj_00I30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10D10D"),
-                &BuiltInFunction::function_max_10D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00a20B10D00B"),
-                &BuiltInFunction::function_textureOffset_00a20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00X10B"),
-                &BuiltInFunction::function_textureGather_00X10B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("pow(30B30B"),
-                &BuiltInFunction::function_pow_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00a20B"),
-                &BuiltInFunction::function_textureGather_00a20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(10B10B10B"),
-                &BuiltInFunction::function_smoothstep_10B10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00O30B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00O30B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00d10B00B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00d10B00B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(30B30B00B"),
-                &BuiltInFunction::function_refract_30B30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(20E20E00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_20E20E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(20B"),
-                &BuiltInFunction::function_floor_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(20E20E"),
-                &BuiltInFunction::function_equal_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00B00B00B"),
-                &BuiltInFunction::function_mix_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01B"),
-                &BuiltInFunction::function_imageSize_01B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(20B20B"),
-                &BuiltInFunction::function_greaterThanEqual_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uaddCarry(00E00E00E"),
-                &BuiltInFunction::function_uaddCarry_00E00E00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sin(20B"),
-                &BuiltInFunction::function_sin_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00Q"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00Q,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(20B"),
-                &BuiltInFunction::function_round_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(90B90B"),
-                &BuiltInFunction::function_matrixCompMult_90B90B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00d30B00B"),
-                &BuiltInFunction::function_textureProjLod_00d30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00W"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00W,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00X20B00B"),
-                &BuiltInFunction::function_textureProjLod_00X20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedAtomicCounterBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedAtomicCounterBuffers,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(00B"),
-                &BuiltInFunction::function_isnan_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("umulExtended(30E30E30E30E"),
-                &BuiltInFunction::function_umulExtended_30E30E30E30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(30B30B30B"),
-                &BuiltInFunction::function_faceforward_30B30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00Y20B20B20B20D"),
-                &BuiltInFunction::function_textureGradOffset_00Y20B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30E00E00E"),
-                &BuiltInFunction::function_clamp_30E00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asin(00B"),
-                &BuiltInFunction::function_asin_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(00B"),
-                &BuiltInFunction::function_ceil_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3D(00J20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture3D_00J20B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(00B00B"),
-                &BuiltInFunction::function_distance_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00a20B"),
-                &BuiltInFunction::function_texture_00a20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00a20B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00a20B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00f30B10B10B"),
-                &BuiltInFunction::function_textureGrad_00f30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00I30B"),
-                &BuiltInFunction::function_texture2DProj_00I30B,
-                nullptr,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(20B20B"),
-                &BuiltInFunction::function_modf_20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00I10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00I10B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(30E30E"),
-                &BuiltInFunction::function_notEqual_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00I10B"),
-                &BuiltInFunction::function_textureGather_00I10B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(10E10E"),
-                &BuiltInFunction::function_lessThanEqual_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(20B"),
-                &BuiltInFunction::function_inversesqrt_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00J20B00B20D"),
-                &BuiltInFunction::function_textureLodOffset_00J20B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30D30D"),
-                &BuiltInFunction::function_min_30D30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00R10B10D00B"),
-                &BuiltInFunction::function_textureOffset_00R10B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00e30B20B20B"),
-                &BuiltInFunction::function_textureGrad_00e30B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicAdd(00E00E"),
-                &BuiltInFunction::function_atomicAdd_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryInputComponents"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryInputComponents,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(30E"),
-                &BuiltInFunction::function_findMSB_30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(30D"),
-                &BuiltInFunction::function_findMSB_30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00X10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00X10B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(30B"),
-                &BuiltInFunction::function_length_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(30E30E"),
-                &BuiltInFunction::function_greaterThanEqual_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidth(30B"),
-                &BuiltInFunction::function_fwidth_30B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_fwidthExt_30B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00K20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00K20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20B20B20F"),
-                &BuiltInFunction::function_mix_20B20B20F,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00S20D00D"),
-                &BuiltInFunction::function_texelFetch_00S20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00U20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00U20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20B20B20B"),
-                &BuiltInFunction::function_mix_20B20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToInt(10B"),
-                &BuiltInFunction::function_floatBitsToInt_10B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10B00B"),
-                &BuiltInFunction::function_max_10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00L20B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00L20B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00a20B00B"),
-                &BuiltInFunction::function_textureLod_00a20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("any(10F"),
-                &BuiltInFunction::function_any_10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00d30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00d30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00N30B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00N30B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxProgramTexelOffset"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxProgramTexelOffset,
-                300,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp2(30B"),
-                &BuiltInFunction::function_exp2_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00L20D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00L20D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(30D30D"),
-                &BuiltInFunction::function_equal_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3DProj(00J30B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture3DProj_00J30B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packSnorm2x16(10B"),
-                &BuiltInFunction::function_packSnorm2x16_10B,
-                nullptr,
-                300,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToUint(30B"),
-                &BuiltInFunction::function_floatBitsToUint_30B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(30D30D"),
-                &BuiltInFunction::function_lessThanEqual_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryImageUniforms"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryImageUniforms,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(00y10D"),
-                &BuiltInFunction::function_imageLoad_00y10D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asinh(00B"),
-                &BuiltInFunction::function_asinh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00R10B10D"),
-                &BuiltInFunction::function_textureOffset_00R10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(10E10E"),
-                &BuiltInFunction::function_greaterThanEqual_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00I30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00I30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00Z20B"),
-                &BuiltInFunction::function_textureGather_00Z20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00X10B10D"),
-                &BuiltInFunction::function_textureOffset_00X10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cosh(30B"),
-                &BuiltInFunction::function_cosh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00d20B10D00B"),
-                &BuiltInFunction::function_textureOffset_00d20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00R10B"),
-                &BuiltInFunction::function_texture_00R10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00S20B20D00B"),
-                &BuiltInFunction::function_textureOffset_00S20B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("usubBorrow(30E30E30E"),
-                &BuiltInFunction::function_usubBorrow_30E30E30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("radians(00B"),
-                &BuiltInFunction::function_radians_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00R20B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00R20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(30B30D"),
-                &BuiltInFunction::function_ldexp_30B30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30B00B"),
-                &BuiltInFunction::function_max_30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20D20D"),
-                &BuiltInFunction::function_min_20D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(10B10B"),
-                &BuiltInFunction::function_step_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxDualSourceDrawBuffersEXT"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxDualSourceDrawBuffersEXT,
-                0,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_blend_func_extended,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(30B30B"),
-                &BuiltInFunction::function_step_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(10E"),
-                &BuiltInFunction::function_bitfieldReverse_10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(10D"),
-                &BuiltInFunction::function_bitfieldReverse_10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3DProj(00J30B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture3DProj_00J30B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(B0BB0B"),
-                &BuiltInFunction::function_matrixCompMult_B0BB0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(E0B"),
-                &BuiltInFunction::function_transpose_E0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cross(20B20B"),
-                &BuiltInFunction::function_cross_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("all(10F"),
-                &BuiltInFunction::function_all_10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20B00B00B"),
-                &BuiltInFunction::function_clamp_20B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tanh(20B"),
-                &BuiltInFunction::function_tanh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdx(00B"),
-                &BuiltInFunction::function_dFdx_00B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdxExt_00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(F0BF0B"),
-                &BuiltInFunction::function_matrixCompMult_F0BF0B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(00D"),
-                &BuiltInFunction::function_abs_00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(00B"),
-                &BuiltInFunction::function_abs_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00R10B00B"),
-                &BuiltInFunction::function_textureLod_00R10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(20B20B"),
-                &BuiltInFunction::function_step_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentAtomicCounters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentAtomicCounters,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00U20B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00U20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00R20B00B"),
-                &BuiltInFunction::function_textureProj_00R20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(20B20B20B"),
-                &BuiltInFunction::function_faceforward_20B20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01E"),
-                &BuiltInFunction::function_imageSize_01E,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acos(20B"),
-                &BuiltInFunction::function_acos_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00X10D00D"),
-                &BuiltInFunction::function_texelFetch_00X10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sinh(00B"),
-                &BuiltInFunction::function_sinh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01A"),
-                &BuiltInFunction::function_imageSize_01A,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DLod(00I10B00B"),
-                &BuiltInFunction::function_texture2DLod_00I10B00B,
-                nullptr,
-                100,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00b10D00D"),
-                &BuiltInFunction::function_texelFetch_00b10D00D,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00b10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01F"),
-                &BuiltInFunction::function_imageSize_01F,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxAtomicCounterBufferSize"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxAtomicCounterBufferSize,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20B20B"),
-                &BuiltInFunction::function_max_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00f20B00B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00f20B00B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(30B30B"),
-                &BuiltInFunction::function_outerProduct_30B30B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(20E20E"),
-                &BuiltInFunction::function_lessThanEqual_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00X10B00B"),
-                &BuiltInFunction::function_textureLod_00X10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp(30B"),
-                &BuiltInFunction::function_exp_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrier("),
-                &BuiltInFunction::function_memoryBarrier_,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01D"),
-                &BuiltInFunction::function_imageSize_01D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00B30B"),
-                &BuiltInFunction::function_step_00B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(10D"),
-                &BuiltInFunction::function_bitCount_10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(30E30E"),
-                &BuiltInFunction::function_equal_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(00B"),
-                &BuiltInFunction::function_sign_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log(00B"),
-                &BuiltInFunction::function_log_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00Z20B00B"),
-                &BuiltInFunction::function_textureLod_00Z20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(00D"),
-                &BuiltInFunction::function_sign_00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00Y20B20D"),
-                &BuiltInFunction::function_textureOffset_00Y20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(60B"),
-                &BuiltInFunction::function_transpose_60B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(00D"),
-                &BuiltInFunction::function_findMSB_00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryTotalOutputComponents"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryTotalOutputComponents,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acosh(30B"),
-                &BuiltInFunction::function_acosh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(00E"),
-                &BuiltInFunction::function_findMSB_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(20E00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_20E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uintBitsToFloat(20E"),
-                &BuiltInFunction::function_uintBitsToFloat_20E,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackUnorm4x8(00E"),
-                &BuiltInFunction::function_unpackUnorm4x8_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00M20B"),
-                &BuiltInFunction::function_texture2DProj_00M20B,
-                nullptr,
-                100,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00X10D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00X10D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(10B10B"),
-                &BuiltInFunction::function_mod_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00d20B00B"),
-                &BuiltInFunction::function_texture_00d20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(10D10D"),
-                &BuiltInFunction::function_notEqual_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00M30B"),
-                &BuiltInFunction::function_texture2DProj_00M30B,
-                nullptr,
-                100,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00V"),
-                &BuiltInFunction::function_textureSize_00V,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00V,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packUnorm2x16(10B"),
-                &BuiltInFunction::function_packUnorm2x16_10B,
-                nullptr,
-                300,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(00B00B00B"),
-                &BuiltInFunction::function_faceforward_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("umulExtended(20E20E20E20E"),
-                &BuiltInFunction::function_umulExtended_20E20E20E20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00X10B10D00B"),
-                &BuiltInFunction::function_textureOffset_00X10B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cos(30B"),
-                &BuiltInFunction::function_cos_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(30D"),
-                &BuiltInFunction::function_findLSB_30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(30E"),
-                &BuiltInFunction::function_findLSB_30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(20E"),
-                &BuiltInFunction::function_bitCount_20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_NumWorkGroups"),
-                &BuiltInVariable::kVar_gl_NumWorkGroups,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(20D20D"),
-                &BuiltInFunction::function_equal_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00Y30B20D00B"),
-                &BuiltInFunction::function_textureProjOffset_00Y30B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00U20B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00U20B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(10B10B10B"),
-                &BuiltInFunction::function_faceforward_10B10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00L00D"),
-                &BuiltInFunction::function_textureSize_00L00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeUniformComponents"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeUniformComponents,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00R10B00D"),
-                &BuiltInFunction::function_textureGather_00R10B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrierBuffer("),
-                &BuiltInFunction::function_memoryBarrierBuffer_,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00Z00D"),
-                &BuiltInFunction::function_textureSize_00Z00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00U20B"),
-                &BuiltInFunction::function_textureGather_00U20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(30D00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_30D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10D00D"),
-                &BuiltInFunction::function_min_10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01H20D30B"),
-                &BuiltInFunction::function_imageStore_01H20D30B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00Q20D00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00Q20D00D,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20E00E"),
-                &BuiltInFunction::function_max_20E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00S30B"),
-                &BuiltInFunction::function_textureProj_00S30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(00B"),
-                &BuiltInFunction::function_roundEven_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DLodEXT(00I10B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DLodEXT_00I10B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdy(30B"),
-                &BuiltInFunction::function_dFdy_30B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdyExt_30B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atanh(20B"),
-                &BuiltInFunction::function_atanh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10E00E00E"),
-                &BuiltInFunction::function_clamp_10E00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20D00D00D"),
-                &BuiltInFunction::function_clamp_20D00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("all(20F"),
-                &BuiltInFunction::function_all_20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(10B"),
-                &BuiltInFunction::function_isinf_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01C20D"),
-                &BuiltInFunction::function_imageLoad_01C20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01J"),
-                &BuiltInFunction::function_imageSize_01J,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01H"),
-                &BuiltInFunction::function_imageSize_01H,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01I"),
-                &BuiltInFunction::function_imageSize_01I,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packHalf2x16(10B"),
-                &BuiltInFunction::function_packHalf2x16_10B,
-                nullptr,
-                300,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00I20B00B"),
-                &BuiltInFunction::function_texture2DProj_00I20B00B,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(00E"),
-                &BuiltInFunction::function_findLSB_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(00D"),
-                &BuiltInFunction::function_findLSB_00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00X30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00X30B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01C"),
-                &BuiltInFunction::function_imageSize_01C,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(30B30B"),
-                &BuiltInFunction::function_greaterThanEqual_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00U00D"),
-                &BuiltInFunction::function_textureSize_00U00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00R10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00R10B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01G"),
-                &BuiltInFunction::function_imageSize_01G,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(30F30F"),
-                &BuiltInFunction::function_equal_30F30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(00D00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_00D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjLodEXT(00I20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DProjLodEXT_00I20B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(30F30F"),
-                &BuiltInFunction::function_notEqual_30F30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FrontFacing"),
-                &BuiltInVariable::kVar_gl_FrontFacing,
-                nullptr,
-                0,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_SecondaryFragColorEXT"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_SecondaryFragColorEXT,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_blend_func_extended,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(10B"),
-                &BuiltInFunction::function_inversesqrt_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01C20D30D"),
-                &BuiltInFunction::function_imageStore_01C20D30D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acos(10B"),
-                &BuiltInFunction::function_acos_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(30D"),
-                &BuiltInFunction::function_abs_30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentUniformVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentUniformVectors,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(20B"),
-                &BuiltInFunction::function_fract_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(30B"),
-                &BuiltInFunction::function_abs_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(10B10B"),
-                &BuiltInFunction::function_lessThan_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00X10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00X10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(10E10E00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_10E10E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packSnorm4x8(30B"),
-                &BuiltInFunction::function_packSnorm4x8_30B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10B10B00B"),
-                &BuiltInFunction::function_mix_10B10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01E20D"),
-                &BuiltInFunction::function_imageLoad_01E20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30D30D30D"),
-                &BuiltInFunction::function_clamp_30D30D30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00U20B00D"),
-                &BuiltInFunction::function_textureGather_00U20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00f00D"),
-                &BuiltInFunction::function_textureSize_00f00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00N20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00N20B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragData"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_FragData,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01B20D"),
-                &BuiltInFunction::function_imageLoad_01B20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00d30B00B"),
-                &BuiltInFunction::function_textureProj_00d30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20E00E00E"),
-                &BuiltInFunction::function_clamp_20E00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00X10B"),
-                &BuiltInFunction::function_texture_00X10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00d30B"),
-                &BuiltInFunction::function_textureProj_00d30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30B30B30F"),
-                &BuiltInFunction::function_mix_30B30B30F,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("determinant(F0B"),
-                &BuiltInFunction::function_determinant_F0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(A0B"),
-                &BuiltInFunction::function_transpose_A0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("pow(20B20B"),
-                &BuiltInFunction::function_pow_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjGradEXT(00I20B10B10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DProjGradEXT_00I20B10B10B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LastFragColorARM"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_LastFragColorARM,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::ARM_shader_framebuffer_fetch,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00Z20B00D"),
-                &BuiltInFunction::function_textureGather_00Z20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00R10B"),
-                &BuiltInFunction::function_textureGather_00R10B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(20D20D"),
-                &BuiltInFunction::function_lessThanEqual_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00S20B00B"),
-                &BuiltInFunction::function_textureLod_00S20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00Y30B00B"),
-                &BuiltInFunction::function_textureProjLod_00Y30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cosh(10B"),
-                &BuiltInFunction::function_cosh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(30B"),
-                &BuiltInFunction::function_sqrt_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_VertexID"),
-                &BuiltInVariable::kVar_gl_VertexID,
-                nullptr,
-                300,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(10D"),
-                &BuiltInFunction::function_sign_10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00M30B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00M30B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp(00B"),
-                &BuiltInFunction::function_exp_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(00E00E"),
-                &BuiltInFunction::function_min_00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30D30D"),
-                &BuiltInFunction::function_max_30D30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("umulExtended(00E00E00E00E"),
-                &BuiltInFunction::function_umulExtended_00E00E00E00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexAttribs"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexAttribs,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_BaseInstance"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_BaseInstance,
-                nullptr,
-                300,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_base_vertex_base_instance,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(B0B"),
-                &BuiltInFunction::function_transpose_B0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidth(20B"),
-                &BuiltInFunction::function_fwidth_20B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_fwidthExt_20B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString(""),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00B00B30B"),
-                &BuiltInFunction::function_smoothstep_00B00B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToInt(20B"),
-                &BuiltInFunction::function_floatBitsToInt_20B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00M00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSize_00M00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log2(20B"),
-                &BuiltInFunction::function_log2_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(10B10D"),
-                &BuiltInFunction::function_ldexp_10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10B00B"),
-                &BuiltInFunction::function_min_10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30B30B00B"),
-                &BuiltInFunction::function_mix_30B30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("angle_BaseInstance"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_angle_BaseInstance,
-                nullptr,
-                0,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_base_vertex_base_instance,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("degrees(10B"),
-                &BuiltInFunction::function_degrees_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxTextureImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxTextureImageUnits,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_Position"),
-                &BuiltInVariable::kVar_gl_Position,
-                nullptr,
-                0,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_PositionGS,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00K20B"),
-                &BuiltInFunction::function_texture_00K20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCompSwap(00E00E00E"),
-                &BuiltInFunction::function_atomicCompSwap_00E00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00Y30B20D"),
-                &BuiltInFunction::function_textureProjOffset_00Y30B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sinh(10B"),
-                &BuiltInFunction::function_sinh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(30B"),
-                &BuiltInFunction::function_atan_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00L20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00L20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(10B"),
-                &BuiltInFunction::function_ceil_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00S00D"),
-                &BuiltInFunction::function_textureSize_00S00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01D20D30E"),
-                &BuiltInFunction::function_imageStore_01D20D30E,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(10B10B"),
-                &BuiltInFunction::function_greaterThanEqual_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterDecrement(00G"),
-                &BuiltInFunction::function_atomicCounterDecrement_00G,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCube(00K20B00B"),
-                &BuiltInFunction::function_textureCube_00K20B00B,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(20B20B"),
-                &BuiltInFunction::function_dot_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(90B"),
-                &BuiltInFunction::function_transpose_90B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("not(30F"),
-                &BuiltInFunction::function_notFunc_30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00I20B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00I20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(10F10F"),
-                &BuiltInFunction::function_notEqual_10F10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00R20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00R20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00f30B"),
-                &BuiltInFunction::function_texture_00f30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00B00B00B"),
-                &BuiltInFunction::function_smoothstep_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00d30B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00d30B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00R10D00D"),
-                &BuiltInFunction::function_texelFetch_00R10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cosh(20B"),
-                &BuiltInFunction::function_cosh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00I30B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00I30B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(30B"),
-                &BuiltInFunction::function_normalize_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(30B30B30B"),
-                &BuiltInFunction::function_smoothstep_30B30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(10D10D00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_10D10D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20B20B20B"),
-                &BuiltInFunction::function_clamp_20B20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00L20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00L20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00R10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00R10B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00I20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00I20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00e20B"),
-                &BuiltInFunction::function_textureGather_00e20B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2D(00M10B"),
-                &BuiltInFunction::function_texture2D_00M10B,
-                nullptr,
-                100,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(00D00D"),
-                &BuiltInFunction::function_min_00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(10B10B"),
-                &BuiltInFunction::function_outerProduct_10B10B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(10D10D"),
-                &BuiltInFunction::function_lessThanEqual_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(20B"),
-                &BuiltInFunction::function_trunc_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVaryingVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVaryingVectors,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00I30B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00I30B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00d00D"),
-                &BuiltInFunction::function_textureSize_00d00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sin(00B"),
-                &BuiltInFunction::function_sin_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexUniformVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexUniformVectors,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCubeLodEXT(00K20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureCubeLodEXT_00K20B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00T20B00D"),
-                &BuiltInFunction::function_textureGather_00T20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00N20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00N20B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uaddCarry(10E10E10E"),
-                &BuiltInFunction::function_uaddCarry_10E10E10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tan(10B"),
-                &BuiltInFunction::function_tan_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00L20B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00L20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterIncrement(00G"),
-                &BuiltInFunction::function_atomicCounterIncrement_00G,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(20B20D"),
-                &BuiltInFunction::function_ldexp_20B20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(30D30D"),
-                &BuiltInFunction::function_greaterThanEqual_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(20B20B"),
-                &BuiltInFunction::function_notEqual_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01D20D"),
-                &BuiltInFunction::function_imageLoad_01D20D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00X30B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00X30B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(20B"),
-                &BuiltInFunction::function_isinf_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cos(10B"),
-                &BuiltInFunction::function_cos_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30B30B30B"),
-                &BuiltInFunction::function_mix_30B30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00e30B"),
-                &BuiltInFunction::function_texture_00e30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00T00D"),
-                &BuiltInFunction::function_textureSize_00T00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00X10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00X10B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(10E10E"),
-                &BuiltInFunction::function_equal_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10E10E"),
-                &BuiltInFunction::function_min_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00Y30B20B20B20D"),
-                &BuiltInFunction::function_textureProjGradOffset_00Y30B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00T20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00T20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrierImage("),
-                &BuiltInFunction::function_memoryBarrierImage_,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00J30B20D"),
-                &BuiltInFunction::function_textureProjOffset_00J30B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("EmitVertex("),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_EmitVertex_,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00d30B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00d30B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(10B"),
-                &BuiltInFunction::function_round_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00d30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00d30B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(10E10E"),
-                &BuiltInFunction::function_notEqual_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00R30B"),
-                &BuiltInFunction::function_textureProj_00R30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(50B50B"),
-                &BuiltInFunction::function_matrixCompMult_50B50B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(20F20F"),
-                &BuiltInFunction::function_equal_20F20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentInputVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentInputVectors,
-                300,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(30B30B"),
-                &BuiltInFunction::function_equal_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00U20B00B"),
-                &BuiltInFunction::function_textureLod_00U20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("usubBorrow(10E10E10E"),
-                &BuiltInFunction::function_usubBorrow_10E10E10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(10B10B"),
-                &BuiltInFunction::function_equal_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00I20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00I20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjLod(00I30B00B"),
-                &BuiltInFunction::function_texture2DProjLod_00I30B00B,
-                nullptr,
-                100,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(10B"),
-                &BuiltInFunction::function_isnan_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uaddCarry(20E20E20E"),
-                &BuiltInFunction::function_uaddCarry_20E20E20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10B10B"),
-                &BuiltInFunction::function_max_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicMax(00E00E"),
-                &BuiltInFunction::function_atomicMax_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PointSize"),
-                &BuiltInVariable::kVar_gl_PointSize,
-                nullptr,
-                0,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicMin(00D00D"),
-                &BuiltInFunction::function_atomicMin_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00X00D"),
-                &BuiltInFunction::function_textureSize_00X00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(10B10B"),
-                &BuiltInFunction::function_greaterThan_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asin(10B"),
-                &BuiltInFunction::function_asin_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00d10B00B"),
-                &BuiltInFunction::function_textureGather_00d10B00B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(10B"),
-                &BuiltInFunction::function_trunc_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeAtomicCounters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeAtomicCounters,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00X30B"),
-                &BuiltInFunction::function_textureProj_00X30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexAtomicCounters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexAtomicCounters,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(20B"),
-                &BuiltInFunction::function_length_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(30E30E00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_30E30E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00S20B20D"),
-                &BuiltInFunction::function_textureOffset_00S20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00X20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00X20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30D00D00D"),
-                &BuiltInFunction::function_clamp_30D00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10B00B00B"),
-                &BuiltInFunction::function_clamp_10B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00R20B"),
-                &BuiltInFunction::function_textureProj_00R20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01F20D30D"),
-                &BuiltInFunction::function_imageStore_01F20D30D,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00I20B00B"),
-                &BuiltInFunction::function_textureProj_00I20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(10E10E"),
-                &BuiltInFunction::function_greaterThan_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00R30B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00R30B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdy(00B"),
-                &BuiltInFunction::function_dFdy_00B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdyExt_00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30D00D"),
-                &BuiltInFunction::function_min_30D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToInt(00B"),
-                &BuiltInFunction::function_floatBitsToInt_00B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(10B"),
-                &BuiltInFunction::function_sign_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(00E00E"),
-                &BuiltInFunction::function_max_00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00a20B00B"),
-                &BuiltInFunction::function_texture_00a20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00M10B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00M10B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(20B20B20B"),
-                &BuiltInFunction::function_smoothstep_20B20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCubeLod(00K20B00B"),
-                &BuiltInFunction::function_textureCubeLod_00K20B00B,
-                nullptr,
-                100,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00J20B20D"),
-                &BuiltInFunction::function_textureOffset_00J20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00J20D00D"),
-                &BuiltInFunction::function_texelFetch_00J20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00M20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00M20B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToUint(00B"),
-                &BuiltInFunction::function_floatBitsToUint_00B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00R30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00R30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00K20B00B"),
-                &BuiltInFunction::function_textureLod_00K20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00X30B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00X30B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cos(20B"),
-                &BuiltInFunction::function_cos_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp2(00B"),
-                &BuiltInFunction::function_exp2_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("radians(30B"),
-                &BuiltInFunction::function_radians_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DRectProj(00O20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DRectProj_00O20B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tan(20B"),
-                &BuiltInFunction::function_tan_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00T20B"),
-                &BuiltInFunction::function_textureGather_00T20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00a20B00D"),
-                &BuiltInFunction::function_textureGather_00a20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00J30B20B20B20D"),
-                &BuiltInFunction::function_textureProjGradOffset_00J30B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asinh(10B"),
-                &BuiltInFunction::function_asinh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00X30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00X30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(00B"),
-                &BuiltInFunction::function_floor_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_DrawID"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_DrawID,
-                nullptr,
-                0,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_multi_draw,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicOr(00D00D"),
-                &BuiltInFunction::function_atomicOr_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3DLod(00J20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture3DLod_00J20B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr)};
+// Rules used to initialize the mangled name array.
+constexpr SymbolRule kRules[] = {
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00R30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00R30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(EXT_YUV_target)>(&texture_00N10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_10D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_10D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::FRAGMENT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_PrimitiveID),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_PrimitiveIDGS),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00R10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00R10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&modf_00B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&modf_00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxAtomicCounterBindings),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxAtomicCounterBindings),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_20D20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeImageUniforms),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeImageUniforms),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00L20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00L20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, EXT_INDEX(ANGLE_base_vertex_base_instance)>(
+        &BuiltInVariable::kangle_BaseVertex),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&determinant_A0B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00I30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00I30B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&tanh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&tanh_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::FRAGMENT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_Layer),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_LayerGS),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00d20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00d20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdx_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdx_30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdxExt_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_00E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_00E00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_50B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_50B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&ldexp_00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_00B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00K20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00K20B00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_30B30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_20D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_20E20E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&asin_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&asin_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_20B30B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_20B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_00D00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_00D00D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00Y30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00Y30B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&roundEven_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&roundEven_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&acosh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&acosh_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&atanh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&atanh_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_20B20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_20B20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_10B10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00I10B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00I10B10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00L20B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00L20B10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_00B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_00B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThan_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThan_30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&uintBitsToFloat_30E),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&uintBitsToFloat_30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imulExtended_30D30D30D30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&imulExtended_30D30D30D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00K00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00K00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryOutputVertices),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_70B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_70B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00S30B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00S30B20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00X30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00X30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00Y00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00Y00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&TableBase::m_gl_MinProgramTexelOffset),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MinProgramTexelOffset),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00d20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00d20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00J30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00J30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_30B30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_30B30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &EndPrimitive_),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00Y20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00Y20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00a20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00a20B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00Y20D00D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00Y20D00D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00a20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00a20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01F20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&uintBitsToFloat_00E),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&uintBitsToFloat_00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&texelFetch_00N10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicAdd_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicAdd_00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryOutputComponents),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryTextureImageUnits),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToUint_20B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToUint_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_20D20D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_20D20D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexTextureImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexTextureImageUnits),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00Z20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00Z20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_10D10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&degrees_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&degrees_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&tanh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&tanh_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00J30B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00J30B20D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&all_30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&all_30F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&abs_20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&abs_20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&abs_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&abs_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&inversesqrt_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&inversesqrt_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_D0BD0B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00S30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00S30B20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_30D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_30D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&groupMemoryBarrier_),
+    Rule::Get<Spec::GLSL, 430, Shader::COMPUTE, 0>(&groupMemoryBarrier_),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&mix_00B00B00F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&mix_00B00B00F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00R20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00R20B10B10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01A10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&intBitsToFloat_30D),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&intBitsToFloat_30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00I20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00I20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00I10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00I10D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01I20D30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAtomicCounterBuffers),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00S20B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00S20B00B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00R10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00R10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&acos_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&acos_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&fract_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&fract_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_E0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_E0B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&intBitsToFloat_00D),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&intBitsToFloat_00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00J20B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00J20B20B20B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&memoryBarrierAtomicCounter_),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&memoryBarrierAtomicCounter_),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DGradEXT_00I10B10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_00E00E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_00E00E00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicXor_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicXor_00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00I10B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00I10B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00Y20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00Y20D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DProjGradEXT_00I30B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00d20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00d20B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00R30B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00R30B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00U20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00U20B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&modf_10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&modf_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&determinant_50B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicAnd_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicAnd_00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragColor),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragColor),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00I20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00I20B10D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_00B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_00B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00I20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00I20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&unpackUnorm2x16_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&unpackUnorm2x16_00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&rgb_2_yuv_20B00H),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sqrt_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sqrt_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sign_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sign_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01B20D30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sign_20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sign_20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&atanh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&atanh_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00X10B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00X10B10B10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_DepthRange),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_DepthRange),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imulExtended_10D10D10D10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&imulExtended_10D10D10D10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &texture_00M10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexOutputVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexOutputVectors),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00T20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00T20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log2_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log2_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxImageUnits),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&pow_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&pow_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_20E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00Y20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00Y20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&packUnorm4x8_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&packUnorm4x8_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00X10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00X10B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&frexp_00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_00B00D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2D_00I10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture2D_00I10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notFunc_10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notFunc_10F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&texelFetch_00P10D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00P10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &texelFetchExt_00P10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThan_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThan_10E10E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&ceil_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&ceil_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00R10B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00R10B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_10D10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_10D10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &texelFetch_00M10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(&texture_00O10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_F0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_F0B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00Y20B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00Y20B20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00S20B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00S20B20B20B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicXor_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicXor_00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00R20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00R20B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragCoord),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragCoord),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_30E30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_30E30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(EXT_YUV_target)>(&textureProj_00N30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00R00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00R00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentImageUniforms),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentImageUniforms),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&normalize_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&normalize_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00I10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00I10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicExchange_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicExchange_00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00I30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00I30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&acosh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&acosh_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedShaderOutputResources),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedShaderOutputResources),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicOr_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicOr_00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureProj_00M30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureProj_00M20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00I10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00I10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&reflect_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&reflect_00B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_20D20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&reflect_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&reflect_10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToUint_10B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToUint_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00J20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00J20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sqrt_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sqrt_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00S30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00S30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_20E20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_20E20E20E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicAnd_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicAnd_00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00I00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00I00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeAtomicCounterBuffers),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_PrimitiveIDIn),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00R10D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00R10D00D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isinf_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isinf_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00a20B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00a20B10D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00I10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00I10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00L20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00L20B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00X10B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00X10B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00T20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00T20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00L20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00L20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThanEqual_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThanEqual_30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00J20B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00J20B20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_10E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_10E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCounter_00G),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&atomicCounter_00G),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00S30B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00S30B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01I20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&round_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&round_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_00B00B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_00B00B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01H20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00K20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00K20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_30D30D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_30D30D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01G20D30E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&fwidth_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&fwidth_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(
+        &fwidthExt_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00R20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00R20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_30D30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&refract_10B10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&refract_10B10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00I20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00I20B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_30D30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00U20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00U20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00a00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00a00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_10E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_10E00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxDrawBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxDrawBuffers),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00U20B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00U20B10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeWorkGroupCount),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeWorkGroupCount),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00J30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00J30B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(
+        &texture2DRect_00O10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imulExtended_20D20D20D20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&imulExtended_20D20D20D20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&any_30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&any_30F),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&distance_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&distance_30B30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_20D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00a20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00a20B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&trunc_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&trunc_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sinh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sinh_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&length_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&length_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_10E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&dot_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&dot_00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&asinh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&asinh_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&dot_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&dot_30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&tan_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&tan_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00T20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00T20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&usubBorrow_20E20E20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&usubBorrow_20E20E20E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_00z10D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00R30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00R30B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp2_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp2_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(&textureProj_00O20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00X20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00X20B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_10B20B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_10B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryAtomicCounterBuffers),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00X30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00X30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00I10B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00I10B10D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_30B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_30B00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&inverse_50B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&inverse_50B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&dot_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&dot_10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&unpackHalf2x16_00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&unpackHalf2x16_00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&matrixCompMult_A0BA0B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&matrixCompMult_A0BA0B),
+    Rule::Get<Spec::ESSL, 100, Shader::VERTEX, 0>(&texture2DProjLod_00I20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture2DProjLod_00I20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &texelFetchExt_00W20D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(
+        &texture2DRectProj_00O30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&radians_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&radians_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00S20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00S20B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01J20D30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&round_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&round_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeTextureImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeTextureImageUnits),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_00D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_00D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sin_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sin_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&floor_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&floor_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00S30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00S30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00Y20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00Y20B20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedAtomicCounters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedAtomicCounters),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00L20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00L20B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00S30B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00S30B20B20B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01A10D30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00J20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00J20B),
+    Rule::Get<Spec::ESSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_PointCoord),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_PointCoord),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdx_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdx_20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdxExt_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00X20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00X20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_10E10E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_10E10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_10E10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00S20D00D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00S20D00D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&texture_00N10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00L20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00L20B),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&barrier_),
+    Rule::Get<Spec::GLSL, 400, Shader::COMPUTE, 0>(&barrier_),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryUniformComponents),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThanEqual_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThanEqual_20E20E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00a20D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00a20D00D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00X20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00X20B10B10B10D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2DProj_00I20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture2DProj_00I20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(
+        &texture3DProjLod_00J30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notFunc_20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notFunc_20F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00I10D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00I10D00D10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00I10B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00I10B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&texelFetch_00V10D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00V10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &texelFetchExt_00V10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_20B20B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&unpackSnorm4x8_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&unpackSnorm4x8_00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00R20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00R20B00B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&asin_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&asin_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00f20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&modf_30B30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&modf_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isnan_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isnan_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&roundEven_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&roundEven_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&fwidth_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&fwidth_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(
+        &fwidthExt_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00J30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00J30B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdy_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdy_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdyExt_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_30B10B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_30B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToInt_30B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToInt_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00J30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00J30B),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_InvocationID),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_30E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_30E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp2_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp2_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00d20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00d20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&radians_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&radians_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00U20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00U20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeWorkGroupSize),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeWorkGroupSize),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_framebuffer_fetch)>(
+        &TableBase::m_gl_LastFragData),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(NV_shader_framebuffer_fetch)>(
+        &TableBase::m_gl_LastFragDataNV),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&ceil_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&ceil_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicMin_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicMin_00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedTextureImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedTextureImageUnits),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_10E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00S20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00S20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00e20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00e20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_DepthRangeParameters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_DepthRangeParameters),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&distance_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&distance_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&reflect_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&reflect_20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&uintBitsToFloat_10E),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&uintBitsToFloat_10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00Z20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00Z20B20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_10F10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_10F10F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&cosh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&cosh_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_70B70B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_30E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_30E00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00I10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00I10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00e30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00e30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00Y20B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00Y20B00B20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log2_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log2_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(NV_shader_framebuffer_fetch)>(
+        &BuiltInVariable::kgl_LastFragColor),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&abs_10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&abs_10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&abs_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&abs_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&acos_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&acos_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&tanh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&tanh_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&degrees_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&degrees_30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_frag_depth)>(
+        &TableBase::m_gl_FragDepthEXT),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdx_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdx_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdxExt_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00I30B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00I30B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&inversesqrt_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&inversesqrt_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_LocalInvocationID),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_LocalInvocationID),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_00B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00d10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&frexp_20B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&intBitsToFloat_20D),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&intBitsToFloat_20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&fract_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&fract_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragDepth),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragDepth),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_30E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_30E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00X20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00X20B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&acosh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&acosh_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00S30B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00S30B00B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sinh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sinh_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00L20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00L20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&reflect_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&reflect_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_30B20B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_30B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00U20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00U20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00S20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00S20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_20B10B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_20B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&umulExtended_10E10E10E10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&umulExtended_10E10E10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00Z20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00Z20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00a20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00a20B10B10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_20F20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_20F20F),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_10D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_10D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sign_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sign_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sign_30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sign_30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&pow_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&pow_00B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00Y20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00Y20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&roundEven_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&roundEven_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DProjLodEXT_00I30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&atanh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&atanh_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdy_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdy_20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdyExt_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00Y30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00Y30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00L20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00L20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_00y),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isinf_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isinf_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_00z),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&distance_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&distance_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00U20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00U20B10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&uaddCarry_30E30E30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&uaddCarry_30E30E30E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00K20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00K20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedImageUniforms),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedImageUniforms),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&yuv_2_rgb_20B00H),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00f20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00f20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThan_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThan_20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00a20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00a20B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00U20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00U20B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&intBitsToFloat_10D),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&intBitsToFloat_10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00J20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00J20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&refract_20B20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&refract_20B20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00I30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00I30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&refract_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&refract_00B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&mix_10B10B10F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&mix_10B10B10F),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_10B10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00Y30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00Y30B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(&texture3D_00J20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_D0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_D0B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log2_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log2_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00J20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00J20B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00d30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00d30B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&fract_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&fract_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_LocalInvocationIndex),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_LocalInvocationIndex),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00J00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00J00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00I10B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00I10B10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00X10B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00X10B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00U20D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00U20D00D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00Y30B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00Y30B00B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00e00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00e00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&notEqual_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&notEqual_20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00d20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00d20B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&inverse_A0B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&inverse_A0B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01E20D30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00X20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00X20B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isnan_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isnan_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imulExtended_00D00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&imulExtended_00D00D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_in),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&usubBorrow_00E00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&usubBorrow_00E00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00J30B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00J30B00B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&frexp_30B30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_30B30D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_blend_func_extended)>(
+        &TableBase::m_gl_SecondaryFragDataEXT),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_30E30E),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&texture2DProj_00I30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture2DProj_00I30B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(EXT_shader_texture_lod)>(
+        &textureCubeGradEXT_00K20B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00I10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00I10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::VERTEX, 0>(&BuiltInVariable::kgl_InstanceID),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_InstanceID),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &texelFetchExt_00c20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexImageUniforms),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexImageUniforms),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sqrt_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sqrt_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&normalize_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&normalize_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentAtomicCounterBuffers),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_WorkGroupID),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_WorkGroupID),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&degrees_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&degrees_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&inverse_F0B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&inverse_F0B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_20E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_20E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00R30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00R30B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureSize_00P),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00P),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &textureSizeExt_00P),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00d20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00d20B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00R30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00R30B00B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicExchange_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicExchange_00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00R10B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00R10B10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_00y10D30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryAtomicCounters),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&texture2D_00I10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture2D_00I10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00X20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00X20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_20D20D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_20D20D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThan_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThan_30E30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&frexp_10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_10E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_10E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_00B00B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_00B00B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_GlobalInvocationID),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_GlobalInvocationID),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_60B60B),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&memoryBarrierShared_),
+    Rule::Get<Spec::GLSL, 430, Shader::COMPUTE, 0>(&memoryBarrierShared_),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&normalize_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&normalize_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&unpackSnorm2x16_00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&unpackSnorm2x16_00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_00z10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_30D30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_20D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_20D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00L20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00L20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01G20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_00E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_00E00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCompSwap_00D00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicCompSwap_00D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&trunc_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&trunc_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_E0BE0B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&length_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&length_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&any_20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&any_20F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&memoryBarrier_),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&memoryBarrier_),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_PerVertex),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00X30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00X30B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicMax_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicMax_00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::NOT_COMPUTE, EXT_INDEX(OVR_multiview)>(
+        &BuiltInVariable::kgl_ViewID_OVR),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&floor_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&floor_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sin_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sin_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&textureSize_00N00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00J20D00D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00J20D00D20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&tan_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&tan_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01J20D),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_WorkGroupSize),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_WorkGroupSize),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&asinh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&asinh_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_10B30B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_10B30B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&textureCube_00K20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&textureCube_00K20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &textureSizeExt_00c),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureSize_00b),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00b),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &textureSizeExt_00b),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cos_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cos_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00f30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00f30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_20D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_20D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00I30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00I30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00a20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00a20B10D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00X10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00X10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&pow_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&pow_30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00a20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00a20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_10B10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(&textureProj_00O30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00d10B00B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00d10B00B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&refract_30B30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&refract_30B30B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_20E20E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_20E20E00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&floor_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&floor_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&equal_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&equal_20E20E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_00B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&uaddCarry_00E00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&uaddCarry_00E00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sin_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sin_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &textureSizeExt_00Q),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&round_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&round_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_90B90B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00d30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00d30B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &textureSizeExt_00W),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00X20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00X20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedAtomicCounterBuffers),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isnan_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isnan_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&umulExtended_30E30E30E30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&umulExtended_30E30E30E30E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&faceforward_30B30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&faceforward_30B30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00Y20B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00Y20B20B20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_30E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_30E00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&asin_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&asin_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&ceil_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&ceil_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(&texture3D_00J20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&distance_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&distance_00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00a20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00a20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00a20B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00a20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00f30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00f30B10B10B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2DProj_00I30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture2DProj_00I30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&modf_20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&modf_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00I10B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00I10B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&notEqual_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&notEqual_30E30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00I10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00I10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThanEqual_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThanEqual_10E10E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&inversesqrt_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&inversesqrt_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00J20B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00J20B00B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_30D30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_30D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00R10B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00R10B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00e30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00e30B20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicAdd_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicAdd_00E00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryInputComponents),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00X10B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00X10B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&length_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&length_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThanEqual_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThanEqual_30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&fwidth_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&fwidth_30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(
+        &fwidthExt_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00K20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00K20B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&mix_20B20B20F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&mix_20B20B20F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00S20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00S20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00U20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00U20B10B10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_20B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToInt_10B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToInt_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_10B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00L20B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00L20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00a20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00a20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&any_10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&any_10F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00d30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00d30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&textureProj_00N30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&TableBase::m_gl_MaxProgramTexelOffset),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxProgramTexelOffset),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp2_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp2_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00L20D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00L20D00D10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_30D30D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(
+        &texture3DProj_00J30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&packSnorm2x16_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&packSnorm2x16_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToUint_30B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToUint_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_30D30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryImageUniforms),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_00y10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&asinh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&asinh_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00R10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00R10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThanEqual_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThanEqual_10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00I30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00I30B10B10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00Z20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00Z20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00X10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00X10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&cosh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&cosh_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00d20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00d20B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00R10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00R10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00S20B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00S20B20D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&usubBorrow_30E30E30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&usubBorrow_30E30E30E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&radians_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&radians_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00R20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00R20B10D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&ldexp_30B30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_30B30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_20D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_20D20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, EXT_INDEX(EXT_blend_func_extended)>(
+        &TableBase::m_gl_MaxDualSourceDrawBuffersEXT),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_10E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_10D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(&texture3DProj_00J30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_B0BB0B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThan_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThan_20E20E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cross_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cross_20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&all_10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&all_10F),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_20B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_20B00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&tanh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&tanh_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdx_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdx_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdxExt_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&matrixCompMult_F0BF0B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&matrixCompMult_F0BF0B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&abs_00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&abs_00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&abs_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&abs_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00R10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00R10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentAtomicCounters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentAtomicCounters),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00U20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00U20B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00R20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00R20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&faceforward_20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&faceforward_20B20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&acos_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&acos_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00X10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00X10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sinh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sinh_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01A),
+    Rule::Get<Spec::ESSL, 100, Shader::VERTEX, 0>(&texture2DLod_00I10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture2DLod_00I10B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&texelFetch_00b10D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00b10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &texelFetchExt_00b10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxAtomicCounterBufferSize),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxAtomicCounterBufferSize),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00f20B00B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00f20B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_30B30B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThanEqual_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThanEqual_20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00X10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00X10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::VERTEX, EXT_INDEX(ANGLE_base_vertex_base_instance)>(
+        &BuiltInVariable::kgl_BaseVertex),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_00B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_00B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&equal_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&equal_30E30E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sign_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sign_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00Z20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00Z20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sign_00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sign_00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00Y20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00Y20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_60B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_60B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryTotalOutputComponents),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&acosh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&acosh_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_20E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_20E00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&uintBitsToFloat_20E),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&uintBitsToFloat_20E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&unpackUnorm4x8_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&unpackUnorm4x8_00E),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2DProj_00M20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00X10D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00X10D00D10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00d20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00d20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_10D10D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2DProj_00M30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureSize_00V),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00V),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &textureSizeExt_00V),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&packUnorm2x16_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&packUnorm2x16_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&faceforward_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&faceforward_00B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&umulExtended_20E20E20E20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&umulExtended_20E20E20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00X10B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00X10B10D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cos_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cos_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_20E),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_NumWorkGroups),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_NumWorkGroups),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_20D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00Y30B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00Y30B20D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00U20B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00U20B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&faceforward_10B10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&faceforward_10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00L00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00L00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeUniformComponents),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeUniformComponents),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00R10B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00R10B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&memoryBarrierBuffer_),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&memoryBarrierBuffer_),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00Z00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00Z00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00U20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00U20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_30D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_30D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01H20D30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &texelFetchExt_00Q20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_20E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_20E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00S30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00S30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&roundEven_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&roundEven_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DLodEXT_00I10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdy_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdy_30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdyExt_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&atanh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&atanh_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_10E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_10E00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_20D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_20D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&all_20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&all_20F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isinf_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isinf_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01C20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01J),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01H),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01I),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&packHalf2x16_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&packHalf2x16_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&texture2DProj_00I20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture2DProj_00I20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00X30B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00X30B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00U00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00U00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00R10B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00R10B10B10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01G),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_30F30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_30F30F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_00D00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DProjLodEXT_00I20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_30F30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_30F30F),
+    Rule::Get<Spec::ESSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FrontFacing),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FrontFacing),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_blend_func_extended)>(
+        &BuiltInVariable::kgl_SecondaryFragColorEXT),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&inversesqrt_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&inversesqrt_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01C20D30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&acos_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&acos_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&abs_30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&abs_30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentUniformVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentUniformVectors),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&fract_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&fract_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&abs_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&abs_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00X10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00X10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_10E10E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_10E10E00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&packSnorm4x8_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&packSnorm4x8_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_10B10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_10B10B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01E20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_30D30D30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_30D30D30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00U20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00U20B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00f00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00f00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(EXT_YUV_target)>(&textureProj_00N20B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&TableBase::m_gl_FragData),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&TableBase::m_gl_FragData),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00d30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00d30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_20E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_20E00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00X10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00X10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00d30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00d30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&mix_30B30B30F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&mix_30B30B30F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&determinant_F0B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_A0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_A0B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&pow_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&pow_20B20B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DProjGradEXT_00I20B10B10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(ARM_shader_framebuffer_fetch)>(
+        &BuiltInVariable::kgl_LastFragColorARM),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00Z20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00Z20B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00R10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00R10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_20D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00S20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00S20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00Y30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00Y30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&cosh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&cosh_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sqrt_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sqrt_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::VERTEX, 0>(&BuiltInVariable::kgl_VertexID),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_VertexID),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sign_10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sign_10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureProj_00M30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_30D30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_30D30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&umulExtended_00E00E00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&umulExtended_00E00E00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAttribs),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAttribs),
+    Rule::Get<Spec::ESSL, 300, Shader::VERTEX, EXT_INDEX(ANGLE_base_vertex_base_instance)>(
+        &BuiltInVariable::kgl_BaseInstance),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_B0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_B0B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&fwidth_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&fwidth_20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(
+        &fwidthExt_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_00B00B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_00B00B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToInt_20B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToInt_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureSize_00M00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log2_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log2_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&ldexp_10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_30B30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_30B30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, EXT_INDEX(ANGLE_base_vertex_base_instance)>(
+        &BuiltInVariable::kangle_BaseInstance),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&degrees_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&degrees_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxTextureImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxTextureImageUnits),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_Position),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_Position),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_PositionGS),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00K20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00K20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCompSwap_00E00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicCompSwap_00E00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00Y30B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00Y30B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sinh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sinh_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00L20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00L20B10B10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&ceil_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&ceil_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00S00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00S00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01D20D30E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCounterDecrement_00G),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&atomicCounterDecrement_00G),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&textureCube_00K20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&textureCube_00K20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&dot_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&dot_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_90B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_90B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notFunc_30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notFunc_30F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00I20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00I20B00B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_10F10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_10F10F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00R20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00R20B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00f30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00f30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_00B00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00d30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00d30B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00R10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00R10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&cosh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&cosh_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00I30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00I30B00B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&normalize_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&normalize_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_30B30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_30B30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_10D10D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_10D10D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_20B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00L20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00L20B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00R10B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00R10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00I20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00I20B10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00e20B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2D_00M10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_10B10B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&trunc_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&trunc_20B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&TableBase::m_gl_MaxVaryingVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVaryingVectors),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00I30B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00I30B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00d00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00d00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sin_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sin_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexUniformVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexUniformVectors),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_texture_lod)>(
+        &textureCubeLodEXT_00K20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00T20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00T20B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&textureProj_00N20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&uaddCarry_10E10E10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&uaddCarry_10E10E10E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&tan_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&tan_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00L20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00L20B00B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCounterIncrement_00G),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&atomicCounterIncrement_00G),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&ldexp_20B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_20B20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_30D30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00X30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00X30B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isinf_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isinf_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cos_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cos_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_30B30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_30B30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00e30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00e30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00T00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00T00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00X10B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00X10B10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&equal_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&equal_10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00Y30B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00Y30B20B20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00T20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00T20B20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&memoryBarrierImage_),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&memoryBarrierImage_),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00J30B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00J30B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(&EmitVertex_),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00d30B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00d30B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&round_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&round_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00d30B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00d30B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&notEqual_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&notEqual_10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00R30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00R30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&matrixCompMult_50B50B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&matrixCompMult_50B50B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_20F20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_20F20F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentInputVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentInputVectors),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00U20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00U20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&usubBorrow_10E10E10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&usubBorrow_10E10E10E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00I20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00I20B10B10B10D),
+    Rule::Get<Spec::ESSL, 100, Shader::VERTEX, 0>(&texture2DProjLod_00I30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture2DProjLod_00I30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isnan_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isnan_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&uaddCarry_20E20E20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&uaddCarry_20E20E20E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicMax_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicMax_00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_PointSize),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_PointSize),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicMin_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicMin_00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00X00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00X00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&asin_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&asin_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00d10B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00d10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&trunc_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&trunc_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeAtomicCounters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeAtomicCounters),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00X30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00X30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAtomicCounters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAtomicCounters),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&length_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&length_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_30E30E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_30E30E00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00S20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00S20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00X20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00X20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_30D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_30D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_10B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_10B00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00R20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00R20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01F20D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00I20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00I20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThan_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThan_10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00R30B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00R30B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdy_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdy_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdyExt_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_30D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_30D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToInt_00B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToInt_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sign_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sign_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00a20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00a20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &texture_00M10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_20B20B20B),
+    Rule::Get<Spec::ESSL, 100, Shader::VERTEX, 0>(&textureCubeLod_00K20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&textureCubeLod_00K20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00J20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00J20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00J20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00J20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureProj_00M20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToUint_00B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToUint_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00R30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00R30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00K20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00K20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00X30B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00X30B10D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cos_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cos_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp2_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp2_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&radians_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&radians_30B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(
+        &texture2DRectProj_00O20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&tan_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&tan_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00T20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00T20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00a20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00a20B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00J30B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00J30B20B20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&asinh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&asinh_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00X30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00X30B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&floor_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&floor_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, EXT_INDEX(ANGLE_multi_draw)>(
+        &BuiltInVariable::kgl_DrawID),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicOr_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicOr_00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(
+        &texture3DLod_00J20B00B)};
 
+// Flat array of all mangled names.
+constexpr const char *kMangledNames[] = {"textureProj(00R30B00B",
+                                         "texture(00N10B00B",
+                                         "clamp(10D00D00D",
+                                         "gl_PrimitiveID",
+                                         "texture(00R10B00B",
+                                         "modf(00B00B",
+                                         "gl_MaxAtomicCounterBindings",
+                                         "notEqual(20D20D",
+                                         "gl_MaxComputeImageUniforms",
+                                         "textureLod(00L20B00B",
+                                         "angle_BaseVertex",
+                                         "determinant(A0B",
+                                         "textureProjGrad(00I30B10B10B",
+                                         "tanh(30B",
+                                         "gl_Layer",
+                                         "textureOffset(00d20B10D",
+                                         "dFdx(30B",
+                                         "clamp(00E00E00E",
+                                         "transpose(50B",
+                                         "ldexp(00B00D",
+                                         "textureGather(00K20B00D",
+                                         "lessThanEqual(30B30B",
+                                         "greaterThanEqual(20D20D",
+                                         "min(20E20E",
+                                         "asin(20B",
+                                         "outerProduct(20B30B",
+                                         "bitfieldInsert(00D00D00D00D",
+                                         "textureProjGrad(00Y30B20B20B",
+                                         "roundEven(30B",
+                                         "acosh(20B",
+                                         "atanh(10B",
+                                         "mix(20B20B00B",
+                                         "clamp(10B10B10B",
+                                         "textureGrad(00I10B10B10B",
+                                         "textureGatherOffset(00L20B10D00D",
+                                         "bitCount(00D",
+                                         "step(00B20B",
+                                         "lessThan(30E30E",
+                                         "uintBitsToFloat(30E",
+                                         "imulExtended(30D30D30D30D",
+                                         "textureSize(00K00D",
+                                         "gl_MaxGeometryOutputVertices",
+                                         "transpose(70B",
+                                         "textureProjOffset(00S30B20D00B",
+                                         "textureProjLod(00X30B00B",
+                                         "textureSize(00Y00D",
+                                         "gl_MinProgramTexelOffset",
+                                         "texture(00d20B",
+                                         "textureProj(00J30B00B",
+                                         "atan(10B10B",
+                                         "max(20B00B",
+                                         "clamp(30B30B30B",
+                                         "EndPrimitive(",
+                                         "textureLod(00Y20B00B",
+                                         "textureLodOffset(00a20B00B10D",
+                                         "texelFetchOffset(00Y20D00D20D",
+                                         "texelFetch(00a20D00D",
+                                         "min(20D00D",
+                                         "imageLoad(01F20D",
+                                         "uintBitsToFloat(00E",
+                                         "lessThanEqual(20B20B",
+                                         "texelFetch(00N10D00D",
+                                         "atomicAdd(00D00D",
+                                         "gl_MaxGeometryOutputComponents",
+                                         "gl_MaxGeometryTextureImageUnits",
+                                         "floatBitsToUint(20B",
+                                         "bitfieldInsert(20D20D00D00D",
+                                         "gl_MaxVertexTextureImageUnits",
+                                         "texture(00Z20B",
+                                         "min(10D10D",
+                                         "degrees(20B",
+                                         "tanh(00B",
+                                         "textureProjOffset(00J30B20D00B",
+                                         "all(30F",
+                                         "abs(20D",
+                                         "abs(20B",
+                                         "inversesqrt(00B",
+                                         "matrixCompMult(D0BD0B",
+                                         "lessThanEqual(10B10B",
+                                         "bitfieldReverse(20D",
+                                         "bitfieldReverse(20E",
+                                         "textureProjGrad(00S30B20B20B",
+                                         "equal(10D10D",
+                                         "max(30D00D",
+                                         "groupMemoryBarrier(",
+                                         "mix(00B00B00F",
+                                         "textureProjGradOffset(00R20B10B10B10D",
+                                         "imageLoad(01A10D",
+                                         "intBitsToFloat(30D",
+                                         "textureProj(00I20B",
+                                         "texelFetch(00I10D00D",
+                                         "min(30B30B",
+                                         "imageStore(01I20D30D",
+                                         "gl_MaxVertexAtomicCounterBuffers",
+                                         "textureLodOffset(00S20B00B20D",
+                                         "textureGatherOffset(00R10B10D",
+                                         "acos(00B",
+                                         "fract(10B",
+                                         "transpose(E0B",
+                                         "intBitsToFloat(00D",
+                                         "textureGradOffset(00J20B20B20B20D",
+                                         "memoryBarrierAtomicCounter(",
+                                         "texture2DGradEXT(00I10B10B10B",
+                                         "bitfieldInsert(00E00E00D00D",
+                                         "atomicXor(00D00D",
+                                         "greaterThan(20B20B",
+                                         "textureLodOffset(00I10B00B10D",
+                                         "texelFetch(00Y20D00D",
+                                         "texture2DProjGradEXT(00I30B10B10B",
+                                         "textureGrad(00d20B10B10B",
+                                         "textureProjOffset(00R30B10D",
+                                         "textureOffset(00U20B10D",
+                                         "atan(10B",
+                                         "modf(10B10B",
+                                         "min(30B00B",
+                                         "determinant(50B",
+                                         "lessThan(20B20B",
+                                         "atomicAnd(00D00D",
+                                         "gl_FragColor",
+                                         "exp(10B",
+                                         "textureProjOffset(00I20B10D00B",
+                                         "step(00B10B",
+                                         "bitCount(30D",
+                                         "textureProjLod(00I20B00B",
+                                         "unpackUnorm2x16(00E",
+                                         "rgb_2_yuv(20B00H",
+                                         "sqrt(20B",
+                                         "sign(20B",
+                                         "imageStore(01B20D30B",
+                                         "sign(20D",
+                                         "atanh(00B",
+                                         "textureGradOffset(00X10B10B10B10D",
+                                         "gl_DepthRange",
+                                         "imulExtended(10D10D10D10D",
+                                         "atan(20B",
+                                         "texture(00M10B",
+                                         "gl_MaxVertexOutputVectors",
+                                         "texture(00T20B",
+                                         "log2(10B",
+                                         "min(10B10B",
+                                         "gl_MaxImageUnits",
+                                         "pow(10B10B",
+                                         "findLSB(20E",
+                                         "findLSB(20D",
+                                         "texture(00Y20B",
+                                         "packUnorm4x8(30B",
+                                         "texture(00X10B00B",
+                                         "frexp(00B00D",
+                                         "texture2D(00I10B",
+                                         "not(10F",
+                                         "texelFetch(00P10D00D",
+                                         "lessThan(10E10E",
+                                         "ceil(20B",
+                                         "textureLodOffset(00R10B00B10D",
+                                         "clamp(10D10D10D",
+                                         "texelFetch(00M10D00D",
+                                         "texture(00O10B",
+                                         "transpose(F0B",
+                                         "textureOffset(00Y20B20D00B",
+                                         "textureGradOffset(00S20B20B20B20D",
+                                         "atomicXor(00E00E",
+                                         "textureProjOffset(00R20B10D",
+                                         "gl_FragCoord",
+                                         "clamp(30E30E30E",
+                                         "textureProj(00N30B00B",
+                                         "textureSize(00R00D",
+                                         "gl_MaxFragmentImageUniforms",
+                                         "normalize(00B",
+                                         "textureOffset(00I10B10D",
+                                         "atomicExchange(00E00E",
+                                         "textureProj(00I30B00B",
+                                         "acosh(10B",
+                                         "gl_MaxCombinedShaderOutputResources",
+                                         "atomicOr(00E00E",
+                                         "min(20B00B",
+                                         "textureProj(00M30B00B",
+                                         "textureProj(00M20B",
+                                         "texture(00I10B00B",
+                                         "reflect(00B00B",
+                                         "mod(20B00B",
+                                         "lessThan(20D20D",
+                                         "reflect(10B10B",
+                                         "floatBitsToUint(10B",
+                                         "textureLod(00J20B00B",
+                                         "sqrt(10B",
+                                         "textureProjLod(00S30B00B",
+                                         "clamp(20E20E20E",
+                                         "atomicAnd(00E00E",
+                                         "max(20D00D",
+                                         "textureSize(00I00D",
+                                         "gl_MaxComputeAtomicCounterBuffers",
+                                         "gl_PrimitiveIDIn",
+                                         "texelFetchOffset(00R10D00D10D",
+                                         "isinf(30B",
+                                         "textureGatherOffset(00a20B10D00D",
+                                         "lessThan(30B30B",
+                                         "textureGatherOffset(00I10B10D",
+                                         "textureOffset(00L20B10D00B",
+                                         "textureLodOffset(00X10B00B10D",
+                                         "texture(00T20B00B",
+                                         "textureOffset(00L20B10D",
+                                         "lessThanEqual(30E30E",
+                                         "textureOffset(00J20B20D00B",
+                                         "min(10E00E",
+                                         "log(30B",
+                                         "atomicCounter(00G",
+                                         "textureProjOffset(00S30B20D",
+                                         "imageLoad(01I20D",
+                                         "round(00B",
+                                         "smoothstep(00B00B20B",
+                                         "imageLoad(01H20D",
+                                         "textureGather(00K20B",
+                                         "bitfieldInsert(30D30D00D00D",
+                                         "imageStore(01G20D30E",
+                                         "fwidth(10B",
+                                         "textureProjLod(00R20B00B",
+                                         "notEqual(30D30D",
+                                         "refract(10B10B00B",
+                                         "textureProjOffset(00I20B10D",
+                                         "greaterThan(30D30D",
+                                         "greaterThan(10D10D",
+                                         "texture(00U20B",
+                                         "textureSize(00a00D",
+                                         "bitfieldExtract(10E00D00D",
+                                         "gl_MaxDrawBuffers",
+                                         "textureGatherOffset(00U20B10D00D",
+                                         "gl_MaxComputeWorkGroupCount",
+                                         "textureProjLod(00J30B00B",
+                                         "texture2DRect(00O10B",
+                                         "imulExtended(20D20D20D20D",
+                                         "any(30F",
+                                         "distance(30B30B",
+                                         "greaterThan(20D20D",
+                                         "textureOffset(00a20B10D",
+                                         "greaterThan(30B30B",
+                                         "trunc(00B",
+                                         "sinh(30B",
+                                         "length(10B",
+                                         "findMSB(10E",
+                                         "findMSB(10D",
+                                         "dot(00B00B",
+                                         "asinh(20B",
+                                         "dot(30B30B",
+                                         "bitCount(00E",
+                                         "tan(30B",
+                                         "textureLod(00T20B00B",
+                                         "usubBorrow(20E20E20E",
+                                         "imageStore(00z10D30D",
+                                         "textureProjGrad(00R30B10B10B",
+                                         "exp2(10B",
+                                         "textureProj(00O20B",
+                                         "textureProjOffset(00X20B10D00B",
+                                         "outerProduct(10B20B",
+                                         "gl_MaxGeometryAtomicCounterBuffers",
+                                         "textureProjGradOffset(00X30B10B10B10D",
+                                         "textureOffset(00I10B10D00B",
+                                         "clamp(30B00B00B",
+                                         "inverse(50B",
+                                         "dot(10B10B",
+                                         "unpackHalf2x16(00E",
+                                         "matrixCompMult(A0BA0B",
+                                         "texture2DProjLod(00I20B00B",
+                                         "texelFetch(00W20D00D",
+                                         "texture2DRectProj(00O30B",
+                                         "radians(20B",
+                                         "textureGrad(00S20B20B20B",
+                                         "max(10D00D",
+                                         "imageStore(01J20D30E",
+                                         "round(30B",
+                                         "gl_MaxComputeTextureImageUnits",
+                                         "clamp(00D00D00D",
+                                         "sin(30B",
+                                         "floor(30B",
+                                         "textureProj(00S30B00B",
+                                         "textureGrad(00Y20B20B20B",
+                                         "gl_MaxCombinedAtomicCounters",
+                                         "textureGather(00L20B00D",
+                                         "textureProjGradOffset(00S30B20B20B20D",
+                                         "imageStore(01A10D30E",
+                                         "texture(00J20B",
+                                         "gl_PointCoord",
+                                         "dFdx(20B",
+                                         "textureProj(00X20B",
+                                         "max(10E10E",
+                                         "max(30B30B",
+                                         "clamp(10E10E10E",
+                                         "texelFetchOffset(00S20D00D20D",
+                                         "texture(00N10B",
+                                         "texture(00L20B",
+                                         "barrier(",
+                                         "gl_MaxGeometryUniformComponents",
+                                         "greaterThanEqual(20E20E",
+                                         "lessThan(10D10D",
+                                         "texelFetchOffset(00a20D00D10D",
+                                         "textureProjGradOffset(00X20B10B10B10D",
+                                         "texture2DProj(00I20B",
+                                         "texture3DProjLod(00J30B00B",
+                                         "not(20F",
+                                         "",
+                                         "findMSB(20D",
+                                         "findMSB(20E",
+                                         "texelFetchOffset(00I10D00D10D",
+                                         "textureGather(00I10B00D",
+                                         "texelFetch(00V10D00D",
+                                         "outerProduct(20B20B",
+                                         "atan(30B30B",
+                                         "unpackSnorm4x8(00E",
+                                         "bitCount(30E",
+                                         "textureProjLodOffset(00R20B00B10D",
+                                         "log(20B",
+                                         "asin(30B",
+                                         "textureGather(00f20B",
+                                         "modf(30B30B",
+                                         "isnan(20B",
+                                         "max(00B00B",
+                                         "roundEven(20B",
+                                         "fwidth(00B",
+                                         "textureProjGrad(00J30B20B20B",
+                                         "dFdy(10B",
+                                         "outerProduct(30B10B",
+                                         "floatBitsToInt(30B",
+                                         "textureProj(00J30B",
+                                         "gl_InvocationID",
+                                         "max(30E00E",
+                                         "exp2(20B",
+                                         "textureLod(00d20B00B",
+                                         "radians(10B",
+                                         "texelFetch(00U20D00D",
+                                         "gl_MaxComputeWorkGroupSize",
+                                         "max(00D00D",
+                                         "gl_LastFragData",
+                                         "ceil(30B",
+                                         "atomicMin(00E00E",
+                                         "gl_MaxCombinedTextureImageUnits",
+                                         "bitCount(10E",
+                                         "texture(00S20B00B",
+                                         "textureGather(00e20B00B",
+                                         "gl_DepthRangeParameters",
+                                         "distance(10B10B",
+                                         "reflect(20B20B",
+                                         "mod(10B00B",
+                                         "uintBitsToFloat(10E",
+                                         "textureGrad(00Z20B20B20B",
+                                         "equal(10F10F",
+                                         "cosh(00B",
+                                         "bitfieldReverse(00D",
+                                         "bitfieldReverse(00E",
+                                         "max(20E20E",
+                                         "matrixCompMult(70B70B",
+                                         "bitfieldExtract(30E00D00D",
+                                         "textureLod(00I10B00B",
+                                         "greaterThanEqual(10D10D",
+                                         "texture(00e30B00B",
+                                         "textureLodOffset(00Y20B00B20D",
+                                         "log2(00B",
+                                         "gl_LastFragColor",
+                                         "abs(10D",
+                                         "abs(10B",
+                                         "acos(30B",
+                                         "tanh(10B",
+                                         "degrees(30B",
+                                         "gl_FragDepthEXT",
+                                         "dFdx(10B",
+                                         "textureProjOffset(00I30B10D",
+                                         "bitfieldReverse(30E",
+                                         "bitfieldReverse(30D",
+                                         "inversesqrt(30B",
+                                         "gl_LocalInvocationID",
+                                         "",
+                                         "clamp(00B00B00B",
+                                         "textureGather(00d10B",
+                                         "frexp(20B20D",
+                                         "intBitsToFloat(20D",
+                                         "fract(00B",
+                                         "gl_FragDepth",
+                                         "min(30E00E",
+                                         "exp(20B",
+                                         "equal(20B20B",
+                                         "textureProjLodOffset(00X20B00B10D",
+                                         "acosh(00B",
+                                         "log(10B",
+                                         "textureProjLodOffset(00S30B00B20D",
+                                         "sinh(20B",
+                                         "textureGather(00L20B",
+                                         "reflect(30B30B",
+                                         "outerProduct(30B20B",
+                                         "texture(00U20B00B",
+                                         "texture(00S20B",
+                                         "outerProduct(20B10B",
+                                         "umulExtended(10E10E10E10E",
+                                         "texture(00Z20B00B",
+                                         "textureGradOffset(00a20B10B10B10D",
+                                         "notEqual(20F20F",
+                                         "mod(30B30B",
+                                         "bitfieldExtract(10D00D00D",
+                                         "sign(30B",
+                                         "sign(30D",
+                                         "pow(00B00B",
+                                         "mod(00B00B",
+                                         "texture(00Y20B00B",
+                                         "notEqual(30B30B",
+                                         "roundEven(10B",
+                                         "texture2DProjLodEXT(00I30B00B",
+                                         "atanh(30B",
+                                         "dFdy(20B",
+                                         "textureProj(00Y30B",
+                                         "bitCount(20D",
+                                         "step(00B00B",
+                                         "texelFetch(00L20D00D",
+                                         "imageSize(00y",
+                                         "isinf(00B",
+                                         "imageSize(00z",
+                                         "distance(20B20B",
+                                         "textureGrad(00U20B10B10B",
+                                         "uaddCarry(30E30E30E",
+                                         "mod(30B00B",
+                                         "texture(00K20B00B",
+                                         "gl_MaxCombinedImageUniforms",
+                                         "yuv_2_rgb(20B00H",
+                                         "textureGather(00f20B00B",
+                                         "greaterThan(20E20E",
+                                         "textureGrad(00a20B10B10B",
+                                         "textureOffset(00U20B10D00B",
+                                         "intBitsToFloat(10D",
+                                         "texture(00J20B00B",
+                                         "refract(20B20B00B",
+                                         "textureProjLod(00I30B00B",
+                                         "refract(00B00B00B",
+                                         "findLSB(10D",
+                                         "findLSB(10E",
+                                         "mix(10B10B10F",
+                                         "mix(10B10B10B",
+                                         "textureProj(00Y30B00B",
+                                         "texture3D(00J20B",
+                                         "transpose(D0B",
+                                         "log2(30B",
+                                         "textureGrad(00J20B20B20B",
+                                         "textureProjGrad(00d30B10B10B",
+                                         "fract(30B",
+                                         "gl_LocalInvocationIndex",
+                                         "textureSize(00J00D",
+                                         "textureGatherOffset(00I10B10D00D",
+                                         "textureGather(00X10B00D",
+                                         "texelFetchOffset(00U20D00D10D",
+                                         "textureProjLodOffset(00Y30B00B20D",
+                                         "textureSize(00e00D",
+                                         "notEqual(20E20E",
+                                         "textureLodOffset(00d20B00B10D",
+                                         "inverse(A0B",
+                                         "imageStore(01E20D30B",
+                                         "textureProjGrad(00X20B10B10B",
+                                         "max(30E30E",
+                                         "isnan(30B",
+                                         "imulExtended(00D00D00D00D",
+                                         "gl_in",
+                                         "atan(20B20B",
+                                         "usubBorrow(00E00E00E",
+                                         "textureProjLodOffset(00J30B00B20D",
+                                         "frexp(30B30D",
+                                         "gl_SecondaryFragDataEXT",
+                                         "min(30E30E",
+                                         "texture2DProj(00I30B00B",
+                                         "textureCubeGradEXT(00K20B20B20B",
+                                         "texture(00I10B",
+                                         "min(00B00B",
+                                         "gl_InstanceID",
+                                         "texelFetch(00c20D00D",
+                                         "gl_MaxVertexImageUniforms",
+                                         "sqrt(00B",
+                                         "normalize(20B",
+                                         "gl_MaxFragmentAtomicCounterBuffers",
+                                         "gl_WorkGroupID",
+                                         "degrees(00B",
+                                         "inverse(F0B",
+                                         "min(20E00E",
+                                         "textureProjLod(00R30B00B",
+                                         "textureSize(00P",
+                                         "textureGradOffset(00d20B10B10B10D",
+                                         "textureProjLodOffset(00R30B00B10D",
+                                         "atan(00B",
+                                         "atomicExchange(00D00D",
+                                         "textureGatherOffset(00R10B10D00D",
+                                         "imageStore(00y10D30B",
+                                         "gl_MaxGeometryAtomicCounters",
+                                         "texture2D(00I10B00B",
+                                         "textureProj(00X20B00B",
+                                         "clamp(20D20D20D",
+                                         "greaterThan(30E30E",
+                                         "frexp(10B10D",
+                                         "max(10E00E",
+                                         "smoothstep(00B00B10B",
+                                         "gl_GlobalInvocationID",
+                                         "matrixCompMult(60B60B",
+                                         "memoryBarrierShared(",
+                                         "normalize(10B",
+                                         "unpackSnorm2x16(00E",
+                                         "imageLoad(00z10D",
+                                         "lessThan(30D30D",
+                                         "atan(00B00B",
+                                         "bitfieldExtract(20D00D00D",
+                                         "texture(00L20B00B",
+                                         "notEqual(10B10B",
+                                         "imageLoad(01G20D",
+                                         "bitfieldExtract(00E00D00D",
+                                         "atomicCompSwap(00D00D00D",
+                                         "trunc(30B",
+                                         "matrixCompMult(E0BE0B",
+                                         "length(00B",
+                                         "any(20F",
+                                         "memoryBarrier(",
+                                         "gl_PerVertex",
+                                         "textureProj(00X30B00B",
+                                         "atomicMax(00D00D",
+                                         "gl_ViewID_OVR",
+                                         "floor(10B",
+                                         "sin(10B",
+                                         "textureSize(00N00D",
+                                         "texelFetchOffset(00J20D00D20D",
+                                         "tan(00B",
+                                         "mod(20B20B",
+                                         "imageLoad(01J20D",
+                                         "gl_WorkGroupSize",
+                                         "asinh(30B",
+                                         "outerProduct(10B30B",
+                                         "textureCube(00K20B",
+                                         "textureSize(00c",
+                                         "textureSize(00b",
+                                         "cos(00B",
+                                         "min(20B20B",
+                                         "textureGradOffset(00f30B10B10B10D",
+                                         "max(20D20D",
+                                         "textureProj(00I30B",
+                                         "max(10D10D",
+                                         "textureOffset(00a20B10D00B",
+                                         "textureGather(00X10B",
+                                         "pow(30B30B",
+                                         "textureGather(00a20B",
+                                         "smoothstep(10B10B10B",
+                                         "textureProj(00O30B",
+                                         "textureGatherOffset(00d10B00B10D",
+                                         "refract(30B30B00B",
+                                         "bitfieldInsert(20E20E00D00D",
+                                         "floor(20B",
+                                         "equal(20E20E",
+                                         "mix(00B00B00B",
+                                         "imageSize(01B",
+                                         "greaterThanEqual(20B20B",
+                                         "uaddCarry(00E00E00E",
+                                         "sin(20B",
+                                         "textureSize(00Q",
+                                         "round(20B",
+                                         "matrixCompMult(90B90B",
+                                         "textureProjLod(00d30B00B",
+                                         "textureSize(00W",
+                                         "textureProjLod(00X20B00B",
+                                         "gl_MaxCombinedAtomicCounterBuffers",
+                                         "isnan(00B",
+                                         "umulExtended(30E30E30E30E",
+                                         "faceforward(30B30B30B",
+                                         "textureGradOffset(00Y20B20B20B20D",
+                                         "clamp(30E00E00E",
+                                         "asin(00B",
+                                         "ceil(00B",
+                                         "texture3D(00J20B00B",
+                                         "distance(00B00B",
+                                         "texture(00a20B",
+                                         "textureGatherOffset(00a20B10D",
+                                         "textureGrad(00f30B10B10B",
+                                         "texture2DProj(00I30B",
+                                         "modf(20B20B",
+                                         "textureGradOffset(00I10B10B10B10D",
+                                         "notEqual(30E30E",
+                                         "textureGather(00I10B",
+                                         "lessThanEqual(10E10E",
+                                         "inversesqrt(20B",
+                                         "textureLodOffset(00J20B00B20D",
+                                         "min(30D30D",
+                                         "textureOffset(00R10B10D00B",
+                                         "textureGrad(00e30B20B20B",
+                                         "atomicAdd(00E00E",
+                                         "gl_MaxGeometryInputComponents",
+                                         "findMSB(30E",
+                                         "findMSB(30D",
+                                         "textureGrad(00X10B10B10B",
+                                         "length(30B",
+                                         "greaterThanEqual(30E30E",
+                                         "fwidth(30B",
+                                         "textureGrad(00K20B20B20B",
+                                         "mix(20B20B20F",
+                                         "texelFetch(00S20D00D",
+                                         "textureGradOffset(00U20B10B10B10D",
+                                         "mix(20B20B20B",
+                                         "floatBitsToInt(10B",
+                                         "max(10B00B",
+                                         "textureGatherOffset(00L20B10D",
+                                         "textureLod(00a20B00B",
+                                         "any(10F",
+                                         "textureProjGradOffset(00d30B10B10B10D",
+                                         "textureProj(00N30B",
+                                         "gl_MaxProgramTexelOffset",
+                                         "exp2(30B",
+                                         "texelFetchOffset(00L20D00D10D",
+                                         "equal(30D30D",
+                                         "texture3DProj(00J30B00B",
+                                         "packSnorm2x16(10B",
+                                         "floatBitsToUint(30B",
+                                         "lessThanEqual(30D30D",
+                                         "gl_MaxGeometryImageUniforms",
+                                         "imageLoad(00y10D",
+                                         "asinh(00B",
+                                         "textureOffset(00R10B10D",
+                                         "greaterThanEqual(10E10E",
+                                         "textureProjGradOffset(00I30B10B10B10D",
+                                         "textureGather(00Z20B",
+                                         "textureOffset(00X10B10D",
+                                         "cosh(30B",
+                                         "textureOffset(00d20B10D00B",
+                                         "texture(00R10B",
+                                         "textureOffset(00S20B20D00B",
+                                         "usubBorrow(30E30E30E",
+                                         "radians(00B",
+                                         "textureProjOffset(00R20B10D00B",
+                                         "ldexp(30B30D",
+                                         "max(30B00B",
+                                         "min(20D20D",
+                                         "step(10B10B",
+                                         "gl_MaxDualSourceDrawBuffersEXT",
+                                         "step(30B30B",
+                                         "bitfieldReverse(10E",
+                                         "bitfieldReverse(10D",
+                                         "texture3DProj(00J30B",
+                                         "matrixCompMult(B0BB0B",
+                                         "lessThan(20E20E",
+                                         "cross(20B20B",
+                                         "all(10F",
+                                         "clamp(20B00B00B",
+                                         "tanh(20B",
+                                         "dFdx(00B",
+                                         "matrixCompMult(F0BF0B",
+                                         "abs(00D",
+                                         "abs(00B",
+                                         "textureLod(00R10B00B",
+                                         "step(20B20B",
+                                         "gl_MaxFragmentAtomicCounters",
+                                         "textureLodOffset(00U20B00B10D",
+                                         "textureProj(00R20B00B",
+                                         "faceforward(20B20B20B",
+                                         "imageSize(01E",
+                                         "acos(20B",
+                                         "texelFetch(00X10D00D",
+                                         "sinh(00B",
+                                         "imageSize(01A",
+                                         "texture2DLod(00I10B00B",
+                                         "texelFetch(00b10D00D",
+                                         "imageSize(01F",
+                                         "gl_MaxAtomicCounterBufferSize",
+                                         "max(20B20B",
+                                         "textureGatherOffset(00f20B00B10D",
+                                         "outerProduct(30B30B",
+                                         "lessThanEqual(20E20E",
+                                         "textureLod(00X10B00B",
+                                         "exp(30B",
+                                         "gl_BaseVertex",
+                                         "imageSize(01D",
+                                         "step(00B30B",
+                                         "bitCount(10D",
+                                         "equal(30E30E",
+                                         "sign(00B",
+                                         "log(00B",
+                                         "textureLod(00Z20B00B",
+                                         "sign(00D",
+                                         "textureOffset(00Y20B20D",
+                                         "transpose(60B",
+                                         "findMSB(00D",
+                                         "gl_MaxGeometryTotalOutputComponents",
+                                         "acosh(30B",
+                                         "findMSB(00E",
+                                         "bitfieldExtract(20E00D00D",
+                                         "uintBitsToFloat(20E",
+                                         "unpackUnorm4x8(00E",
+                                         "texture2DProj(00M20B",
+                                         "texelFetchOffset(00X10D00D10D",
+                                         "mod(10B10B",
+                                         "texture(00d20B00B",
+                                         "notEqual(10D10D",
+                                         "texture2DProj(00M30B",
+                                         "textureSize(00V",
+                                         "packUnorm2x16(10B",
+                                         "faceforward(00B00B00B",
+                                         "umulExtended(20E20E20E20E",
+                                         "textureOffset(00X10B10D00B",
+                                         "cos(30B",
+                                         "findLSB(30D",
+                                         "findLSB(30E",
+                                         "bitCount(20E",
+                                         "gl_NumWorkGroups",
+                                         "equal(20D20D",
+                                         "textureProjOffset(00Y30B20D00B",
+                                         "textureGatherOffset(00U20B10D",
+                                         "faceforward(10B10B10B",
+                                         "textureSize(00L00D",
+                                         "gl_MaxComputeUniformComponents",
+                                         "textureGather(00R10B00D",
+                                         "memoryBarrierBuffer(",
+                                         "textureSize(00Z00D",
+                                         "textureGather(00U20B",
+                                         "bitfieldExtract(30D00D00D",
+                                         "min(10D00D",
+                                         "imageStore(01H20D30B",
+                                         "texelFetch(00Q20D00D",
+                                         "max(20E00E",
+                                         "textureProj(00S30B",
+                                         "roundEven(00B",
+                                         "texture2DLodEXT(00I10B00B",
+                                         "dFdy(30B",
+                                         "atanh(20B",
+                                         "clamp(10E00E00E",
+                                         "clamp(20D00D00D",
+                                         "all(20F",
+                                         "isinf(10B",
+                                         "imageLoad(01C20D",
+                                         "imageSize(01J",
+                                         "imageSize(01H",
+                                         "imageSize(01I",
+                                         "packHalf2x16(10B",
+                                         "texture2DProj(00I20B00B",
+                                         "findLSB(00E",
+                                         "findLSB(00D",
+                                         "textureProjOffset(00X30B10D",
+                                         "imageSize(01C",
+                                         "greaterThanEqual(30B30B",
+                                         "textureSize(00U00D",
+                                         "textureGradOffset(00R10B10B10B10D",
+                                         "imageSize(01G",
+                                         "equal(30F30F",
+                                         "bitfieldExtract(00D00D00D",
+                                         "texture2DProjLodEXT(00I20B00B",
+                                         "notEqual(30F30F",
+                                         "gl_FrontFacing",
+                                         "gl_SecondaryFragColorEXT",
+                                         "inversesqrt(10B",
+                                         "imageStore(01C20D30D",
+                                         "acos(10B",
+                                         "abs(30D",
+                                         "gl_MaxFragmentUniformVectors",
+                                         "fract(20B",
+                                         "abs(30B",
+                                         "lessThan(10B10B",
+                                         "textureGatherOffset(00X10B10D",
+                                         "bitfieldInsert(10E10E00D00D",
+                                         "packSnorm4x8(30B",
+                                         "mix(10B10B00B",
+                                         "imageLoad(01E20D",
+                                         "clamp(30D30D30D",
+                                         "textureGather(00U20B00D",
+                                         "textureSize(00f00D",
+                                         "textureProj(00N20B00B",
+                                         "gl_FragData",
+                                         "imageLoad(01B20D",
+                                         "textureProj(00d30B00B",
+                                         "clamp(20E00E00E",
+                                         "texture(00X10B",
+                                         "textureProj(00d30B",
+                                         "mix(30B30B30F",
+                                         "determinant(F0B",
+                                         "transpose(A0B",
+                                         "pow(20B20B",
+                                         "texture2DProjGradEXT(00I20B10B10B",
+                                         "gl_LastFragColorARM",
+                                         "textureGather(00Z20B00D",
+                                         "textureGather(00R10B",
+                                         "lessThanEqual(20D20D",
+                                         "textureLod(00S20B00B",
+                                         "textureProjLod(00Y30B00B",
+                                         "cosh(10B",
+                                         "sqrt(30B",
+                                         "gl_VertexID",
+                                         "sign(10D",
+                                         "textureProj(00M30B",
+                                         "exp(00B",
+                                         "min(00E00E",
+                                         "max(30D30D",
+                                         "umulExtended(00E00E00E00E",
+                                         "gl_MaxVertexAttribs",
+                                         "gl_BaseInstance",
+                                         "transpose(B0B",
+                                         "fwidth(20B",
+                                         "",
+                                         "smoothstep(00B00B30B",
+                                         "floatBitsToInt(20B",
+                                         "textureSize(00M00D",
+                                         "log2(20B",
+                                         "ldexp(10B10D",
+                                         "min(10B00B",
+                                         "mix(30B30B00B",
+                                         "angle_BaseInstance",
+                                         "degrees(10B",
+                                         "gl_MaxTextureImageUnits",
+                                         "gl_Position",
+                                         "texture(00K20B",
+                                         "atomicCompSwap(00E00E00E",
+                                         "textureProjOffset(00Y30B20D",
+                                         "sinh(10B",
+                                         "atan(30B",
+                                         "textureGradOffset(00L20B10B10B10D",
+                                         "ceil(10B",
+                                         "textureSize(00S00D",
+                                         "imageStore(01D20D30E",
+                                         "greaterThanEqual(10B10B",
+                                         "atomicCounterDecrement(00G",
+                                         "textureCube(00K20B00B",
+                                         "dot(20B20B",
+                                         "transpose(90B",
+                                         "not(30F",
+                                         "textureProjLodOffset(00I20B00B10D",
+                                         "notEqual(10F10F",
+                                         "textureProjGrad(00R20B10B10B",
+                                         "texture(00f30B",
+                                         "smoothstep(00B00B00B",
+                                         "textureProjLodOffset(00d30B00B10D",
+                                         "texelFetch(00R10D00D",
+                                         "cosh(20B",
+                                         "textureProjLodOffset(00I30B00B10D",
+                                         "normalize(30B",
+                                         "smoothstep(30B30B30B",
+                                         "bitfieldInsert(10D10D00D00D",
+                                         "clamp(20B20B20B",
+                                         "textureGrad(00L20B10B10B",
+                                         "textureGrad(00R10B10B10B",
+                                         "textureProjGrad(00I20B10B10B",
+                                         "textureGather(00e20B",
+                                         "texture2D(00M10B",
+                                         "min(00D00D",
+                                         "outerProduct(10B10B",
+                                         "lessThanEqual(10D10D",
+                                         "trunc(20B",
+                                         "gl_MaxVaryingVectors",
+                                         "textureProjOffset(00I30B10D00B",
+                                         "textureSize(00d00D",
+                                         "sin(00B",
+                                         "gl_MaxVertexUniformVectors",
+                                         "textureCubeLodEXT(00K20B00B",
+                                         "textureGather(00T20B00D",
+                                         "textureProj(00N20B",
+                                         "uaddCarry(10E10E10E",
+                                         "tan(10B",
+                                         "textureLodOffset(00L20B00B10D",
+                                         "atomicCounterIncrement(00G",
+                                         "ldexp(20B20D",
+                                         "greaterThanEqual(30D30D",
+                                         "notEqual(20B20B",
+                                         "imageLoad(01D20D",
+                                         "textureProjLodOffset(00X30B00B10D",
+                                         "isinf(20B",
+                                         "cos(10B",
+                                         "mix(30B30B30B",
+                                         "texture(00e30B",
+                                         "textureSize(00T00D",
+                                         "textureGatherOffset(00X10B10D00D",
+                                         "equal(10E10E",
+                                         "min(10E10E",
+                                         "textureProjGradOffset(00Y30B20B20B20D",
+                                         "textureGrad(00T20B20B20B",
+                                         "memoryBarrierImage(",
+                                         "textureProjOffset(00J30B20D",
+                                         "EmitVertex(",
+                                         "textureProjOffset(00d30B10D00B",
+                                         "round(10B",
+                                         "textureProjOffset(00d30B10D",
+                                         "notEqual(10E10E",
+                                         "textureProj(00R30B",
+                                         "matrixCompMult(50B50B",
+                                         "equal(20F20F",
+                                         "gl_MaxFragmentInputVectors",
+                                         "equal(30B30B",
+                                         "textureLod(00U20B00B",
+                                         "usubBorrow(10E10E10E",
+                                         "equal(10B10B",
+                                         "textureProjGradOffset(00I20B10B10B10D",
+                                         "texture2DProjLod(00I30B00B",
+                                         "isnan(10B",
+                                         "uaddCarry(20E20E20E",
+                                         "max(10B10B",
+                                         "atomicMax(00E00E",
+                                         "gl_PointSize",
+                                         "atomicMin(00D00D",
+                                         "textureSize(00X00D",
+                                         "greaterThan(10B10B",
+                                         "asin(10B",
+                                         "textureGather(00d10B00B",
+                                         "trunc(10B",
+                                         "gl_MaxComputeAtomicCounters",
+                                         "textureProj(00X30B",
+                                         "gl_MaxVertexAtomicCounters",
+                                         "length(20B",
+                                         "bitfieldInsert(30E30E00D00D",
+                                         "textureOffset(00S20B20D",
+                                         "textureProjOffset(00X20B10D",
+                                         "clamp(30D00D00D",
+                                         "clamp(10B00B00B",
+                                         "textureProj(00R20B",
+                                         "imageStore(01F20D30D",
+                                         "textureProj(00I20B00B",
+                                         "greaterThan(10E10E",
+                                         "textureProjOffset(00R30B10D00B",
+                                         "dFdy(00B",
+                                         "min(30D00D",
+                                         "floatBitsToInt(00B",
+                                         "sign(10B",
+                                         "max(00E00E",
+                                         "texture(00a20B00B",
+                                         "texture(00M10B00B",
+                                         "smoothstep(20B20B20B",
+                                         "textureCubeLod(00K20B00B",
+                                         "textureOffset(00J20B20D",
+                                         "texelFetch(00J20D00D",
+                                         "textureProj(00M20B00B",
+                                         "floatBitsToUint(00B",
+                                         "textureProjGradOffset(00R30B10B10B10D",
+                                         "textureLod(00K20B00B",
+                                         "textureProjOffset(00X30B10D00B",
+                                         "cos(20B",
+                                         "exp2(00B",
+                                         "radians(30B",
+                                         "texture2DRectProj(00O20B",
+                                         "tan(20B",
+                                         "textureGather(00T20B",
+                                         "textureGather(00a20B00D",
+                                         "textureProjGradOffset(00J30B20B20B20D",
+                                         "asinh(10B",
+                                         "textureProjGrad(00X30B10B10B",
+                                         "floor(00B",
+                                         "gl_DrawID",
+                                         "atomicOr(00D00D",
+                                         "texture3DLod(00J20B00B"};
+
+// Flat array of offsets from a symbol into the rules table.
+constexpr uint16_t kMangledOffsets[] = {
+    0,     // textureProj_00R30B00B
+    2,     // texture_00N10B00B
+    3,     // clamp_10D00D00D
+    5,     // gl_PrimitiveID
+    7,     // texture_00R10B00B
+    9,     // modf_00B00B
+    11,    // gl_MaxAtomicCounterBindings
+    13,    // notEqual_20D20D
+    15,    // gl_MaxComputeImageUniforms
+    17,    // textureLod_00L20B00B
+    19,    // angle_BaseVertex
+    20,    // determinant_A0B
+    21,    // textureProjGrad_00I30B10B10B
+    23,    // tanh_30B
+    25,    // gl_Layer
+    27,    // textureOffset_00d20B10D
+    29,    // dFdx_30B
+    32,    // clamp_00E00E00E
+    34,    // transpose_50B
+    36,    // ldexp_00B00D
+    38,    // textureGather_00K20B00D
+    40,    // lessThanEqual_30B30B
+    42,    // greaterThanEqual_20D20D
+    44,    // min_20E20E
+    46,    // asin_20B
+    48,    // outerProduct_20B30B
+    50,    // bitfieldInsert_00D00D00D00D
+    52,    // textureProjGrad_00Y30B20B20B
+    54,    // roundEven_30B
+    56,    // acosh_20B
+    58,    // atanh_10B
+    60,    // mix_20B20B00B
+    62,    // clamp_10B10B10B
+    64,    // textureGrad_00I10B10B10B
+    66,    // textureGatherOffset_00L20B10D00D
+    68,    // bitCount_00D
+    70,    // step_00B20B
+    72,    // lessThan_30E30E
+    74,    // uintBitsToFloat_30E
+    76,    // imulExtended_30D30D30D30D
+    78,    // textureSize_00K00D
+    80,    // gl_MaxGeometryOutputVertices
+    81,    // transpose_70B
+    83,    // textureProjOffset_00S30B20D00B
+    85,    // textureProjLod_00X30B00B
+    87,    // textureSize_00Y00D
+    89,    // gl_MinProgramTexelOffset
+    91,    // texture_00d20B
+    93,    // textureProj_00J30B00B
+    95,    // atan_10B10B
+    97,    // max_20B00B
+    99,    // clamp_30B30B30B
+    101,   // EndPrimitive_
+    102,   // textureLod_00Y20B00B
+    104,   // textureLodOffset_00a20B00B10D
+    106,   // texelFetchOffset_00Y20D00D20D
+    108,   // texelFetch_00a20D00D
+    110,   // min_20D00D
+    112,   // imageLoad_01F20D
+    113,   // uintBitsToFloat_00E
+    115,   // lessThanEqual_20B20B
+    117,   // texelFetch_00N10D00D
+    118,   // atomicAdd_00D00D
+    120,   // gl_MaxGeometryOutputComponents
+    121,   // gl_MaxGeometryTextureImageUnits
+    122,   // floatBitsToUint_20B
+    124,   // bitfieldInsert_20D20D00D00D
+    126,   // gl_MaxVertexTextureImageUnits
+    128,   // texture_00Z20B
+    130,   // min_10D10D
+    132,   // degrees_20B
+    134,   // tanh_00B
+    136,   // textureProjOffset_00J30B20D00B
+    138,   // all_30F
+    140,   // abs_20D
+    142,   // abs_20B
+    144,   // inversesqrt_00B
+    146,   // matrixCompMult_D0BD0B
+    147,   // lessThanEqual_10B10B
+    149,   // bitfieldReverse_20D
+    151,   // bitfieldReverse_20E
+    153,   // textureProjGrad_00S30B20B20B
+    155,   // equal_10D10D
+    157,   // max_30D00D
+    159,   // groupMemoryBarrier_
+    161,   // mix_00B00B00F
+    163,   // textureProjGradOffset_00R20B10B10B10D
+    165,   // imageLoad_01A10D
+    166,   // intBitsToFloat_30D
+    168,   // textureProj_00I20B
+    170,   // texelFetch_00I10D00D
+    172,   // min_30B30B
+    174,   // imageStore_01I20D30D
+    175,   // gl_MaxVertexAtomicCounterBuffers
+    177,   // textureLodOffset_00S20B00B20D
+    179,   // textureGatherOffset_00R10B10D
+    181,   // acos_00B
+    183,   // fract_10B
+    185,   // transpose_E0B
+    187,   // intBitsToFloat_00D
+    189,   // textureGradOffset_00J20B20B20B20D
+    191,   // memoryBarrierAtomicCounter_
+    193,   // texture2DGradEXT_00I10B10B10B
+    194,   // bitfieldInsert_00E00E00D00D
+    196,   // atomicXor_00D00D
+    198,   // greaterThan_20B20B
+    200,   // textureLodOffset_00I10B00B10D
+    202,   // texelFetch_00Y20D00D
+    204,   // texture2DProjGradEXT_00I30B10B10B
+    205,   // textureGrad_00d20B10B10B
+    207,   // textureProjOffset_00R30B10D
+    209,   // textureOffset_00U20B10D
+    211,   // atan_10B
+    213,   // modf_10B10B
+    215,   // min_30B00B
+    217,   // determinant_50B
+    218,   // lessThan_20B20B
+    220,   // atomicAnd_00D00D
+    222,   // gl_FragColor
+    224,   // exp_10B
+    226,   // textureProjOffset_00I20B10D00B
+    228,   // step_00B10B
+    230,   // bitCount_30D
+    232,   // textureProjLod_00I20B00B
+    234,   // unpackUnorm2x16_00E
+    236,   // rgb_2_yuv_20B00H
+    237,   // sqrt_20B
+    239,   // sign_20B
+    241,   // imageStore_01B20D30B
+    242,   // sign_20D
+    244,   // atanh_00B
+    246,   // textureGradOffset_00X10B10B10B10D
+    248,   // gl_DepthRange
+    250,   // imulExtended_10D10D10D10D
+    252,   // atan_20B
+    254,   // texture_00M10B
+    255,   // gl_MaxVertexOutputVectors
+    257,   // texture_00T20B
+    259,   // log2_10B
+    261,   // min_10B10B
+    263,   // gl_MaxImageUnits
+    265,   // pow_10B10B
+    267,   // findLSB_20E
+    269,   // findLSB_20D
+    271,   // texture_00Y20B
+    273,   // packUnorm4x8_30B
+    275,   // texture_00X10B00B
+    277,   // frexp_00B00D
+    279,   // texture2D_00I10B
+    281,   // not_10F
+    283,   // texelFetch_00P10D00D
+    286,   // lessThan_10E10E
+    288,   // ceil_20B
+    290,   // textureLodOffset_00R10B00B10D
+    292,   // clamp_10D10D10D
+    294,   // texelFetch_00M10D00D
+    295,   // texture_00O10B
+    296,   // transpose_F0B
+    298,   // textureOffset_00Y20B20D00B
+    300,   // textureGradOffset_00S20B20B20B20D
+    302,   // atomicXor_00E00E
+    304,   // textureProjOffset_00R20B10D
+    306,   // gl_FragCoord
+    308,   // clamp_30E30E30E
+    310,   // textureProj_00N30B00B
+    311,   // textureSize_00R00D
+    313,   // gl_MaxFragmentImageUniforms
+    315,   // normalize_00B
+    317,   // textureOffset_00I10B10D
+    319,   // atomicExchange_00E00E
+    321,   // textureProj_00I30B00B
+    323,   // acosh_10B
+    325,   // gl_MaxCombinedShaderOutputResources
+    327,   // atomicOr_00E00E
+    329,   // min_20B00B
+    331,   // textureProj_00M30B00B
+    332,   // textureProj_00M20B
+    333,   // texture_00I10B00B
+    335,   // reflect_00B00B
+    337,   // mod_20B00B
+    339,   // lessThan_20D20D
+    341,   // reflect_10B10B
+    343,   // floatBitsToUint_10B
+    345,   // textureLod_00J20B00B
+    347,   // sqrt_10B
+    349,   // textureProjLod_00S30B00B
+    351,   // clamp_20E20E20E
+    353,   // atomicAnd_00E00E
+    355,   // max_20D00D
+    357,   // textureSize_00I00D
+    359,   // gl_MaxComputeAtomicCounterBuffers
+    361,   // gl_PrimitiveIDIn
+    362,   // texelFetchOffset_00R10D00D10D
+    364,   // isinf_30B
+    366,   // textureGatherOffset_00a20B10D00D
+    368,   // lessThan_30B30B
+    370,   // textureGatherOffset_00I10B10D
+    372,   // textureOffset_00L20B10D00B
+    374,   // textureLodOffset_00X10B00B10D
+    376,   // texture_00T20B00B
+    378,   // textureOffset_00L20B10D
+    380,   // lessThanEqual_30E30E
+    382,   // textureOffset_00J20B20D00B
+    384,   // min_10E00E
+    386,   // log_30B
+    388,   // atomicCounter_00G
+    390,   // textureProjOffset_00S30B20D
+    392,   // imageLoad_01I20D
+    393,   // round_00B
+    395,   // smoothstep_00B00B20B
+    397,   // imageLoad_01H20D
+    398,   // textureGather_00K20B
+    400,   // bitfieldInsert_30D30D00D00D
+    402,   // imageStore_01G20D30E
+    403,   // fwidth_10B
+    406,   // textureProjLod_00R20B00B
+    408,   // notEqual_30D30D
+    410,   // refract_10B10B00B
+    412,   // textureProjOffset_00I20B10D
+    414,   // greaterThan_30D30D
+    416,   // greaterThan_10D10D
+    418,   // texture_00U20B
+    420,   // textureSize_00a00D
+    422,   // bitfieldExtract_10E00D00D
+    424,   // gl_MaxDrawBuffers
+    426,   // textureGatherOffset_00U20B10D00D
+    428,   // gl_MaxComputeWorkGroupCount
+    430,   // textureProjLod_00J30B00B
+    432,   // texture2DRect_00O10B
+    433,   // imulExtended_20D20D20D20D
+    435,   // any_30F
+    437,   // distance_30B30B
+    439,   // greaterThan_20D20D
+    441,   // textureOffset_00a20B10D
+    443,   // greaterThan_30B30B
+    445,   // trunc_00B
+    447,   // sinh_30B
+    449,   // length_10B
+    451,   // findMSB_10E
+    453,   // findMSB_10D
+    455,   // dot_00B00B
+    457,   // asinh_20B
+    459,   // dot_30B30B
+    461,   // bitCount_00E
+    463,   // tan_30B
+    465,   // textureLod_00T20B00B
+    467,   // usubBorrow_20E20E20E
+    469,   // imageStore_00z10D30D
+    470,   // textureProjGrad_00R30B10B10B
+    472,   // exp2_10B
+    474,   // textureProj_00O20B
+    475,   // textureProjOffset_00X20B10D00B
+    477,   // outerProduct_10B20B
+    479,   // gl_MaxGeometryAtomicCounterBuffers
+    480,   // textureProjGradOffset_00X30B10B10B10D
+    482,   // textureOffset_00I10B10D00B
+    484,   // clamp_30B00B00B
+    486,   // inverse_50B
+    488,   // dot_10B10B
+    490,   // unpackHalf2x16_00E
+    492,   // matrixCompMult_A0BA0B
+    494,   // texture2DProjLod_00I20B00B
+    496,   // texelFetch_00W20D00D
+    497,   // texture2DRectProj_00O30B
+    498,   // radians_20B
+    500,   // textureGrad_00S20B20B20B
+    502,   // max_10D00D
+    504,   // imageStore_01J20D30E
+    505,   // round_30B
+    507,   // gl_MaxComputeTextureImageUnits
+    509,   // clamp_00D00D00D
+    511,   // sin_30B
+    513,   // floor_30B
+    515,   // textureProj_00S30B00B
+    517,   // textureGrad_00Y20B20B20B
+    519,   // gl_MaxCombinedAtomicCounters
+    521,   // textureGather_00L20B00D
+    523,   // textureProjGradOffset_00S30B20B20B20D
+    525,   // imageStore_01A10D30E
+    526,   // texture_00J20B
+    528,   // gl_PointCoord
+    530,   // dFdx_20B
+    533,   // textureProj_00X20B
+    535,   // max_10E10E
+    537,   // max_30B30B
+    539,   // clamp_10E10E10E
+    541,   // texelFetchOffset_00S20D00D20D
+    543,   // texture_00N10B
+    544,   // texture_00L20B
+    546,   // barrier_
+    548,   // gl_MaxGeometryUniformComponents
+    549,   // greaterThanEqual_20E20E
+    551,   // lessThan_10D10D
+    553,   // texelFetchOffset_00a20D00D10D
+    555,   // textureProjGradOffset_00X20B10B10B10D
+    557,   // texture2DProj_00I20B
+    559,   // texture3DProjLod_00J30B00B
+    560,   // not_20F
+    562,   // Empty
+    562,   // findMSB_20D
+    564,   // findMSB_20E
+    566,   // texelFetchOffset_00I10D00D10D
+    568,   // textureGather_00I10B00D
+    570,   // texelFetch_00V10D00D
+    573,   // outerProduct_20B20B
+    575,   // atan_30B30B
+    577,   // unpackSnorm4x8_00E
+    579,   // bitCount_30E
+    581,   // textureProjLodOffset_00R20B00B10D
+    583,   // log_20B
+    585,   // asin_30B
+    587,   // textureGather_00f20B
+    588,   // modf_30B30B
+    590,   // isnan_20B
+    592,   // max_00B00B
+    594,   // roundEven_20B
+    596,   // fwidth_00B
+    599,   // textureProjGrad_00J30B20B20B
+    601,   // dFdy_10B
+    604,   // outerProduct_30B10B
+    606,   // floatBitsToInt_30B
+    608,   // textureProj_00J30B
+    610,   // gl_InvocationID
+    611,   // max_30E00E
+    613,   // exp2_20B
+    615,   // textureLod_00d20B00B
+    617,   // radians_10B
+    619,   // texelFetch_00U20D00D
+    621,   // gl_MaxComputeWorkGroupSize
+    623,   // max_00D00D
+    625,   // gl_LastFragData
+    627,   // ceil_30B
+    629,   // atomicMin_00E00E
+    631,   // gl_MaxCombinedTextureImageUnits
+    633,   // bitCount_10E
+    635,   // texture_00S20B00B
+    637,   // textureGather_00e20B00B
+    639,   // gl_DepthRangeParameters
+    641,   // distance_10B10B
+    643,   // reflect_20B20B
+    645,   // mod_10B00B
+    647,   // uintBitsToFloat_10E
+    649,   // textureGrad_00Z20B20B20B
+    651,   // equal_10F10F
+    653,   // cosh_00B
+    655,   // bitfieldReverse_00D
+    657,   // bitfieldReverse_00E
+    659,   // max_20E20E
+    661,   // matrixCompMult_70B70B
+    662,   // bitfieldExtract_30E00D00D
+    664,   // textureLod_00I10B00B
+    666,   // greaterThanEqual_10D10D
+    668,   // texture_00e30B00B
+    670,   // textureLodOffset_00Y20B00B20D
+    672,   // log2_00B
+    674,   // gl_LastFragColor
+    675,   // abs_10D
+    677,   // abs_10B
+    679,   // acos_30B
+    681,   // tanh_10B
+    683,   // degrees_30B
+    685,   // gl_FragDepthEXT
+    686,   // dFdx_10B
+    689,   // textureProjOffset_00I30B10D
+    691,   // bitfieldReverse_30E
+    693,   // bitfieldReverse_30D
+    695,   // inversesqrt_30B
+    697,   // gl_LocalInvocationID
+    699,   // Empty
+    699,   // clamp_00B00B00B
+    701,   // textureGather_00d10B
+    702,   // frexp_20B20D
+    704,   // intBitsToFloat_20D
+    706,   // fract_00B
+    708,   // gl_FragDepth
+    710,   // min_30E00E
+    712,   // exp_20B
+    714,   // equal_20B20B
+    716,   // textureProjLodOffset_00X20B00B10D
+    718,   // acosh_00B
+    720,   // log_10B
+    722,   // textureProjLodOffset_00S30B00B20D
+    724,   // sinh_20B
+    726,   // textureGather_00L20B
+    728,   // reflect_30B30B
+    730,   // outerProduct_30B20B
+    732,   // texture_00U20B00B
+    734,   // texture_00S20B
+    736,   // outerProduct_20B10B
+    738,   // umulExtended_10E10E10E10E
+    740,   // texture_00Z20B00B
+    742,   // textureGradOffset_00a20B10B10B10D
+    744,   // notEqual_20F20F
+    746,   // mod_30B30B
+    748,   // bitfieldExtract_10D00D00D
+    750,   // sign_30B
+    752,   // sign_30D
+    754,   // pow_00B00B
+    756,   // mod_00B00B
+    758,   // texture_00Y20B00B
+    760,   // notEqual_30B30B
+    762,   // roundEven_10B
+    764,   // texture2DProjLodEXT_00I30B00B
+    765,   // atanh_30B
+    767,   // dFdy_20B
+    770,   // textureProj_00Y30B
+    772,   // bitCount_20D
+    774,   // step_00B00B
+    776,   // texelFetch_00L20D00D
+    778,   // imageSize_00y
+    779,   // isinf_00B
+    781,   // imageSize_00z
+    782,   // distance_20B20B
+    784,   // textureGrad_00U20B10B10B
+    786,   // uaddCarry_30E30E30E
+    788,   // mod_30B00B
+    790,   // texture_00K20B00B
+    792,   // gl_MaxCombinedImageUniforms
+    794,   // yuv_2_rgb_20B00H
+    795,   // textureGather_00f20B00B
+    797,   // greaterThan_20E20E
+    799,   // textureGrad_00a20B10B10B
+    801,   // textureOffset_00U20B10D00B
+    803,   // intBitsToFloat_10D
+    805,   // texture_00J20B00B
+    807,   // refract_20B20B00B
+    809,   // textureProjLod_00I30B00B
+    811,   // refract_00B00B00B
+    813,   // findLSB_10D
+    815,   // findLSB_10E
+    817,   // mix_10B10B10F
+    819,   // mix_10B10B10B
+    821,   // textureProj_00Y30B00B
+    823,   // texture3D_00J20B
+    824,   // transpose_D0B
+    826,   // log2_30B
+    828,   // textureGrad_00J20B20B20B
+    830,   // textureProjGrad_00d30B10B10B
+    832,   // fract_30B
+    834,   // gl_LocalInvocationIndex
+    836,   // textureSize_00J00D
+    838,   // textureGatherOffset_00I10B10D00D
+    840,   // textureGather_00X10B00D
+    842,   // texelFetchOffset_00U20D00D10D
+    844,   // textureProjLodOffset_00Y30B00B20D
+    846,   // textureSize_00e00D
+    848,   // notEqual_20E20E
+    850,   // textureLodOffset_00d20B00B10D
+    852,   // inverse_A0B
+    854,   // imageStore_01E20D30B
+    855,   // textureProjGrad_00X20B10B10B
+    857,   // max_30E30E
+    859,   // isnan_30B
+    861,   // imulExtended_00D00D00D00D
+    863,   // gl_in
+    864,   // atan_20B20B
+    866,   // usubBorrow_00E00E00E
+    868,   // textureProjLodOffset_00J30B00B20D
+    870,   // frexp_30B30D
+    872,   // gl_SecondaryFragDataEXT
+    873,   // min_30E30E
+    875,   // texture2DProj_00I30B00B
+    877,   // textureCubeGradEXT_00K20B20B20B
+    878,   // texture_00I10B
+    880,   // min_00B00B
+    882,   // gl_InstanceID
+    884,   // texelFetch_00c20D00D
+    885,   // gl_MaxVertexImageUniforms
+    887,   // sqrt_00B
+    889,   // normalize_20B
+    891,   // gl_MaxFragmentAtomicCounterBuffers
+    893,   // gl_WorkGroupID
+    895,   // degrees_00B
+    897,   // inverse_F0B
+    899,   // min_20E00E
+    901,   // textureProjLod_00R30B00B
+    903,   // textureSize_00P
+    906,   // textureGradOffset_00d20B10B10B10D
+    908,   // textureProjLodOffset_00R30B00B10D
+    910,   // atan_00B
+    912,   // atomicExchange_00D00D
+    914,   // textureGatherOffset_00R10B10D00D
+    916,   // imageStore_00y10D30B
+    917,   // gl_MaxGeometryAtomicCounters
+    918,   // texture2D_00I10B00B
+    920,   // textureProj_00X20B00B
+    922,   // clamp_20D20D20D
+    924,   // greaterThan_30E30E
+    926,   // frexp_10B10D
+    928,   // max_10E00E
+    930,   // smoothstep_00B00B10B
+    932,   // gl_GlobalInvocationID
+    934,   // matrixCompMult_60B60B
+    935,   // memoryBarrierShared_
+    937,   // normalize_10B
+    939,   // unpackSnorm2x16_00E
+    941,   // imageLoad_00z10D
+    942,   // lessThan_30D30D
+    944,   // atan_00B00B
+    946,   // bitfieldExtract_20D00D00D
+    948,   // texture_00L20B00B
+    950,   // notEqual_10B10B
+    952,   // imageLoad_01G20D
+    953,   // bitfieldExtract_00E00D00D
+    955,   // atomicCompSwap_00D00D00D
+    957,   // trunc_30B
+    959,   // matrixCompMult_E0BE0B
+    960,   // length_00B
+    962,   // any_20F
+    964,   // memoryBarrier_
+    966,   // gl_PerVertex
+    967,   // textureProj_00X30B00B
+    969,   // atomicMax_00D00D
+    971,   // gl_ViewID_OVR
+    972,   // floor_10B
+    974,   // sin_10B
+    976,   // textureSize_00N00D
+    977,   // texelFetchOffset_00J20D00D20D
+    979,   // tan_00B
+    981,   // mod_20B20B
+    983,   // imageLoad_01J20D
+    984,   // gl_WorkGroupSize
+    986,   // asinh_30B
+    988,   // outerProduct_10B30B
+    990,   // textureCube_00K20B
+    992,   // textureSize_00c
+    993,   // textureSize_00b
+    996,   // cos_00B
+    998,   // min_20B20B
+    1000,  // textureGradOffset_00f30B10B10B10D
+    1002,  // max_20D20D
+    1004,  // textureProj_00I30B
+    1006,  // max_10D10D
+    1008,  // textureOffset_00a20B10D00B
+    1010,  // textureGather_00X10B
+    1012,  // pow_30B30B
+    1014,  // textureGather_00a20B
+    1016,  // smoothstep_10B10B10B
+    1018,  // textureProj_00O30B
+    1019,  // textureGatherOffset_00d10B00B10D
+    1021,  // refract_30B30B00B
+    1023,  // bitfieldInsert_20E20E00D00D
+    1025,  // floor_20B
+    1027,  // equal_20E20E
+    1029,  // mix_00B00B00B
+    1031,  // imageSize_01B
+    1032,  // greaterThanEqual_20B20B
+    1034,  // uaddCarry_00E00E00E
+    1036,  // sin_20B
+    1038,  // textureSize_00Q
+    1039,  // round_20B
+    1041,  // matrixCompMult_90B90B
+    1042,  // textureProjLod_00d30B00B
+    1044,  // textureSize_00W
+    1045,  // textureProjLod_00X20B00B
+    1047,  // gl_MaxCombinedAtomicCounterBuffers
+    1049,  // isnan_00B
+    1051,  // umulExtended_30E30E30E30E
+    1053,  // faceforward_30B30B30B
+    1055,  // textureGradOffset_00Y20B20B20B20D
+    1057,  // clamp_30E00E00E
+    1059,  // asin_00B
+    1061,  // ceil_00B
+    1063,  // texture3D_00J20B00B
+    1064,  // distance_00B00B
+    1066,  // texture_00a20B
+    1068,  // textureGatherOffset_00a20B10D
+    1070,  // textureGrad_00f30B10B10B
+    1072,  // texture2DProj_00I30B
+    1074,  // modf_20B20B
+    1076,  // textureGradOffset_00I10B10B10B10D
+    1078,  // notEqual_30E30E
+    1080,  // textureGather_00I10B
+    1082,  // lessThanEqual_10E10E
+    1084,  // inversesqrt_20B
+    1086,  // textureLodOffset_00J20B00B20D
+    1088,  // min_30D30D
+    1090,  // textureOffset_00R10B10D00B
+    1092,  // textureGrad_00e30B20B20B
+    1094,  // atomicAdd_00E00E
+    1096,  // gl_MaxGeometryInputComponents
+    1097,  // findMSB_30E
+    1099,  // findMSB_30D
+    1101,  // textureGrad_00X10B10B10B
+    1103,  // length_30B
+    1105,  // greaterThanEqual_30E30E
+    1107,  // fwidth_30B
+    1110,  // textureGrad_00K20B20B20B
+    1112,  // mix_20B20B20F
+    1114,  // texelFetch_00S20D00D
+    1116,  // textureGradOffset_00U20B10B10B10D
+    1118,  // mix_20B20B20B
+    1120,  // floatBitsToInt_10B
+    1122,  // max_10B00B
+    1124,  // textureGatherOffset_00L20B10D
+    1126,  // textureLod_00a20B00B
+    1128,  // any_10F
+    1130,  // textureProjGradOffset_00d30B10B10B10D
+    1132,  // textureProj_00N30B
+    1133,  // gl_MaxProgramTexelOffset
+    1135,  // exp2_30B
+    1137,  // texelFetchOffset_00L20D00D10D
+    1139,  // equal_30D30D
+    1141,  // texture3DProj_00J30B00B
+    1142,  // packSnorm2x16_10B
+    1144,  // floatBitsToUint_30B
+    1146,  // lessThanEqual_30D30D
+    1148,  // gl_MaxGeometryImageUniforms
+    1149,  // imageLoad_00y10D
+    1150,  // asinh_00B
+    1152,  // textureOffset_00R10B10D
+    1154,  // greaterThanEqual_10E10E
+    1156,  // textureProjGradOffset_00I30B10B10B10D
+    1158,  // textureGather_00Z20B
+    1160,  // textureOffset_00X10B10D
+    1162,  // cosh_30B
+    1164,  // textureOffset_00d20B10D00B
+    1166,  // texture_00R10B
+    1168,  // textureOffset_00S20B20D00B
+    1170,  // usubBorrow_30E30E30E
+    1172,  // radians_00B
+    1174,  // textureProjOffset_00R20B10D00B
+    1176,  // ldexp_30B30D
+    1178,  // max_30B00B
+    1180,  // min_20D20D
+    1182,  // step_10B10B
+    1184,  // gl_MaxDualSourceDrawBuffersEXT
+    1185,  // step_30B30B
+    1187,  // bitfieldReverse_10E
+    1189,  // bitfieldReverse_10D
+    1191,  // texture3DProj_00J30B
+    1192,  // matrixCompMult_B0BB0B
+    1193,  // lessThan_20E20E
+    1195,  // cross_20B20B
+    1197,  // all_10F
+    1199,  // clamp_20B00B00B
+    1201,  // tanh_20B
+    1203,  // dFdx_00B
+    1206,  // matrixCompMult_F0BF0B
+    1208,  // abs_00D
+    1210,  // abs_00B
+    1212,  // textureLod_00R10B00B
+    1214,  // step_20B20B
+    1216,  // gl_MaxFragmentAtomicCounters
+    1218,  // textureLodOffset_00U20B00B10D
+    1220,  // textureProj_00R20B00B
+    1222,  // faceforward_20B20B20B
+    1224,  // imageSize_01E
+    1225,  // acos_20B
+    1227,  // texelFetch_00X10D00D
+    1229,  // sinh_00B
+    1231,  // imageSize_01A
+    1232,  // texture2DLod_00I10B00B
+    1234,  // texelFetch_00b10D00D
+    1237,  // imageSize_01F
+    1238,  // gl_MaxAtomicCounterBufferSize
+    1240,  // max_20B20B
+    1242,  // textureGatherOffset_00f20B00B10D
+    1244,  // outerProduct_30B30B
+    1246,  // lessThanEqual_20E20E
+    1248,  // textureLod_00X10B00B
+    1250,  // exp_30B
+    1252,  // gl_BaseVertex
+    1253,  // imageSize_01D
+    1254,  // step_00B30B
+    1256,  // bitCount_10D
+    1258,  // equal_30E30E
+    1260,  // sign_00B
+    1262,  // log_00B
+    1264,  // textureLod_00Z20B00B
+    1266,  // sign_00D
+    1268,  // textureOffset_00Y20B20D
+    1270,  // transpose_60B
+    1272,  // findMSB_00D
+    1274,  // gl_MaxGeometryTotalOutputComponents
+    1275,  // acosh_30B
+    1277,  // findMSB_00E
+    1279,  // bitfieldExtract_20E00D00D
+    1281,  // uintBitsToFloat_20E
+    1283,  // unpackUnorm4x8_00E
+    1285,  // texture2DProj_00M20B
+    1286,  // texelFetchOffset_00X10D00D10D
+    1288,  // mod_10B10B
+    1290,  // texture_00d20B00B
+    1292,  // notEqual_10D10D
+    1294,  // texture2DProj_00M30B
+    1295,  // textureSize_00V
+    1298,  // packUnorm2x16_10B
+    1300,  // faceforward_00B00B00B
+    1302,  // umulExtended_20E20E20E20E
+    1304,  // textureOffset_00X10B10D00B
+    1306,  // cos_30B
+    1308,  // findLSB_30D
+    1310,  // findLSB_30E
+    1312,  // bitCount_20E
+    1314,  // gl_NumWorkGroups
+    1316,  // equal_20D20D
+    1318,  // textureProjOffset_00Y30B20D00B
+    1320,  // textureGatherOffset_00U20B10D
+    1322,  // faceforward_10B10B10B
+    1324,  // textureSize_00L00D
+    1326,  // gl_MaxComputeUniformComponents
+    1328,  // textureGather_00R10B00D
+    1330,  // memoryBarrierBuffer_
+    1332,  // textureSize_00Z00D
+    1334,  // textureGather_00U20B
+    1336,  // bitfieldExtract_30D00D00D
+    1338,  // min_10D00D
+    1340,  // imageStore_01H20D30B
+    1341,  // texelFetch_00Q20D00D
+    1342,  // max_20E00E
+    1344,  // textureProj_00S30B
+    1346,  // roundEven_00B
+    1348,  // texture2DLodEXT_00I10B00B
+    1349,  // dFdy_30B
+    1352,  // atanh_20B
+    1354,  // clamp_10E00E00E
+    1356,  // clamp_20D00D00D
+    1358,  // all_20F
+    1360,  // isinf_10B
+    1362,  // imageLoad_01C20D
+    1363,  // imageSize_01J
+    1364,  // imageSize_01H
+    1365,  // imageSize_01I
+    1366,  // packHalf2x16_10B
+    1368,  // texture2DProj_00I20B00B
+    1370,  // findLSB_00E
+    1372,  // findLSB_00D
+    1374,  // textureProjOffset_00X30B10D
+    1376,  // imageSize_01C
+    1377,  // greaterThanEqual_30B30B
+    1379,  // textureSize_00U00D
+    1381,  // textureGradOffset_00R10B10B10B10D
+    1383,  // imageSize_01G
+    1384,  // equal_30F30F
+    1386,  // bitfieldExtract_00D00D00D
+    1388,  // texture2DProjLodEXT_00I20B00B
+    1389,  // notEqual_30F30F
+    1391,  // gl_FrontFacing
+    1393,  // gl_SecondaryFragColorEXT
+    1394,  // inversesqrt_10B
+    1396,  // imageStore_01C20D30D
+    1397,  // acos_10B
+    1399,  // abs_30D
+    1401,  // gl_MaxFragmentUniformVectors
+    1403,  // fract_20B
+    1405,  // abs_30B
+    1407,  // lessThan_10B10B
+    1409,  // textureGatherOffset_00X10B10D
+    1411,  // bitfieldInsert_10E10E00D00D
+    1413,  // packSnorm4x8_30B
+    1415,  // mix_10B10B00B
+    1417,  // imageLoad_01E20D
+    1418,  // clamp_30D30D30D
+    1420,  // textureGather_00U20B00D
+    1422,  // textureSize_00f00D
+    1424,  // textureProj_00N20B00B
+    1425,  // gl_FragData
+    1427,  // imageLoad_01B20D
+    1428,  // textureProj_00d30B00B
+    1430,  // clamp_20E00E00E
+    1432,  // texture_00X10B
+    1434,  // textureProj_00d30B
+    1436,  // mix_30B30B30F
+    1438,  // determinant_F0B
+    1439,  // transpose_A0B
+    1441,  // pow_20B20B
+    1443,  // texture2DProjGradEXT_00I20B10B10B
+    1444,  // gl_LastFragColorARM
+    1445,  // textureGather_00Z20B00D
+    1447,  // textureGather_00R10B
+    1449,  // lessThanEqual_20D20D
+    1451,  // textureLod_00S20B00B
+    1453,  // textureProjLod_00Y30B00B
+    1455,  // cosh_10B
+    1457,  // sqrt_30B
+    1459,  // gl_VertexID
+    1461,  // sign_10D
+    1463,  // textureProj_00M30B
+    1464,  // exp_00B
+    1466,  // min_00E00E
+    1468,  // max_30D30D
+    1470,  // umulExtended_00E00E00E00E
+    1472,  // gl_MaxVertexAttribs
+    1474,  // gl_BaseInstance
+    1475,  // transpose_B0B
+    1477,  // fwidth_20B
+    1480,  // Empty
+    1480,  // smoothstep_00B00B30B
+    1482,  // floatBitsToInt_20B
+    1484,  // textureSize_00M00D
+    1485,  // log2_20B
+    1487,  // ldexp_10B10D
+    1489,  // min_10B00B
+    1491,  // mix_30B30B00B
+    1493,  // angle_BaseInstance
+    1494,  // degrees_10B
+    1496,  // gl_MaxTextureImageUnits
+    1498,  // gl_Position
+    1501,  // texture_00K20B
+    1503,  // atomicCompSwap_00E00E00E
+    1505,  // textureProjOffset_00Y30B20D
+    1507,  // sinh_10B
+    1509,  // atan_30B
+    1511,  // textureGradOffset_00L20B10B10B10D
+    1513,  // ceil_10B
+    1515,  // textureSize_00S00D
+    1517,  // imageStore_01D20D30E
+    1518,  // greaterThanEqual_10B10B
+    1520,  // atomicCounterDecrement_00G
+    1522,  // textureCube_00K20B00B
+    1524,  // dot_20B20B
+    1526,  // transpose_90B
+    1528,  // not_30F
+    1530,  // textureProjLodOffset_00I20B00B10D
+    1532,  // notEqual_10F10F
+    1534,  // textureProjGrad_00R20B10B10B
+    1536,  // texture_00f30B
+    1538,  // smoothstep_00B00B00B
+    1540,  // textureProjLodOffset_00d30B00B10D
+    1542,  // texelFetch_00R10D00D
+    1544,  // cosh_20B
+    1546,  // textureProjLodOffset_00I30B00B10D
+    1548,  // normalize_30B
+    1550,  // smoothstep_30B30B30B
+    1552,  // bitfieldInsert_10D10D00D00D
+    1554,  // clamp_20B20B20B
+    1556,  // textureGrad_00L20B10B10B
+    1558,  // textureGrad_00R10B10B10B
+    1560,  // textureProjGrad_00I20B10B10B
+    1562,  // textureGather_00e20B
+    1563,  // texture2D_00M10B
+    1564,  // min_00D00D
+    1566,  // outerProduct_10B10B
+    1568,  // lessThanEqual_10D10D
+    1570,  // trunc_20B
+    1572,  // gl_MaxVaryingVectors
+    1574,  // textureProjOffset_00I30B10D00B
+    1576,  // textureSize_00d00D
+    1578,  // sin_00B
+    1580,  // gl_MaxVertexUniformVectors
+    1582,  // textureCubeLodEXT_00K20B00B
+    1583,  // textureGather_00T20B00D
+    1585,  // textureProj_00N20B
+    1586,  // uaddCarry_10E10E10E
+    1588,  // tan_10B
+    1590,  // textureLodOffset_00L20B00B10D
+    1592,  // atomicCounterIncrement_00G
+    1594,  // ldexp_20B20D
+    1596,  // greaterThanEqual_30D30D
+    1598,  // notEqual_20B20B
+    1600,  // imageLoad_01D20D
+    1601,  // textureProjLodOffset_00X30B00B10D
+    1603,  // isinf_20B
+    1605,  // cos_10B
+    1607,  // mix_30B30B30B
+    1609,  // texture_00e30B
+    1611,  // textureSize_00T00D
+    1613,  // textureGatherOffset_00X10B10D00D
+    1615,  // equal_10E10E
+    1617,  // min_10E10E
+    1619,  // textureProjGradOffset_00Y30B20B20B20D
+    1621,  // textureGrad_00T20B20B20B
+    1623,  // memoryBarrierImage_
+    1625,  // textureProjOffset_00J30B20D
+    1627,  // EmitVertex_
+    1628,  // textureProjOffset_00d30B10D00B
+    1630,  // round_10B
+    1632,  // textureProjOffset_00d30B10D
+    1634,  // notEqual_10E10E
+    1636,  // textureProj_00R30B
+    1638,  // matrixCompMult_50B50B
+    1640,  // equal_20F20F
+    1642,  // gl_MaxFragmentInputVectors
+    1644,  // equal_30B30B
+    1646,  // textureLod_00U20B00B
+    1648,  // usubBorrow_10E10E10E
+    1650,  // equal_10B10B
+    1652,  // textureProjGradOffset_00I20B10B10B10D
+    1654,  // texture2DProjLod_00I30B00B
+    1656,  // isnan_10B
+    1658,  // uaddCarry_20E20E20E
+    1660,  // max_10B10B
+    1662,  // atomicMax_00E00E
+    1664,  // gl_PointSize
+    1666,  // atomicMin_00D00D
+    1668,  // textureSize_00X00D
+    1670,  // greaterThan_10B10B
+    1672,  // asin_10B
+    1674,  // textureGather_00d10B00B
+    1676,  // trunc_10B
+    1678,  // gl_MaxComputeAtomicCounters
+    1680,  // textureProj_00X30B
+    1682,  // gl_MaxVertexAtomicCounters
+    1684,  // length_20B
+    1686,  // bitfieldInsert_30E30E00D00D
+    1688,  // textureOffset_00S20B20D
+    1690,  // textureProjOffset_00X20B10D
+    1692,  // clamp_30D00D00D
+    1694,  // clamp_10B00B00B
+    1696,  // textureProj_00R20B
+    1698,  // imageStore_01F20D30D
+    1699,  // textureProj_00I20B00B
+    1701,  // greaterThan_10E10E
+    1703,  // textureProjOffset_00R30B10D00B
+    1705,  // dFdy_00B
+    1708,  // min_30D00D
+    1710,  // floatBitsToInt_00B
+    1712,  // sign_10B
+    1714,  // max_00E00E
+    1716,  // texture_00a20B00B
+    1718,  // texture_00M10B00B
+    1719,  // smoothstep_20B20B20B
+    1721,  // textureCubeLod_00K20B00B
+    1723,  // textureOffset_00J20B20D
+    1725,  // texelFetch_00J20D00D
+    1727,  // textureProj_00M20B00B
+    1728,  // floatBitsToUint_00B
+    1730,  // textureProjGradOffset_00R30B10B10B10D
+    1732,  // textureLod_00K20B00B
+    1734,  // textureProjOffset_00X30B10D00B
+    1736,  // cos_20B
+    1738,  // exp2_00B
+    1740,  // radians_30B
+    1742,  // texture2DRectProj_00O20B
+    1743,  // tan_20B
+    1745,  // textureGather_00T20B
+    1747,  // textureGather_00a20B00D
+    1749,  // textureProjGradOffset_00J30B20B20B20D
+    1751,  // asinh_10B
+    1753,  // textureProjGrad_00X30B10B10B
+    1755,  // floor_00B
+    1757,  // gl_DrawID
+    1758,  // atomicOr_00D00D
+    1760,  // texture3DLod_00J20B00B
+};
+
+using Ext = TExtension;
+
+// Flat array of all unmangled name identifiers.
 constexpr UnmangledEntry unmangled[] = {
-    UnmangledEntry(ImmutableString("all"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProj"),
-                   &UnmangledBuiltIns::OES_EGL_image_external_essl3,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackUnorm4x8"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("fwidth"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("rgb_2_yuv"),
-                   &UnmangledBuiltIns::EXT_YUV_target,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounterIncrement"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("yuv_2_rgb"),
-                   &UnmangledBuiltIns::EXT_YUV_target,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("findLSB"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureCubeGradEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("memoryBarrierImage"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packSnorm4x8"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("inverse"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   140,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureCubeLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("texture"),
-                   &UnmangledBuiltIns::OES_EGL_image_external_essl3,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("frexp"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("degrees"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imulExtended"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DProjGradEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicAnd"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjGradOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("roundEven"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DProjLodEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("memoryBarrierAtomicCounter"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("ceil"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("not"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DRectProj"),
-                   &UnmangledBuiltIns::ARB_texture_rectangle,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("mod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("floatBitsToInt"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   330,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("radians"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("smoothstep"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjGrad"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("lessThan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("dFdy"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("modf"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackSnorm4x8"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("round"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("clamp"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("findMSB"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DRect"),
-                   &UnmangledBuiltIns::ARB_texture_rectangle,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("acosh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("cosh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("uaddCarry"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("asin"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("isnan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicMax"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("bitfieldReverse"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("dFdx"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("memoryBarrierShared"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::COMPUTE),
-    UnmangledEntry(ImmutableString("texture3DLod"),
-                   &UnmangledBuiltIns::OES_texture_3D,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("textureLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("faceforward"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("abs"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("max"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackSnorm2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("log2"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureGrad"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("barrier"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::COMPUTE),
-    UnmangledEntry(ImmutableString("texture2DProj"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("atomicCounterDecrement"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("lessThanEqual"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("transpose"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   120,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("step"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("sinh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("trunc"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("cos"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("equal"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DLodEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("usubBorrow"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texelFetchOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("length"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureSize"),
-                   &UnmangledBuiltIns::OES_EGL_image_external_essl3,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("acos"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("uintBitsToFloat"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   330,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packUnorm2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackHalf2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("matrixCompMult"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("pow"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicExchange"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DProjLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("ldexp"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("floatBitsToUint"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   330,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureCubeLodEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("imageStore"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureGatherOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjLodOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("log"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("bitCount"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("exp2"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCompSwap"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("fract"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("EmitVertex"),
-                   &UnmangledBuiltIns::EXT_geometry_shader,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   -1,
-                   Shader::GEOMETRY_EXT),
-    UnmangledEntry(ImmutableString("determinant"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureGather"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("greaterThanEqual"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("greaterThan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("bitfieldInsert"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture3DProj"),
-                   &UnmangledBuiltIns::OES_texture_3D,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("packUnorm4x8"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("sign"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("inversesqrt"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("distance"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("tanh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DGradEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("memoryBarrier"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounter"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("intBitsToFloat"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   330,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("bitfieldExtract"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture3DProjLod"),
-                   &UnmangledBuiltIns::OES_texture_3D,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("atomicAdd"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("asinh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2D"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("memoryBarrierBuffer"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("tan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("any"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicXor"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("normalize"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageLoad"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("floor"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureLodOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atanh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("cross"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("sqrt"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("mix"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("sin"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureGradOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackUnorm2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("reflect"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("isinf"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture3D"),
-                   &UnmangledBuiltIns::OES_texture_3D,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("umulExtended"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicOr"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texelFetch"),
-                   &UnmangledBuiltIns::OES_EGL_image_external_essl3,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("EndPrimitive"),
-                   &UnmangledBuiltIns::EXT_geometry_shader,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   -1,
-                   Shader::GEOMETRY_EXT),
-    UnmangledEntry(ImmutableString("notEqual"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("outerProduct"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   120,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageSize"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("refract"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("min"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureCube"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packSnorm2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("exp"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("groupMemoryBarrier"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::COMPUTE),
-    UnmangledEntry(ImmutableString("atomicMin"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packHalf2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("dot"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL)};
+    {"all", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"textureProj", Ext::OES_EGL_image_external_essl3, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"unpackUnorm4x8", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"fwidth", Ext::UNDEFINED, Ext::UNDEFINED, 300, 0, Shader::FRAGMENT},
+    {"rgb_2_yuv", Ext::EXT_YUV_target, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"atomicCounterIncrement", Ext::UNDEFINED, Ext::UNDEFINED, 310, 420, Shader::ALL},
+    {"yuv_2_rgb", Ext::EXT_YUV_target, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"findLSB", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"textureCubeGradEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"memoryBarrierImage", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"packSnorm4x8", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"inverse", Ext::UNDEFINED, Ext::UNDEFINED, 300, 140, Shader::ALL},
+    {"textureCubeLod", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::VERTEX},
+    {"texture", Ext::OES_EGL_image_external_essl3, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"frexp", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"degrees", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"imulExtended", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texture2DProjGradEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"atomicAnd", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"textureProjGradOffset", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"roundEven", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"texture2DProjLodEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"memoryBarrierAtomicCounter", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"ceil", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"not", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"texture2DRectProj", Ext::ARB_texture_rectangle, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"mod", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"floatBitsToInt", Ext::UNDEFINED, Ext::UNDEFINED, 300, 330, Shader::ALL},
+    {"radians", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"smoothstep", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"textureProjGrad", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"lessThan", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"dFdy", Ext::UNDEFINED, Ext::UNDEFINED, 300, 0, Shader::FRAGMENT},
+    {"modf", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"unpackSnorm4x8", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"round", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"textureOffset", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"clamp", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"findMSB", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texture2DRect", Ext::ARB_texture_rectangle, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"acosh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"cosh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"uaddCarry", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"asin", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"isnan", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"atomicMax", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"bitfieldReverse", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"dFdx", Ext::UNDEFINED, Ext::UNDEFINED, 300, 0, Shader::FRAGMENT},
+    {"memoryBarrierShared", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::COMPUTE},
+    {"texture3DLod", Ext::OES_texture_3D, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"textureLod", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"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},
+    {"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},
+    {"barrier", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::COMPUTE},
+    {"texture2DProj", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::FRAGMENT},
+    {"atomicCounterDecrement", Ext::UNDEFINED, Ext::UNDEFINED, 310, 420, Shader::ALL},
+    {"lessThanEqual", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"transpose", Ext::UNDEFINED, Ext::UNDEFINED, 300, 120, Shader::ALL},
+    {"step", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"sinh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"textureProjOffset", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"trunc", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"cos", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"equal", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"texture2DLodEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"usubBorrow", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texelFetchOffset", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"length", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"textureSize", Ext::OES_EGL_image_external_essl3, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"acos", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"uintBitsToFloat", Ext::UNDEFINED, Ext::UNDEFINED, 300, 330, Shader::ALL},
+    {"packUnorm2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 400, Shader::ALL},
+    {"unpackHalf2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 420, Shader::ALL},
+    {"matrixCompMult", Ext::UNDEFINED, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"pow", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"texture2DProjLod", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::VERTEX},
+    {"ldexp", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"floatBitsToUint", Ext::UNDEFINED, Ext::UNDEFINED, 300, 330, Shader::ALL},
+    {"textureProjLod", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"textureCubeLodEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"imageStore", Ext::UNDEFINED, Ext::UNDEFINED, 310, -1, Shader::ALL},
+    {"textureGatherOffset", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"textureProjLodOffset", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"log", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"bitCount", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"exp2", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"atomicCompSwap", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"fract", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"EmitVertex", Ext::EXT_geometry_shader, Ext::UNDEFINED, 310, -1, Shader::GEOMETRY_EXT},
+    {"determinant", Ext::UNDEFINED, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"textureGather", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"greaterThanEqual", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"greaterThan", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"bitfieldInsert", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texture3DProj", Ext::OES_texture_3D, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"packUnorm4x8", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"sign", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"inversesqrt", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"distance", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"tanh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"texture2DGradEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"memoryBarrier", Ext::UNDEFINED, Ext::UNDEFINED, 310, 420, Shader::ALL},
+    {"atomicCounter", Ext::UNDEFINED, Ext::UNDEFINED, 310, 420, Shader::ALL},
+    {"intBitsToFloat", Ext::UNDEFINED, Ext::UNDEFINED, 300, 330, Shader::ALL},
+    {"bitfieldExtract", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texture3DProjLod", Ext::OES_texture_3D, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"atomicAdd", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"asinh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"texture2D", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::FRAGMENT},
+    {"memoryBarrierBuffer", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"tan", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"any", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"atomicXor", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"normalize", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"imageLoad", Ext::UNDEFINED, Ext::UNDEFINED, 310, -1, Shader::ALL},
+    {"floor", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"textureLodOffset", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"atanh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"cross", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"sqrt", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"mix", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"sin", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"atomicExchange", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"textureGradOffset", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"atan", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"unpackUnorm2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 400, Shader::ALL},
+    {"reflect", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"isinf", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"texture3D", Ext::OES_texture_3D, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"umulExtended", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"atomicOr", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"texelFetch", Ext::OES_EGL_image_external_essl3, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"EndPrimitive", Ext::EXT_geometry_shader, Ext::UNDEFINED, 310, -1, Shader::GEOMETRY_EXT},
+    {"notEqual", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"outerProduct", Ext::UNDEFINED, Ext::UNDEFINED, 300, 120, Shader::ALL},
+    {"imageSize", Ext::UNDEFINED, Ext::UNDEFINED, 310, -1, Shader::ALL},
+    {"refract", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"min", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"textureCube", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::ALL},
+    {"packSnorm2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 420, Shader::ALL},
+    {"exp", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"groupMemoryBarrier", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::COMPUTE},
+    {"atomicMin", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"packHalf2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 420, Shader::ALL},
+    {"texture2DLod", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::VERTEX},
+    {"dot", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL}};
 
 }  // namespace BuiltInArray
 
@@ -26379,184 +13820,181 @@
     TStructure *gl_DepthRangeParameters =
         new TStructure(BuiltInId::gl_DepthRangeParameters, BuiltInName::gl_DepthRangeParameters,
                        TExtension::UNDEFINED, fields_gl_DepthRangeParameters);
-    mVar_gl_DepthRangeParameters = gl_DepthRangeParameters;
-    TType *type_gl_DepthRange    = new TType(gl_DepthRangeParameters, false);
+    m_gl_DepthRangeParameters = gl_DepthRangeParameters;
+    TType *type_gl_DepthRange = new TType(gl_DepthRangeParameters, false);
     type_gl_DepthRange->setQualifier(EvqUniform);
     type_gl_DepthRange->realize();
-    mVar_gl_DepthRange =
-        new TVariable(BuiltInId::gl_DepthRange, BuiltInName::gl_DepthRange, SymbolType::BuiltIn,
-                      TExtension::UNDEFINED, type_gl_DepthRange);
-    mVar_gl_MaxVertexAttribs = new TVariable(
+    m_gl_DepthRange       = new TVariable(BuiltInId::gl_DepthRange, BuiltInName::gl_DepthRange,
+                                    SymbolType::BuiltIn, TExtension::UNDEFINED, type_gl_DepthRange);
+    m_gl_MaxVertexAttribs = new TVariable(
         BuiltInId::gl_MaxVertexAttribs, BuiltInName::gl_MaxVertexAttribs, SymbolType::BuiltIn,
         TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexAttribs);
-        static_cast<TVariable *>(mVar_gl_MaxVertexAttribs)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexAttribs)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexUniformVectors =
+    m_gl_MaxVertexUniformVectors =
         new TVariable(BuiltInId::gl_MaxVertexUniformVectors,
                       BuiltInName::gl_MaxVertexUniformVectors, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexUniformVectors);
-        static_cast<TVariable *>(mVar_gl_MaxVertexUniformVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexUniformVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexTextureImageUnits =
+    m_gl_MaxVertexTextureImageUnits =
         new TVariable(BuiltInId::gl_MaxVertexTextureImageUnits,
                       BuiltInName::gl_MaxVertexTextureImageUnits, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxVertexTextureImageUnits)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedTextureImageUnits =
+    m_gl_MaxCombinedTextureImageUnits =
         new TVariable(BuiltInId::gl_MaxCombinedTextureImageUnits,
                       BuiltInName::gl_MaxCombinedTextureImageUnits, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedTextureImageUnits)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxCombinedTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxTextureImageUnits =
+    m_gl_MaxTextureImageUnits =
         new TVariable(BuiltInId::gl_MaxTextureImageUnits, BuiltInName::gl_MaxTextureImageUnits,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxTextureImageUnits)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentUniformVectors =
+    m_gl_MaxFragmentUniformVectors =
         new TVariable(BuiltInId::gl_MaxFragmentUniformVectors,
                       BuiltInName::gl_MaxFragmentUniformVectors, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentUniformVectors);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentUniformVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxFragmentUniformVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVaryingVectors = new TVariable(
+    m_gl_MaxVaryingVectors = new TVariable(
         BuiltInId::gl_MaxVaryingVectors, BuiltInName::gl_MaxVaryingVectors, SymbolType::BuiltIn,
         TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVaryingVectors);
-        static_cast<TVariable *>(mVar_gl_MaxVaryingVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVaryingVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxDrawBuffers = new TVariable(
+    m_gl_MaxDrawBuffers = new TVariable(
         BuiltInId::gl_MaxDrawBuffers, BuiltInName::gl_MaxDrawBuffers, SymbolType::BuiltIn,
         TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxDrawBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxDrawBuffers)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxDrawBuffers)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxDualSourceDrawBuffersEXT = new TVariable(
+    m_gl_MaxDualSourceDrawBuffersEXT = new TVariable(
         BuiltInId::gl_MaxDualSourceDrawBuffersEXT, BuiltInName::gl_MaxDualSourceDrawBuffersEXT,
         SymbolType::BuiltIn, TExtension::EXT_blend_func_extended,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxDualSourceDrawBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxDualSourceDrawBuffersEXT)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxDualSourceDrawBuffersEXT)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexOutputVectors =
+    m_gl_MaxVertexOutputVectors =
         new TVariable(BuiltInId::gl_MaxVertexOutputVectors, BuiltInName::gl_MaxVertexOutputVectors,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexOutputVectors);
-        static_cast<TVariable *>(mVar_gl_MaxVertexOutputVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexOutputVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentInputVectors =
+    m_gl_MaxFragmentInputVectors =
         new TVariable(BuiltInId::gl_MaxFragmentInputVectors,
                       BuiltInName::gl_MaxFragmentInputVectors, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentInputVectors);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentInputVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxFragmentInputVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MinProgramTexelOffset =
+    m_gl_MinProgramTexelOffset =
         new TVariable(BuiltInId::gl_MinProgramTexelOffset, BuiltInName::gl_MinProgramTexelOffset,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MinProgramTexelOffset);
-        static_cast<TVariable *>(mVar_gl_MinProgramTexelOffset)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MinProgramTexelOffset)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxProgramTexelOffset =
+    m_gl_MaxProgramTexelOffset =
         new TVariable(BuiltInId::gl_MaxProgramTexelOffset, BuiltInName::gl_MaxProgramTexelOffset,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxProgramTexelOffset);
-        static_cast<TVariable *>(mVar_gl_MaxProgramTexelOffset)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxProgramTexelOffset)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxImageUnits = new TVariable(
-        BuiltInId::gl_MaxImageUnits, BuiltInName::gl_MaxImageUnits, SymbolType::BuiltIn,
-        TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
+    m_gl_MaxImageUnits = new TVariable(BuiltInId::gl_MaxImageUnits, BuiltInName::gl_MaxImageUnits,
+                                       SymbolType::BuiltIn, TExtension::UNDEFINED,
+                                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxImageUnits)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexImageUniforms =
+    m_gl_MaxVertexImageUniforms =
         new TVariable(BuiltInId::gl_MaxVertexImageUniforms, BuiltInName::gl_MaxVertexImageUniforms,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxVertexImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentImageUniforms =
+    m_gl_MaxFragmentImageUniforms =
         new TVariable(BuiltInId::gl_MaxFragmentImageUniforms,
                       BuiltInName::gl_MaxFragmentImageUniforms, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxFragmentImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeImageUniforms =
+    m_gl_MaxComputeImageUniforms =
         new TVariable(BuiltInId::gl_MaxComputeImageUniforms,
                       BuiltInName::gl_MaxComputeImageUniforms, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxComputeImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedImageUniforms =
+    m_gl_MaxCombinedImageUniforms =
         new TVariable(BuiltInId::gl_MaxCombinedImageUniforms,
                       BuiltInName::gl_MaxCombinedImageUniforms, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxCombinedImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedShaderOutputResources =
+    m_gl_MaxCombinedShaderOutputResources =
         new TVariable(BuiltInId::gl_MaxCombinedShaderOutputResources,
                       BuiltInName::gl_MaxCombinedShaderOutputResources, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedShaderOutputResources);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedShaderOutputResources)
+        static_cast<TVariable *>(m_gl_MaxCombinedShaderOutputResources)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeWorkGroupCount =
+    m_gl_MaxComputeWorkGroupCount =
         new TVariable(BuiltInId::gl_MaxComputeWorkGroupCount,
                       BuiltInName::gl_MaxComputeWorkGroupCount, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpHigh, EvqConst, 3, 1>());
@@ -26566,9 +14004,9 @@
         {
             unionArray[index].setIConst(resources.MaxComputeWorkGroupCount[index]);
         }
-        static_cast<TVariable *>(mVar_gl_MaxComputeWorkGroupCount)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeWorkGroupCount)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeWorkGroupSize =
+    m_gl_MaxComputeWorkGroupSize =
         new TVariable(BuiltInId::gl_MaxComputeWorkGroupSize,
                       BuiltInName::gl_MaxComputeWorkGroupSize, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpHigh, EvqConst, 3, 1>());
@@ -26578,206 +14016,200 @@
         {
             unionArray[index].setIConst(resources.MaxComputeWorkGroupSize[index]);
         }
-        static_cast<TVariable *>(mVar_gl_MaxComputeWorkGroupSize)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeWorkGroupSize)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeUniformComponents =
+    m_gl_MaxComputeUniformComponents =
         new TVariable(BuiltInId::gl_MaxComputeUniformComponents,
                       BuiltInName::gl_MaxComputeUniformComponents, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeUniformComponents);
-        static_cast<TVariable *>(mVar_gl_MaxComputeUniformComponents)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeUniformComponents)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeTextureImageUnits =
+    m_gl_MaxComputeTextureImageUnits =
         new TVariable(BuiltInId::gl_MaxComputeTextureImageUnits,
                       BuiltInName::gl_MaxComputeTextureImageUnits, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxComputeTextureImageUnits)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeAtomicCounters =
+    m_gl_MaxComputeAtomicCounters =
         new TVariable(BuiltInId::gl_MaxComputeAtomicCounters,
                       BuiltInName::gl_MaxComputeAtomicCounters, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxComputeAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeAtomicCounterBuffers =
+    m_gl_MaxComputeAtomicCounterBuffers =
         new TVariable(BuiltInId::gl_MaxComputeAtomicCounterBuffers,
                       BuiltInName::gl_MaxComputeAtomicCounterBuffers, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxComputeAtomicCounterBuffers)
+        static_cast<TVariable *>(m_gl_MaxComputeAtomicCounterBuffers)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexAtomicCounters =
+    m_gl_MaxVertexAtomicCounters =
         new TVariable(BuiltInId::gl_MaxVertexAtomicCounters,
                       BuiltInName::gl_MaxVertexAtomicCounters, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxVertexAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentAtomicCounters =
+    m_gl_MaxFragmentAtomicCounters =
         new TVariable(BuiltInId::gl_MaxFragmentAtomicCounters,
                       BuiltInName::gl_MaxFragmentAtomicCounters, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxFragmentAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedAtomicCounters =
+    m_gl_MaxCombinedAtomicCounters =
         new TVariable(BuiltInId::gl_MaxCombinedAtomicCounters,
                       BuiltInName::gl_MaxCombinedAtomicCounters, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxCombinedAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxAtomicCounterBindings =
+    m_gl_MaxAtomicCounterBindings =
         new TVariable(BuiltInId::gl_MaxAtomicCounterBindings,
                       BuiltInName::gl_MaxAtomicCounterBindings, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxAtomicCounterBindings);
-        static_cast<TVariable *>(mVar_gl_MaxAtomicCounterBindings)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxAtomicCounterBindings)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexAtomicCounterBuffers =
+    m_gl_MaxVertexAtomicCounterBuffers =
         new TVariable(BuiltInId::gl_MaxVertexAtomicCounterBuffers,
                       BuiltInName::gl_MaxVertexAtomicCounterBuffers, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxVertexAtomicCounterBuffers)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexAtomicCounterBuffers)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentAtomicCounterBuffers =
+    m_gl_MaxFragmentAtomicCounterBuffers =
         new TVariable(BuiltInId::gl_MaxFragmentAtomicCounterBuffers,
                       BuiltInName::gl_MaxFragmentAtomicCounterBuffers, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentAtomicCounterBuffers)
+        static_cast<TVariable *>(m_gl_MaxFragmentAtomicCounterBuffers)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedAtomicCounterBuffers =
+    m_gl_MaxCombinedAtomicCounterBuffers =
         new TVariable(BuiltInId::gl_MaxCombinedAtomicCounterBuffers,
                       BuiltInName::gl_MaxCombinedAtomicCounterBuffers, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedAtomicCounterBuffers)
+        static_cast<TVariable *>(m_gl_MaxCombinedAtomicCounterBuffers)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxAtomicCounterBufferSize =
+    m_gl_MaxAtomicCounterBufferSize =
         new TVariable(BuiltInId::gl_MaxAtomicCounterBufferSize,
                       BuiltInName::gl_MaxAtomicCounterBufferSize, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxAtomicCounterBufferSize);
-        static_cast<TVariable *>(mVar_gl_MaxAtomicCounterBufferSize)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxAtomicCounterBufferSize)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryInputComponents = new TVariable(
+    m_gl_MaxGeometryInputComponents = new TVariable(
         BuiltInId::gl_MaxGeometryInputComponents, BuiltInName::gl_MaxGeometryInputComponents,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryInputComponents);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryInputComponents)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryInputComponents)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryOutputComponents = new TVariable(
+    m_gl_MaxGeometryOutputComponents = new TVariable(
         BuiltInId::gl_MaxGeometryOutputComponents, BuiltInName::gl_MaxGeometryOutputComponents,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryOutputComponents);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryOutputComponents)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryOutputComponents)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryImageUniforms = new TVariable(
+    m_gl_MaxGeometryImageUniforms = new TVariable(
         BuiltInId::gl_MaxGeometryImageUniforms, BuiltInName::gl_MaxGeometryImageUniforms,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryTextureImageUnits = new TVariable(
+    m_gl_MaxGeometryTextureImageUnits = new TVariable(
         BuiltInId::gl_MaxGeometryTextureImageUnits, BuiltInName::gl_MaxGeometryTextureImageUnits,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryTextureImageUnits)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryOutputVertices = new TVariable(
+    m_gl_MaxGeometryOutputVertices = new TVariable(
         BuiltInId::gl_MaxGeometryOutputVertices, BuiltInName::gl_MaxGeometryOutputVertices,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryOutputVertices);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryOutputVertices)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryOutputVertices)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryTotalOutputComponents = new TVariable(
+    m_gl_MaxGeometryTotalOutputComponents = new TVariable(
         BuiltInId::gl_MaxGeometryTotalOutputComponents,
         BuiltInName::gl_MaxGeometryTotalOutputComponents, SymbolType::BuiltIn,
         TExtension::EXT_geometry_shader, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryTotalOutputComponents);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryTotalOutputComponents)
+        static_cast<TVariable *>(m_gl_MaxGeometryTotalOutputComponents)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryUniformComponents = new TVariable(
+    m_gl_MaxGeometryUniformComponents = new TVariable(
         BuiltInId::gl_MaxGeometryUniformComponents, BuiltInName::gl_MaxGeometryUniformComponents,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryUniformComponents);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryUniformComponents)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryUniformComponents)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryAtomicCounters = new TVariable(
+    m_gl_MaxGeometryAtomicCounters = new TVariable(
         BuiltInId::gl_MaxGeometryAtomicCounters, BuiltInName::gl_MaxGeometryAtomicCounters,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryAtomicCounterBuffers = new TVariable(
+    m_gl_MaxGeometryAtomicCounterBuffers = new TVariable(
         BuiltInId::gl_MaxGeometryAtomicCounterBuffers,
         BuiltInName::gl_MaxGeometryAtomicCounterBuffers, SymbolType::BuiltIn,
         TExtension::EXT_geometry_shader, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryAtomicCounterBuffers)
+        static_cast<TVariable *>(m_gl_MaxGeometryAtomicCounterBuffers)
             ->shareConstPointer(unionArray);
     }
     TType *type_gl_FragData = new TType(EbtFloat, EbpMedium, EvqFragData, 4);
@@ -26790,31 +14222,31 @@
         type_gl_FragData->makeArray(1u);
     }
     type_gl_FragData->realize();
-    mVar_gl_FragData = new TVariable(BuiltInId::gl_FragData, BuiltInName::gl_FragData,
-                                     SymbolType::BuiltIn, TExtension::UNDEFINED, type_gl_FragData);
+    m_gl_FragData = new TVariable(BuiltInId::gl_FragData, BuiltInName::gl_FragData,
+                                  SymbolType::BuiltIn, TExtension::UNDEFINED, type_gl_FragData);
     TType *type_gl_SecondaryFragDataEXT =
         new TType(EbtFloat, EbpMedium, EvqSecondaryFragDataEXT, 4, 1);
     type_gl_SecondaryFragDataEXT->makeArray(resources.MaxDualSourceDrawBuffers);
     type_gl_SecondaryFragDataEXT->realize();
-    mVar_gl_SecondaryFragDataEXT = new TVariable(
+    m_gl_SecondaryFragDataEXT = new TVariable(
         BuiltInId::gl_SecondaryFragDataEXT, BuiltInName::gl_SecondaryFragDataEXT,
         SymbolType::BuiltIn, TExtension::EXT_blend_func_extended, type_gl_SecondaryFragDataEXT);
     TType *type_gl_FragDepthEXT = new TType(
         EbtFloat, resources.FragmentPrecisionHigh ? EbpHigh : EbpMedium, EvqFragDepthEXT, 1);
     type_gl_FragDepthEXT->realize();
-    mVar_gl_FragDepthEXT =
+    m_gl_FragDepthEXT =
         new TVariable(BuiltInId::gl_FragDepthEXT, BuiltInName::gl_FragDepthEXT, SymbolType::BuiltIn,
                       TExtension::EXT_frag_depth, type_gl_FragDepthEXT);
     TType *type_gl_LastFragData = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1);
     type_gl_LastFragData->makeArray(resources.MaxDrawBuffers);
     type_gl_LastFragData->realize();
-    mVar_gl_LastFragData =
+    m_gl_LastFragData =
         new TVariable(BuiltInId::gl_LastFragData, BuiltInName::gl_LastFragData, SymbolType::BuiltIn,
                       TExtension::EXT_shader_framebuffer_fetch, type_gl_LastFragData);
     TType *type_gl_LastFragDataNV = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1);
     type_gl_LastFragDataNV->makeArray(resources.MaxDrawBuffers);
     type_gl_LastFragDataNV->realize();
-    mVar_gl_LastFragDataNV = new TVariable(
+    m_gl_LastFragDataNV = new TVariable(
         BuiltInId::gl_LastFragDataNV, BuiltInName::gl_LastFragData, SymbolType::BuiltIn,
         TExtension::NV_shader_framebuffer_fetch, type_gl_LastFragDataNV);
     TFieldList *fields_gl_PerVertex = new TFieldList();
@@ -26824,12 +14256,12 @@
     TInterfaceBlock *gl_PerVertex =
         new TInterfaceBlock(BuiltInId::gl_PerVertex, BuiltInName::gl_PerVertex,
                             TExtension::EXT_geometry_shader, fields_gl_PerVertex);
-    mVar_gl_PerVertex = gl_PerVertex;
+    m_gl_PerVertex    = gl_PerVertex;
     TType *type_gl_in = new TType(gl_PerVertex, EvqPerVertexIn, TLayoutQualifier::Create());
     type_gl_in->makeArray(0u);
     type_gl_in->realize();
-    mVar_gl_in = new TVariable(BuiltInId::gl_in, BuiltInName::gl_in, SymbolType::BuiltIn,
-                               TExtension::EXT_geometry_shader, type_gl_in);
+    m_gl_in = new TVariable(BuiltInId::gl_in, BuiltInName::gl_in, SymbolType::BuiltIn,
+                            TExtension::EXT_geometry_shader, type_gl_in);
     TFieldList *fields_gl_PerVertexOutBlock = new TFieldList();
     fields_gl_PerVertexOutBlock->push_back(
         new TField(new TType(EbtFloat, EbpHigh, EvqPosition, 4, 1), BuiltInName::gl_Position,
@@ -26840,103 +14272,21 @@
     TType *type_gl_PositionGS = new TType(EbtFloat, EbpHigh, EvqPosition, 4);
     type_gl_PositionGS->setInterfaceBlock(gl_PerVertexOutBlock);
     type_gl_PositionGS->realize();
-    mVar_gl_PositionGS =
+    m_gl_PositionGS =
         new TVariable(BuiltInId::gl_PositionGS, BuiltInName::gl_Position, SymbolType::BuiltIn,
                       TExtension::EXT_geometry_shader, type_gl_PositionGS);
 }
 
 namespace
 {
-
-bool CheckESSLVersion(int expected, int actual)
+uint16_t GetNextRuleIndex(uint32_t nameHash)
 {
-    // Not supported
-    if (expected == -1)
-        return false;
-
-    // Only ESSL100
-    if (expected == 100)
-        return actual == 100;
-
-    return actual >= expected;
+    if (nameHash == 935 - 1)
+        return ArraySize(BuiltInArray::kRules);
+    return BuiltInArray::kMangledOffsets[nameHash + 1];
 }
-
-bool CheckGLSLVersion(int expected, int actual)
-{
-    // Not supported
-    if (expected == -1)
-        return false;
-
-    return actual >= expected;
-}
-
-bool CheckShaderType(Shader expected, GLenum actual)
-{
-    switch (expected)
-    {
-        case Shader::ALL:
-            return true;
-        case Shader::FRAGMENT:
-            return actual == GL_FRAGMENT_SHADER;
-        case Shader::VERTEX:
-            return actual == GL_VERTEX_SHADER;
-        case Shader::COMPUTE:
-            return actual == GL_COMPUTE_SHADER;
-        case Shader::GEOMETRY:
-            return actual == GL_GEOMETRY_SHADER;
-        case Shader::GEOMETRY_EXT:
-            return actual == GL_GEOMETRY_SHADER_EXT;
-        case Shader::NOT_COMPUTE:
-            return actual != GL_COMPUTE_SHADER;
-        default:
-            UNREACHABLE();
-            return false;
-    }
-}
-
 }  // namespace
 
-const TSymbol *TSymbolTable::getSymbol(SymbolEntry entry,
-                                       const ImmutableString &name,
-                                       int version) const
-{
-    if (entry.name != name)
-    {
-        return nullptr;
-    }
-    if ((entry.symbol || entry.var) && CheckShaderType(entry.shaderType, mShaderType))
-    {
-        // Non-extension symbol or variable
-        if (!IsDesktopGLSpec(mShaderSpec) && CheckESSLVersion(entry.esslVersion, version))
-        {
-            return entry.symbol ? entry.symbol : this->*(entry.var);
-        }
-        if (IsDesktopGLSpec(mShaderSpec) && CheckGLSLVersion(entry.glslVersion, version))
-        {
-            return entry.symbol ? entry.symbol : this->*(entry.var);
-        }
-    }
-    if (entry.esslExtension && mResources.*(entry.esslExtension) && !IsDesktopGLSpec(mShaderSpec) &&
-        CheckESSLVersion(entry.esslExtVersion, version) &&
-        CheckShaderType(entry.esslExtShaderType, mShaderType))
-    {
-        return entry.esslExtSymbol ? entry.esslExtSymbol : this->*(entry.esslExtVar);
-    }
-    if (entry.glslExtension && mResources.*(entry.glslExtension) && IsDesktopGLSpec(mShaderSpec) &&
-        CheckGLSLVersion(entry.glslExtVersion, version) &&
-        CheckShaderType(entry.glslExtShaderType, mShaderType))
-    {
-        return entry.glslExtSymbol ? entry.glslExtSymbol : this->*(entry.glslExtVar);
-    }
-    if (entry.esslExtension2 && mResources.*(entry.esslExtension2) &&
-        !IsDesktopGLSpec(mShaderSpec) && CheckESSLVersion(entry.esslExtVersion2, version) &&
-        CheckShaderType(entry.esslExtShaderType2, mShaderType))
-    {
-        return entry.esslExtSymbol2 ? entry.esslExtSymbol2 : this->*(entry.esslExtVar2);
-    }
-    return nullptr;
-}
-
 const TSymbol *TSymbolTable::findBuiltIn(const ImmutableString &name, int shaderVersion) const
 {
     if (name.length() > 37)
@@ -26945,42 +14295,31 @@
     uint32_t nameHash = name.mangledNameHash();
     if (nameHash >= 935)
         return nullptr;
-    return getSymbol(BuiltInArray::mangled[nameHash], name, shaderVersion);
-}
 
-const UnmangledBuiltIn *TSymbolTable::getUnmangled(UnmangledEntry entry,
-                                                   const ImmutableString &name,
-                                                   int version) const
-{
-    if (!CheckShaderType(entry.shaderType, mShaderType))
-    {
+    const char *actualName = BuiltInArray::kMangledNames[nameHash];
+    if (name != actualName)
         return nullptr;
-    }
-    if (entry.name == name)
-    {
-        if (!IsDesktopGLSpec(mShaderSpec) && CheckESSLVersion(entry.esslVersion, version))
-        {
-            return entry.esslUnmangled;
-        }
-        if (IsDesktopGLSpec(mShaderSpec) && CheckGLSLVersion(entry.glslVersion, version))
-        {
-            return entry.glslUnmangled;
-        }
-    }
-    return nullptr;
+
+    uint16_t startIndex = BuiltInArray::kMangledOffsets[nameHash];
+    uint16_t nextIndex  = GetNextRuleIndex(nameHash);
+
+    return FindMangledBuiltIn(mShaderSpec, shaderVersion, mShaderType, mResources, *this,
+                              BuiltInArray::kRules, startIndex, nextIndex);
 }
 
-const UnmangledBuiltIn *TSymbolTable::getUnmangledBuiltInForShaderVersion(
-    const ImmutableString &name,
-    int shaderVersion)
+bool TSymbolTable::isUnmangledBuiltInName(const ImmutableString &name,
+                                          int shaderVersion,
+                                          const TExtensionBehavior &extensions) const
 {
     if (name.length() > 26)
-        return nullptr;
+        return false;
 
     uint32_t nameHash = name.unmangledNameHash();
     if (nameHash >= 150)
-        return nullptr;
-    return getUnmangled(BuiltInArray::unmangled[nameHash], name, shaderVersion);
+        return false;
+
+    return BuiltInArray::unmangled[nameHash].matches(name, mShaderSpec, shaderVersion, mShaderType,
+                                                     extensions);
 }
 
 }  // namespace sh
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.cpp
index 9a61498..5f109ce 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.cpp
@@ -20,6 +20,8 @@
 
 namespace sh
 {
+using Resources = ShBuiltInResources;
+using TableBase = TSymbolTableBase;
 
 // Since some of the BuiltInId declarations are used outside of constexpr expressions, we need to
 // have these definitions without an initializer. C++17 should eventually remove the need for this.
@@ -2555,1120 +2557,1078 @@
 namespace BuiltInVariable
 {
 
-constexpr const TVariable kVar_angle_BaseInstance(
+constexpr const TVariable kangle_BaseInstance(
     BuiltInId::angle_BaseInstance,
     BuiltInName::angle_BaseInstance,
     SymbolType::BuiltIn,
     TExtension::ANGLE_base_vertex_base_instance,
     StaticType::Get<EbtInt, EbpHigh, EvqBaseInstance, 1, 1>());
-constexpr const TVariable kVar_angle_BaseVertex(
+constexpr const TVariable kangle_BaseVertex(
     BuiltInId::angle_BaseVertex,
     BuiltInName::angle_BaseVertex,
     SymbolType::BuiltIn,
     TExtension::ANGLE_base_vertex_base_instance,
     StaticType::Get<EbtInt, EbpHigh, EvqBaseVertex, 1, 1>());
-constexpr const TVariable kVar_gl_BaseInstance(
+constexpr const TVariable kgl_BaseInstance(
     BuiltInId::gl_BaseInstance,
     BuiltInName::gl_BaseInstance,
     SymbolType::BuiltIn,
     TExtension::ANGLE_base_vertex_base_instance,
     StaticType::Get<EbtInt, EbpHigh, EvqBaseInstance, 1, 1>());
-constexpr const TVariable kVar_gl_BaseVertex(
-    BuiltInId::gl_BaseVertex,
-    BuiltInName::gl_BaseVertex,
-    SymbolType::BuiltIn,
-    TExtension::ANGLE_base_vertex_base_instance,
-    StaticType::Get<EbtInt, EbpHigh, EvqBaseVertex, 1, 1>());
-constexpr const TVariable kVar_gl_DrawID(BuiltInId::gl_DrawID,
-                                         BuiltInName::gl_DrawID,
+constexpr const TVariable kgl_BaseVertex(BuiltInId::gl_BaseVertex,
+                                         BuiltInName::gl_BaseVertex,
                                          SymbolType::BuiltIn,
-                                         TExtension::ANGLE_multi_draw,
-                                         StaticType::Get<EbtInt, EbpHigh, EvqDrawID, 1, 1>());
-constexpr const TVariable kVar_gl_FragColor(
-    BuiltInId::gl_FragColor,
-    BuiltInName::gl_FragColor,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtFloat, EbpMedium, EvqFragColor, 4, 1>());
-constexpr const TVariable kVar_gl_FragCoord(
-    BuiltInId::gl_FragCoord,
-    BuiltInName::gl_FragCoord,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtFloat, EbpMedium, EvqFragCoord, 4, 1>());
-constexpr const TVariable kVar_gl_FragDepth(
-    BuiltInId::gl_FragDepth,
-    BuiltInName::gl_FragDepth,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtFloat, EbpHigh, EvqFragDepth, 1, 1>());
-constexpr const TVariable kVar_gl_FrontFacing(
+                                         TExtension::ANGLE_base_vertex_base_instance,
+                                         StaticType::Get<EbtInt, EbpHigh, EvqBaseVertex, 1, 1>());
+constexpr const TVariable kgl_DrawID(BuiltInId::gl_DrawID,
+                                     BuiltInName::gl_DrawID,
+                                     SymbolType::BuiltIn,
+                                     TExtension::ANGLE_multi_draw,
+                                     StaticType::Get<EbtInt, EbpHigh, EvqDrawID, 1, 1>());
+constexpr const TVariable kgl_FragColor(BuiltInId::gl_FragColor,
+                                        BuiltInName::gl_FragColor,
+                                        SymbolType::BuiltIn,
+                                        TExtension::UNDEFINED,
+                                        StaticType::Get<EbtFloat, EbpMedium, EvqFragColor, 4, 1>());
+constexpr const TVariable kgl_FragCoord(BuiltInId::gl_FragCoord,
+                                        BuiltInName::gl_FragCoord,
+                                        SymbolType::BuiltIn,
+                                        TExtension::UNDEFINED,
+                                        StaticType::Get<EbtFloat, EbpMedium, EvqFragCoord, 4, 1>());
+constexpr const TVariable kgl_FragDepth(BuiltInId::gl_FragDepth,
+                                        BuiltInName::gl_FragDepth,
+                                        SymbolType::BuiltIn,
+                                        TExtension::UNDEFINED,
+                                        StaticType::Get<EbtFloat, EbpHigh, EvqFragDepth, 1, 1>());
+constexpr const TVariable kgl_FrontFacing(
     BuiltInId::gl_FrontFacing,
     BuiltInName::gl_FrontFacing,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtBool, EbpUndefined, EvqFrontFacing, 1, 1>());
-constexpr const TVariable kVar_gl_GlobalInvocationID(
+constexpr const TVariable kgl_GlobalInvocationID(
     BuiltInId::gl_GlobalInvocationID,
     BuiltInName::gl_GlobalInvocationID,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobalInvocationID, 3, 1>());
-constexpr const TVariable kVar_gl_InstanceID(
-    BuiltInId::gl_InstanceID,
-    BuiltInName::gl_InstanceID,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtInt, EbpHigh, EvqInstanceID, 1, 1>());
-constexpr const TVariable kVar_gl_InstanceIndex(
+constexpr const TVariable kgl_InstanceID(BuiltInId::gl_InstanceID,
+                                         BuiltInName::gl_InstanceID,
+                                         SymbolType::BuiltIn,
+                                         TExtension::UNDEFINED,
+                                         StaticType::Get<EbtInt, EbpHigh, EvqInstanceID, 1, 1>());
+constexpr const TVariable kgl_InstanceIndex(
     BuiltInId::gl_InstanceIndex,
     BuiltInName::gl_InstanceIndex,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtInt, EbpHigh, EvqInstanceID, 1, 1>());
-constexpr const TVariable kVar_gl_InvocationID(
+constexpr const TVariable kgl_InvocationID(
     BuiltInId::gl_InvocationID,
     BuiltInName::gl_InvocationID,
     SymbolType::BuiltIn,
     TExtension::EXT_geometry_shader,
     StaticType::Get<EbtInt, EbpHigh, EvqInvocationID, 1, 1>());
-constexpr const TVariable kVar_gl_LastFragColor(
+constexpr const TVariable kgl_LastFragColor(
     BuiltInId::gl_LastFragColor,
     BuiltInName::gl_LastFragColor,
     SymbolType::BuiltIn,
     TExtension::NV_shader_framebuffer_fetch,
     StaticType::Get<EbtFloat, EbpMedium, EvqLastFragColor, 4, 1>());
-constexpr const TVariable kVar_gl_LastFragColorARM(
+constexpr const TVariable kgl_LastFragColorARM(
     BuiltInId::gl_LastFragColorARM,
     BuiltInName::gl_LastFragColorARM,
     SymbolType::BuiltIn,
     TExtension::ARM_shader_framebuffer_fetch,
     StaticType::Get<EbtFloat, EbpMedium, EvqLastFragColor, 4, 1>());
-constexpr const TVariable kVar_gl_Layer(BuiltInId::gl_Layer,
-                                        BuiltInName::gl_Layer,
-                                        SymbolType::BuiltIn,
-                                        TExtension::EXT_geometry_shader,
-                                        StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
-constexpr const TVariable kVar_gl_LayerGS(BuiltInId::gl_LayerGS,
-                                          BuiltInName::gl_Layer,
-                                          SymbolType::BuiltIn,
-                                          TExtension::EXT_geometry_shader,
-                                          StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
-constexpr const TVariable kVar_gl_LayerVS(BuiltInId::gl_LayerVS,
-                                          BuiltInName::gl_Layer,
-                                          SymbolType::BuiltIn,
-                                          TExtension::UNDEFINED,
-                                          StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
-constexpr const TVariable kVar_gl_LocalInvocationID(
+constexpr const TVariable kgl_Layer(BuiltInId::gl_Layer,
+                                    BuiltInName::gl_Layer,
+                                    SymbolType::BuiltIn,
+                                    TExtension::EXT_geometry_shader,
+                                    StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
+constexpr const TVariable kgl_LayerGS(BuiltInId::gl_LayerGS,
+                                      BuiltInName::gl_Layer,
+                                      SymbolType::BuiltIn,
+                                      TExtension::EXT_geometry_shader,
+                                      StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
+constexpr const TVariable kgl_LayerVS(BuiltInId::gl_LayerVS,
+                                      BuiltInName::gl_Layer,
+                                      SymbolType::BuiltIn,
+                                      TExtension::UNDEFINED,
+                                      StaticType::Get<EbtInt, EbpHigh, EvqLayer, 1, 1>());
+constexpr const TVariable kgl_LocalInvocationID(
     BuiltInId::gl_LocalInvocationID,
     BuiltInName::gl_LocalInvocationID,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqLocalInvocationID, 3, 1>());
-constexpr const TVariable kVar_gl_LocalInvocationIndex(
+constexpr const TVariable kgl_LocalInvocationIndex(
     BuiltInId::gl_LocalInvocationIndex,
     BuiltInName::gl_LocalInvocationIndex,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqLocalInvocationIndex, 1, 1>());
-constexpr const TVariable kVar_gl_NumWorkGroups(
+constexpr const TVariable kgl_NumWorkGroups(
     BuiltInId::gl_NumWorkGroups,
     BuiltInName::gl_NumWorkGroups,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqNumWorkGroups, 3, 1>());
-constexpr const TVariable kVar_gl_PointCoord(
+constexpr const TVariable kgl_PointCoord(
     BuiltInId::gl_PointCoord,
     BuiltInName::gl_PointCoord,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtFloat, EbpMedium, EvqPointCoord, 2, 1>());
-constexpr const TVariable kVar_gl_PointSize(
-    BuiltInId::gl_PointSize,
-    BuiltInName::gl_PointSize,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtFloat, EbpMedium, EvqPointSize, 1, 1>());
-constexpr const TVariable kVar_gl_Position(BuiltInId::gl_Position,
-                                           BuiltInName::gl_Position,
-                                           SymbolType::BuiltIn,
-                                           TExtension::UNDEFINED,
-                                           StaticType::Get<EbtFloat, EbpHigh, EvqPosition, 4, 1>());
-constexpr const TVariable kVar_gl_PrimitiveID(
-    BuiltInId::gl_PrimitiveID,
-    BuiltInName::gl_PrimitiveID,
-    SymbolType::BuiltIn,
-    TExtension::EXT_geometry_shader,
-    StaticType::Get<EbtInt, EbpHigh, EvqPrimitiveID, 1, 1>());
-constexpr const TVariable kVar_gl_PrimitiveIDGS(
+constexpr const TVariable kgl_PointSize(BuiltInId::gl_PointSize,
+                                        BuiltInName::gl_PointSize,
+                                        SymbolType::BuiltIn,
+                                        TExtension::UNDEFINED,
+                                        StaticType::Get<EbtFloat, EbpMedium, EvqPointSize, 1, 1>());
+constexpr const TVariable kgl_Position(BuiltInId::gl_Position,
+                                       BuiltInName::gl_Position,
+                                       SymbolType::BuiltIn,
+                                       TExtension::UNDEFINED,
+                                       StaticType::Get<EbtFloat, EbpHigh, EvqPosition, 4, 1>());
+constexpr const TVariable kgl_PrimitiveID(BuiltInId::gl_PrimitiveID,
+                                          BuiltInName::gl_PrimitiveID,
+                                          SymbolType::BuiltIn,
+                                          TExtension::EXT_geometry_shader,
+                                          StaticType::Get<EbtInt, EbpHigh, EvqPrimitiveID, 1, 1>());
+constexpr const TVariable kgl_PrimitiveIDGS(
     BuiltInId::gl_PrimitiveIDGS,
     BuiltInName::gl_PrimitiveID,
     SymbolType::BuiltIn,
     TExtension::EXT_geometry_shader,
     StaticType::Get<EbtInt, EbpHigh, EvqPrimitiveID, 1, 1>());
-constexpr const TVariable kVar_gl_PrimitiveIDIn(
+constexpr const TVariable kgl_PrimitiveIDIn(
     BuiltInId::gl_PrimitiveIDIn,
     BuiltInName::gl_PrimitiveIDIn,
     SymbolType::BuiltIn,
     TExtension::EXT_geometry_shader,
     StaticType::Get<EbtInt, EbpHigh, EvqPrimitiveIDIn, 1, 1>());
-constexpr const TVariable kVar_gl_SecondaryFragColorEXT(
+constexpr const TVariable kgl_SecondaryFragColorEXT(
     BuiltInId::gl_SecondaryFragColorEXT,
     BuiltInName::gl_SecondaryFragColorEXT,
     SymbolType::BuiltIn,
     TExtension::EXT_blend_func_extended,
     StaticType::Get<EbtFloat, EbpMedium, EvqSecondaryFragColorEXT, 4, 1>());
-constexpr const TVariable kVar_gl_VertexID(BuiltInId::gl_VertexID,
-                                           BuiltInName::gl_VertexID,
-                                           SymbolType::BuiltIn,
-                                           TExtension::UNDEFINED,
-                                           StaticType::Get<EbtInt, EbpHigh, EvqVertexID, 1, 1>());
-constexpr const TVariable kVar_gl_VertexIndex(
-    BuiltInId::gl_VertexIndex,
-    BuiltInName::gl_VertexIndex,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtInt, EbpHigh, EvqVertexID, 1, 1>());
-constexpr const TVariable kVar_gl_ViewID_OVR(
-    BuiltInId::gl_ViewID_OVR,
-    BuiltInName::gl_ViewID_OVR,
-    SymbolType::BuiltIn,
-    TExtension::OVR_multiview,
-    StaticType::Get<EbtUInt, EbpHigh, EvqViewIDOVR, 1, 1>());
-constexpr const TVariable kVar_gl_ViewportIndex(
+constexpr const TVariable kgl_VertexID(BuiltInId::gl_VertexID,
+                                       BuiltInName::gl_VertexID,
+                                       SymbolType::BuiltIn,
+                                       TExtension::UNDEFINED,
+                                       StaticType::Get<EbtInt, EbpHigh, EvqVertexID, 1, 1>());
+constexpr const TVariable kgl_VertexIndex(BuiltInId::gl_VertexIndex,
+                                          BuiltInName::gl_VertexIndex,
+                                          SymbolType::BuiltIn,
+                                          TExtension::UNDEFINED,
+                                          StaticType::Get<EbtInt, EbpHigh, EvqVertexID, 1, 1>());
+constexpr const TVariable kgl_ViewID_OVR(BuiltInId::gl_ViewID_OVR,
+                                         BuiltInName::gl_ViewID_OVR,
+                                         SymbolType::BuiltIn,
+                                         TExtension::OVR_multiview,
+                                         StaticType::Get<EbtUInt, EbpHigh, EvqViewIDOVR, 1, 1>());
+constexpr const TVariable kgl_ViewportIndex(
     BuiltInId::gl_ViewportIndex,
     BuiltInName::gl_ViewportIndex,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtInt, EbpHigh, EvqViewportIndex, 1, 1>());
-constexpr const TVariable kVar_gl_WorkGroupID(
+constexpr const TVariable kgl_WorkGroupID(
     BuiltInId::gl_WorkGroupID,
     BuiltInName::gl_WorkGroupID,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqWorkGroupID, 3, 1>());
-constexpr const TVariable kVar_gl_WorkGroupSize(
+constexpr const TVariable kgl_WorkGroupSize(
     BuiltInId::gl_WorkGroupSize,
     BuiltInName::gl_WorkGroupSize,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUInt, EbpUndefined, EvqWorkGroupSize, 3, 1>());
-constexpr const TVariable kVar_pt00B(BuiltInId::pt00B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00C(BuiltInId::pt00C,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00D(BuiltInId::pt00D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00E(BuiltInId::pt00E,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00F(BuiltInId::pt00F,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00G(
+constexpr const TVariable kpt00B(BuiltInId::pt00B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00C(BuiltInId::pt00C,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00D(BuiltInId::pt00D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00E(BuiltInId::pt00E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00F(BuiltInId::pt00F,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00G(
     BuiltInId::pt00G,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtAtomicCounter, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00H(
+constexpr const TVariable kpt00H(
     BuiltInId::pt00H,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtYuvCscStandardEXT, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00I(
-    BuiltInId::pt00I,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSampler2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00J(
-    BuiltInId::pt00J,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSampler3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00K(
-    BuiltInId::pt00K,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00L(
+constexpr const TVariable kpt00I(BuiltInId::pt00I,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSampler2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00J(BuiltInId::pt00J,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSampler3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00K(BuiltInId::pt00K,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00L(
     BuiltInId::pt00L,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00M(
+constexpr const TVariable kpt00M(
     BuiltInId::pt00M,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerExternalOES, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00N(
+constexpr const TVariable kpt00N(
     BuiltInId::pt00N,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerExternal2DY2YEXT, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00O(
+constexpr const TVariable kpt00O(
     BuiltInId::pt00O,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00P(
-    BuiltInId::pt00P,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00Q(
+constexpr const TVariable kpt00P(BuiltInId::pt00P,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00Q(
     BuiltInId::pt00Q,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00R(
-    BuiltInId::pt00R,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISampler2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00S(
-    BuiltInId::pt00S,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISampler3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00T(
-    BuiltInId::pt00T,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00U(
+constexpr const TVariable kpt00R(BuiltInId::pt00R,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISampler2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00S(BuiltInId::pt00S,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISampler3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00T(BuiltInId::pt00T,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00U(
     BuiltInId::pt00U,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISampler2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00V(
-    BuiltInId::pt00V,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00W(
+constexpr const TVariable kpt00V(BuiltInId::pt00V,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00W(
     BuiltInId::pt00W,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISampler2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00X(
-    BuiltInId::pt00X,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSampler2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00Y(
-    BuiltInId::pt00Y,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSampler3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00Z(
-    BuiltInId::pt00Z,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00a(
+constexpr const TVariable kpt00X(BuiltInId::pt00X,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSampler2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00Y(BuiltInId::pt00Y,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSampler3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00Z(BuiltInId::pt00Z,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSamplerCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00a(
     BuiltInId::pt00a,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSampler2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00b(
-    BuiltInId::pt00b,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00c(
+constexpr const TVariable kpt00b(BuiltInId::pt00b,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSampler2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00c(
     BuiltInId::pt00c,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSampler2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00d(
+constexpr const TVariable kpt00d(
     BuiltInId::pt00d,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00e(
+constexpr const TVariable kpt00e(
     BuiltInId::pt00e,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerCubeShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00f(
+constexpr const TVariable kpt00f(
     BuiltInId::pt00f,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DArrayShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00g(
-    BuiltInId::pt00g,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSampler1D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00h(
+constexpr const TVariable kpt00g(BuiltInId::pt00g,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSampler1D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00h(
     BuiltInId::pt00h,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler1DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00i(
+constexpr const TVariable kpt00i(
     BuiltInId::pt00i,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler1DArrayShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00j(
+constexpr const TVariable kpt00j(
     BuiltInId::pt00j,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerBuffer, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00k(
+constexpr const TVariable kpt00k(
     BuiltInId::pt00k,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerCubeArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00l(
+constexpr const TVariable kpt00l(
     BuiltInId::pt00l,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSamplerCubeArrayShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00m(
+constexpr const TVariable kpt00m(
     BuiltInId::pt00m,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler1DShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00n(
+constexpr const TVariable kpt00n(
     BuiltInId::pt00n,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSampler2DRectShadow, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00o(
-    BuiltInId::pt00o,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtISampler1D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00p(
+constexpr const TVariable kpt00o(BuiltInId::pt00o,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtISampler1D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00p(
     BuiltInId::pt00p,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISampler1DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00q(
+constexpr const TVariable kpt00q(
     BuiltInId::pt00q,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISampler2DRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00r(
+constexpr const TVariable kpt00r(
     BuiltInId::pt00r,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISamplerBuffer, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00s(
+constexpr const TVariable kpt00s(
     BuiltInId::pt00s,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISamplerCubeArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00t(
-    BuiltInId::pt00t,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUSampler1D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00u(
+constexpr const TVariable kpt00t(BuiltInId::pt00t,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUSampler1D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00u(
     BuiltInId::pt00u,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSampler1DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00v(
+constexpr const TVariable kpt00v(
     BuiltInId::pt00v,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSampler2DRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00w(
+constexpr const TVariable kpt00w(
     BuiltInId::pt00w,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSamplerBuffer, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00x(
+constexpr const TVariable kpt00x(
     BuiltInId::pt00x,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSamplerCubeArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00y(BuiltInId::pt00y,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtImage2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt00z(BuiltInId::pt00z,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtIImage2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01A(BuiltInId::pt01A,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUImage2D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01B(BuiltInId::pt01B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtImage3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01C(BuiltInId::pt01C,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtIImage3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01D(BuiltInId::pt01D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUImage3D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01E(
-    BuiltInId::pt01E,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImage2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01F(
+constexpr const TVariable kpt00y(BuiltInId::pt00y,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt00z(BuiltInId::pt00z,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImage2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01A(BuiltInId::pt01A,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImage2D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01B(BuiltInId::pt01B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01C(BuiltInId::pt01C,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImage3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01D(BuiltInId::pt01D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImage3D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01E(BuiltInId::pt01E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage2DArray, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01F(
     BuiltInId::pt01F,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtIImage2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01G(
+constexpr const TVariable kpt01G(
     BuiltInId::pt01G,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUImage2DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01H(
-    BuiltInId::pt01H,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImageCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01I(
-    BuiltInId::pt01I,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtIImageCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01J(
-    BuiltInId::pt01J,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUImageCube, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01K(BuiltInId::pt01K,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtImage1D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01L(BuiltInId::pt01L,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtIImage1D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01M(BuiltInId::pt01M,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUImage1D, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01N(
-    BuiltInId::pt01N,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImage1DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01O(
+constexpr const TVariable kpt01H(BuiltInId::pt01H,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImageCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01I(BuiltInId::pt01I,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImageCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01J(BuiltInId::pt01J,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImageCube, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01K(BuiltInId::pt01K,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage1D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01L(BuiltInId::pt01L,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImage1D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01M(BuiltInId::pt01M,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImage1D, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01N(BuiltInId::pt01N,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage1DArray, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01O(
     BuiltInId::pt01O,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtIImage1DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01P(
+constexpr const TVariable kpt01P(
     BuiltInId::pt01P,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUImage1DArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01Q(
-    BuiltInId::pt01Q,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImage2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01R(
-    BuiltInId::pt01R,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtIImage2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01S(
-    BuiltInId::pt01S,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUImage2DMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01T(
+constexpr const TVariable kpt01Q(BuiltInId::pt01Q,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01R(BuiltInId::pt01R,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImage2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01S(BuiltInId::pt01S,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImage2DMS, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01T(
     BuiltInId::pt01T,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtImage2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01U(
+constexpr const TVariable kpt01U(
     BuiltInId::pt01U,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtIImage2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01V(
+constexpr const TVariable kpt01V(
     BuiltInId::pt01V,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUImage2DMSArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01W(
-    BuiltInId::pt01W,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImage2DRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01X(
-    BuiltInId::pt01X,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtIImage2DRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01Y(
-    BuiltInId::pt01Y,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUImage2DRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01Z(
+constexpr const TVariable kpt01W(BuiltInId::pt01W,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImage2DRect, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01X(BuiltInId::pt01X,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImage2DRect, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01Y(BuiltInId::pt01Y,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImage2DRect, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01Z(
     BuiltInId::pt01Z,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtImageCubeArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01a(
+constexpr const TVariable kpt01a(
     BuiltInId::pt01a,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtIImageCubeArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01b(
+constexpr const TVariable kpt01b(
     BuiltInId::pt01b,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUImageCubeArray, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01c(
-    BuiltInId::pt01c,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImageRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01d(
-    BuiltInId::pt01d,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtIImageRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01e(
-    BuiltInId::pt01e,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUImageRect, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01f(
-    BuiltInId::pt01f,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtImageBuffer, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01g(
-    BuiltInId::pt01g,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtIImageBuffer, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01h(
-    BuiltInId::pt01h,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtUImageBuffer, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01i(
-    BuiltInId::pt01i,
-    BuiltInName::_empty,
-    SymbolType::BuiltIn,
-    TExtension::UNDEFINED,
-    StaticType::Get<EbtSubpassInput, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01j(
+constexpr const TVariable kpt01c(BuiltInId::pt01c,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImageRect, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01d(BuiltInId::pt01d,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImageRect, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01e(BuiltInId::pt01e,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImageRect, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01f(BuiltInId::pt01f,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtImageBuffer, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01g(BuiltInId::pt01g,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtIImageBuffer, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01h(BuiltInId::pt01h,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUImageBuffer, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01i(BuiltInId::pt01i,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtSubpassInput, EbpUndefined, EvqGlobal, 1, 1>());
+constexpr const TVariable kpt01j(
     BuiltInId::pt01j,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISubpassInput, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01k(
+constexpr const TVariable kpt01k(
     BuiltInId::pt01k,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSubpassInput, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01l(
+constexpr const TVariable kpt01l(
     BuiltInId::pt01l,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtSubpassInputMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01m(
+constexpr const TVariable kpt01m(
     BuiltInId::pt01m,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtISubpassInputMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt01n(
+constexpr const TVariable kpt01n(
     BuiltInId::pt01n,
     BuiltInName::_empty,
     SymbolType::BuiltIn,
     TExtension::UNDEFINED,
     StaticType::Get<EbtUSubpassInputMS, EbpUndefined, EvqGlobal, 1, 1>());
-constexpr const TVariable kVar_pt10B(BuiltInId::pt10B,
+constexpr const TVariable kpt10B(BuiltInId::pt10B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt10C(BuiltInId::pt10C,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt10D(BuiltInId::pt10D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt10E(BuiltInId::pt10E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt10F(BuiltInId::pt10F,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>());
+constexpr const TVariable kpt20B(BuiltInId::pt20B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt20C(BuiltInId::pt20C,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt20D(BuiltInId::pt20D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt20E(BuiltInId::pt20E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt20F(BuiltInId::pt20F,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>());
+constexpr const TVariable kpt30B(BuiltInId::pt30B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt30C(BuiltInId::pt30C,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt30D(BuiltInId::pt30D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt30E(BuiltInId::pt30E,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt30F(BuiltInId::pt30F,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>());
+constexpr const TVariable kpt50B(BuiltInId::pt50B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>());
+constexpr const TVariable kpt60B(BuiltInId::pt60B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>());
+constexpr const TVariable kpt70B(BuiltInId::pt70B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>());
+constexpr const TVariable kpt70D(BuiltInId::pt70D,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 2>());
+constexpr const TVariable kpt90B(BuiltInId::pt90B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>());
+constexpr const TVariable kptA0B(BuiltInId::ptA0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>());
+constexpr const TVariable kptB0B(BuiltInId::ptB0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>());
+constexpr const TVariable kptD0B(BuiltInId::ptD0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>());
+constexpr const TVariable kptE0B(BuiltInId::ptE0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>());
+constexpr const TVariable kptF0B(BuiltInId::ptF0B,
+                                 BuiltInName::_empty,
+                                 SymbolType::BuiltIn,
+                                 TExtension::UNDEFINED,
+                                 StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>());
+constexpr const TVariable kpt_io_00D(BuiltInId::pt_io_00D,
                                      BuiltInName::_empty,
                                      SymbolType::BuiltIn,
                                      TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt10C(BuiltInId::pt10C,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqInOut, 1, 1>());
+constexpr const TVariable kpt_io_00E(BuiltInId::pt_io_00E,
                                      BuiltInName::_empty,
                                      SymbolType::BuiltIn,
                                      TExtension::UNDEFINED,
-                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt10D(BuiltInId::pt10D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt10E(BuiltInId::pt10E,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt10F(BuiltInId::pt10F,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>());
-constexpr const TVariable kVar_pt20B(BuiltInId::pt20B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt20C(BuiltInId::pt20C,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt20D(BuiltInId::pt20D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt20E(BuiltInId::pt20E,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt20F(BuiltInId::pt20F,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>());
-constexpr const TVariable kVar_pt30B(BuiltInId::pt30B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt30C(BuiltInId::pt30C,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt30D(BuiltInId::pt30D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt30E(BuiltInId::pt30E,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt30F(BuiltInId::pt30F,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>());
-constexpr const TVariable kVar_pt50B(BuiltInId::pt50B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>());
-constexpr const TVariable kVar_pt60B(BuiltInId::pt60B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>());
-constexpr const TVariable kVar_pt70B(BuiltInId::pt70B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>());
-constexpr const TVariable kVar_pt70D(BuiltInId::pt70D,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 2>());
-constexpr const TVariable kVar_pt90B(BuiltInId::pt90B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>());
-constexpr const TVariable kVar_ptA0B(BuiltInId::ptA0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>());
-constexpr const TVariable kVar_ptB0B(BuiltInId::ptB0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>());
-constexpr const TVariable kVar_ptD0B(BuiltInId::ptD0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>());
-constexpr const TVariable kVar_ptE0B(BuiltInId::ptE0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>());
-constexpr const TVariable kVar_ptF0B(BuiltInId::ptF0B,
-                                     BuiltInName::_empty,
-                                     SymbolType::BuiltIn,
-                                     TExtension::UNDEFINED,
-                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>());
-constexpr const TVariable kVar_pt_io_00D(BuiltInId::pt_io_00D,
-                                         BuiltInName::_empty,
-                                         SymbolType::BuiltIn,
-                                         TExtension::UNDEFINED,
-                                         StaticType::Get<EbtInt, EbpUndefined, EvqInOut, 1, 1>());
-constexpr const TVariable kVar_pt_io_00E(BuiltInId::pt_io_00E,
-                                         BuiltInName::_empty,
-                                         SymbolType::BuiltIn,
-                                         TExtension::UNDEFINED,
-                                         StaticType::Get<EbtUInt, EbpUndefined, EvqInOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_00B(BuiltInId::pt_o_00B,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_00C(BuiltInId::pt_o_00C,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtDouble, EbpUndefined, EvqOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_00D(BuiltInId::pt_o_00D,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtInt, EbpUndefined, EvqOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_00E(BuiltInId::pt_o_00E,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 1, 1>());
-constexpr const TVariable kVar_pt_o_10B(BuiltInId::pt_o_10B,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 2, 1>());
-constexpr const TVariable kVar_pt_o_10C(BuiltInId::pt_o_10C,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtDouble, EbpUndefined, EvqOut, 2, 1>());
-constexpr const TVariable kVar_pt_o_10D(BuiltInId::pt_o_10D,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtInt, EbpUndefined, EvqOut, 2, 1>());
-constexpr const TVariable kVar_pt_o_10E(BuiltInId::pt_o_10E,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 2, 1>());
-constexpr const TVariable kVar_pt_o_20B(BuiltInId::pt_o_20B,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 3, 1>());
-constexpr const TVariable kVar_pt_o_20C(BuiltInId::pt_o_20C,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtDouble, EbpUndefined, EvqOut, 3, 1>());
-constexpr const TVariable kVar_pt_o_20D(BuiltInId::pt_o_20D,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtInt, EbpUndefined, EvqOut, 3, 1>());
-constexpr const TVariable kVar_pt_o_20E(BuiltInId::pt_o_20E,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 3, 1>());
-constexpr const TVariable kVar_pt_o_30B(BuiltInId::pt_o_30B,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 4, 1>());
-constexpr const TVariable kVar_pt_o_30C(BuiltInId::pt_o_30C,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtDouble, EbpUndefined, EvqOut, 4, 1>());
-constexpr const TVariable kVar_pt_o_30D(BuiltInId::pt_o_30D,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtInt, EbpUndefined, EvqOut, 4, 1>());
-constexpr const TVariable kVar_pt_o_30E(BuiltInId::pt_o_30E,
-                                        BuiltInName::_empty,
-                                        SymbolType::BuiltIn,
-                                        TExtension::UNDEFINED,
-                                        StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 4, 1>());
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqInOut, 1, 1>());
+constexpr const TVariable kpt_o_00B(BuiltInId::pt_o_00B,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 1, 1>());
+constexpr const TVariable kpt_o_00C(BuiltInId::pt_o_00C,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqOut, 1, 1>());
+constexpr const TVariable kpt_o_00D(BuiltInId::pt_o_00D,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtInt, EbpUndefined, EvqOut, 1, 1>());
+constexpr const TVariable kpt_o_00E(BuiltInId::pt_o_00E,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 1, 1>());
+constexpr const TVariable kpt_o_10B(BuiltInId::pt_o_10B,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 2, 1>());
+constexpr const TVariable kpt_o_10C(BuiltInId::pt_o_10C,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqOut, 2, 1>());
+constexpr const TVariable kpt_o_10D(BuiltInId::pt_o_10D,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtInt, EbpUndefined, EvqOut, 2, 1>());
+constexpr const TVariable kpt_o_10E(BuiltInId::pt_o_10E,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 2, 1>());
+constexpr const TVariable kpt_o_20B(BuiltInId::pt_o_20B,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 3, 1>());
+constexpr const TVariable kpt_o_20C(BuiltInId::pt_o_20C,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqOut, 3, 1>());
+constexpr const TVariable kpt_o_20D(BuiltInId::pt_o_20D,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtInt, EbpUndefined, EvqOut, 3, 1>());
+constexpr const TVariable kpt_o_20E(BuiltInId::pt_o_20E,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 3, 1>());
+constexpr const TVariable kpt_o_30B(BuiltInId::pt_o_30B,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqOut, 4, 1>());
+constexpr const TVariable kpt_o_30C(BuiltInId::pt_o_30C,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqOut, 4, 1>());
+constexpr const TVariable kpt_o_30D(BuiltInId::pt_o_30D,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtInt, EbpUndefined, EvqOut, 4, 1>());
+constexpr const TVariable kpt_o_30E(BuiltInId::pt_o_30E,
+                                    BuiltInName::_empty,
+                                    SymbolType::BuiltIn,
+                                    TExtension::UNDEFINED,
+                                    StaticType::Get<EbtUInt, EbpUndefined, EvqOut, 4, 1>());
 
 const TVariable *angle_BaseInstance()
 {
-    return &kVar_angle_BaseInstance;
+    return &kangle_BaseInstance;
 }
 
 const TVariable *angle_BaseVertex()
 {
-    return &kVar_angle_BaseVertex;
+    return &kangle_BaseVertex;
 }
 
 const TVariable *gl_BaseInstance()
 {
-    return &kVar_gl_BaseInstance;
+    return &kgl_BaseInstance;
 }
 
 const TVariable *gl_BaseVertex()
 {
-    return &kVar_gl_BaseVertex;
+    return &kgl_BaseVertex;
 }
 
 const TVariable *gl_DrawID()
 {
-    return &kVar_gl_DrawID;
+    return &kgl_DrawID;
 }
 
 const TVariable *gl_FragColor()
 {
-    return &kVar_gl_FragColor;
+    return &kgl_FragColor;
 }
 
 const TVariable *gl_FragCoord()
 {
-    return &kVar_gl_FragCoord;
+    return &kgl_FragCoord;
 }
 
 const TVariable *gl_FragDepth()
 {
-    return &kVar_gl_FragDepth;
+    return &kgl_FragDepth;
 }
 
 const TVariable *gl_FrontFacing()
 {
-    return &kVar_gl_FrontFacing;
+    return &kgl_FrontFacing;
 }
 
 const TVariable *gl_GlobalInvocationID()
 {
-    return &kVar_gl_GlobalInvocationID;
+    return &kgl_GlobalInvocationID;
 }
 
 const TVariable *gl_InstanceID()
 {
-    return &kVar_gl_InstanceID;
+    return &kgl_InstanceID;
 }
 
 const TVariable *gl_InstanceIndex()
 {
-    return &kVar_gl_InstanceIndex;
+    return &kgl_InstanceIndex;
 }
 
 const TVariable *gl_InvocationID()
 {
-    return &kVar_gl_InvocationID;
+    return &kgl_InvocationID;
 }
 
 const TVariable *gl_LastFragColor()
 {
-    return &kVar_gl_LastFragColor;
+    return &kgl_LastFragColor;
 }
 
 const TVariable *gl_LastFragColorARM()
 {
-    return &kVar_gl_LastFragColorARM;
+    return &kgl_LastFragColorARM;
 }
 
 const TVariable *gl_Layer()
 {
-    return &kVar_gl_Layer;
+    return &kgl_Layer;
 }
 
 const TVariable *gl_LayerGS()
 {
-    return &kVar_gl_LayerGS;
+    return &kgl_LayerGS;
 }
 
 const TVariable *gl_LayerVS()
 {
-    return &kVar_gl_LayerVS;
+    return &kgl_LayerVS;
 }
 
 const TVariable *gl_LocalInvocationID()
 {
-    return &kVar_gl_LocalInvocationID;
+    return &kgl_LocalInvocationID;
 }
 
 const TVariable *gl_LocalInvocationIndex()
 {
-    return &kVar_gl_LocalInvocationIndex;
+    return &kgl_LocalInvocationIndex;
 }
 
 const TVariable *gl_NumWorkGroups()
 {
-    return &kVar_gl_NumWorkGroups;
+    return &kgl_NumWorkGroups;
 }
 
 const TVariable *gl_PointCoord()
 {
-    return &kVar_gl_PointCoord;
+    return &kgl_PointCoord;
 }
 
 const TVariable *gl_PointSize()
 {
-    return &kVar_gl_PointSize;
+    return &kgl_PointSize;
 }
 
 const TVariable *gl_Position()
 {
-    return &kVar_gl_Position;
+    return &kgl_Position;
 }
 
 const TVariable *gl_PrimitiveID()
 {
-    return &kVar_gl_PrimitiveID;
+    return &kgl_PrimitiveID;
 }
 
 const TVariable *gl_PrimitiveIDGS()
 {
-    return &kVar_gl_PrimitiveIDGS;
+    return &kgl_PrimitiveIDGS;
 }
 
 const TVariable *gl_PrimitiveIDIn()
 {
-    return &kVar_gl_PrimitiveIDIn;
+    return &kgl_PrimitiveIDIn;
 }
 
 const TVariable *gl_SecondaryFragColorEXT()
 {
-    return &kVar_gl_SecondaryFragColorEXT;
+    return &kgl_SecondaryFragColorEXT;
 }
 
 const TVariable *gl_VertexID()
 {
-    return &kVar_gl_VertexID;
+    return &kgl_VertexID;
 }
 
 const TVariable *gl_VertexIndex()
 {
-    return &kVar_gl_VertexIndex;
+    return &kgl_VertexIndex;
 }
 
 const TVariable *gl_ViewID_OVR()
 {
-    return &kVar_gl_ViewID_OVR;
+    return &kgl_ViewID_OVR;
 }
 
 const TVariable *gl_ViewportIndex()
 {
-    return &kVar_gl_ViewportIndex;
+    return &kgl_ViewportIndex;
 }
 
 const TVariable *gl_WorkGroupID()
 {
-    return &kVar_gl_WorkGroupID;
+    return &kgl_WorkGroupID;
 }
 
 const TVariable *gl_WorkGroupSize()
 {
-    return &kVar_gl_WorkGroupSize;
+    return &kgl_WorkGroupSize;
 }
 
 }  // namespace BuiltInVariable
@@ -3677,2151 +3637,1763 @@
 {
 
 constexpr const TVariable **empty        = nullptr;
-constexpr const TVariable *p00B00B00B[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00B00B00F[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00F};
-constexpr const TVariable *p00B00B10B[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00B00B20B[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00B00B30B[3] = {
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p00B00D[2]    = {&BuiltInVariable::kVar_pt00B,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00B10B[2]    = {&BuiltInVariable::kVar_pt00B,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00B20B[2]    = {&BuiltInVariable::kVar_pt00B,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00B30B[2]    = {&BuiltInVariable::kVar_pt00B,
-                                         &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p00B_o_00B[2] = {&BuiltInVariable::kVar_pt00B,
-                                            &BuiltInVariable::kVar_pt_o_00B};
-constexpr const TVariable *p00B_o_00D[2] = {&BuiltInVariable::kVar_pt00B,
-                                            &BuiltInVariable::kVar_pt_o_00D};
-constexpr const TVariable *p00C00C00B[3] = {
-    &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00C00C00C[3] = {
-    &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C};
-constexpr const TVariable *p00C00C00F[3] = {
-    &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00F};
-constexpr const TVariable *p00C00C10C[3] = {
-    &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt10C};
-constexpr const TVariable *p00C00C20C[3] = {
-    &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt20C};
-constexpr const TVariable *p00C00C30C[3] = {
-    &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt30C};
-constexpr const TVariable *p00C00D[2]       = {&BuiltInVariable::kVar_pt00C,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00C10C[2]       = {&BuiltInVariable::kVar_pt00C,
-                                         &BuiltInVariable::kVar_pt10C};
-constexpr const TVariable *p00C20C[2]       = {&BuiltInVariable::kVar_pt00C,
-                                         &BuiltInVariable::kVar_pt20C};
-constexpr const TVariable *p00C30C[2]       = {&BuiltInVariable::kVar_pt00C,
-                                         &BuiltInVariable::kVar_pt30C};
-constexpr const TVariable *p00C_o_00C[2]    = {&BuiltInVariable::kVar_pt00C,
-                                            &BuiltInVariable::kVar_pt_o_00C};
-constexpr const TVariable *p00C_o_00D[2]    = {&BuiltInVariable::kVar_pt00C,
-                                            &BuiltInVariable::kVar_pt_o_00D};
-constexpr const TVariable *p00D00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00D00D00F[3] = {
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00F};
+constexpr const TVariable *p00B00B00B[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00B00B00F[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00F};
+constexpr const TVariable *p00B00B10B[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00B00B20B[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00B00B30B[3] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p00B00D[2]    = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00B10B[2]    = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00B20B[2]    = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00B30B[2]    = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p00B_o_00B[2] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt_o_00B};
+constexpr const TVariable *p00B_o_00D[2] = {&BuiltInVariable::kpt00B, &BuiltInVariable::kpt_o_00D};
+constexpr const TVariable *p00C00C00B[3] = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00C00C00C[3] = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt00C};
+constexpr const TVariable *p00C00C00F[3] = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt00F};
+constexpr const TVariable *p00C00C10C[3] = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt10C};
+constexpr const TVariable *p00C00C20C[3] = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt20C};
+constexpr const TVariable *p00C00C30C[3] = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt30C};
+constexpr const TVariable *p00C00D[2]    = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00C10C[2]    = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt10C};
+constexpr const TVariable *p00C20C[2]    = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt20C};
+constexpr const TVariable *p00C30C[2]    = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt30C};
+constexpr const TVariable *p00C_o_00C[2] = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt_o_00C};
+constexpr const TVariable *p00C_o_00D[2] = {&BuiltInVariable::kpt00C, &BuiltInVariable::kpt_o_00D};
+constexpr const TVariable *p00D00D00D00D[4] = {&BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00D00D00F[3]    = {&BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00F};
 constexpr const TVariable *p00D00D_o_00D_o_00D[4] = {
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt_o_00D,
-    &BuiltInVariable::kVar_pt_o_00D};
-constexpr const TVariable *p00E00D00D[3] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00E00E00D00D[4] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00E00E00E[3] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p00E00E00F[3] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00F};
+    &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D, &BuiltInVariable::kpt_o_00D,
+    &BuiltInVariable::kpt_o_00D};
+constexpr const TVariable *p00E00D00D[3]    = {&BuiltInVariable::kpt00E, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00E00E00D00D[4] = {&BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00E00E00E[3]    = {&BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
+constexpr const TVariable *p00E00E00F[3]    = {&BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00F};
 constexpr const TVariable *p00E00E_o_00E_o_00E[4] = {
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt_o_00E,
-    &BuiltInVariable::kVar_pt_o_00E};
-constexpr const TVariable *p00F00F00F[3] = {
-    &BuiltInVariable::kVar_pt00F, &BuiltInVariable::kVar_pt00F, &BuiltInVariable::kVar_pt00F};
-constexpr const TVariable *p00G00E00E[3] = {
-    &BuiltInVariable::kVar_pt00G, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p00I00B00B00B[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00I00D[2]       = {&BuiltInVariable::kVar_pt00I,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00I10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I10B00D[3] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E, &BuiltInVariable::kpt_o_00E,
+    &BuiltInVariable::kpt_o_00E};
+constexpr const TVariable *p00F00F00F[3]    = {&BuiltInVariable::kpt00F, &BuiltInVariable::kpt00F,
+                                            &BuiltInVariable::kpt00F};
+constexpr const TVariable *p00G00E00E[3]    = {&BuiltInVariable::kpt00G, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
+constexpr const TVariable *p00I00B00B00B[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00I00D[2]       = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00I10B00B10D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I10B00D[3]    = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00I10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I10B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00I10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00I10B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00I10D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I10B10D00B[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00I10B10D00D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00I10B70D00D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00I10D00D10D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I20B00B10D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00I20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00I30B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00I, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I20B10D00B[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00I30B00B10D[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00I30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00I30B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00I, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00J00D[2]       = {&BuiltInVariable::kVar_pt00J,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00J20B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00I, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00I30B10D00B[4] = {&BuiltInVariable::kpt00I, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00J00D[2]       = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00J20B00B20D[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00J20B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00J20B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00J20D00D20D[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00J30B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00J, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00J20B20D00B[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00J20D00D20D[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00J30B00B20D[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00J30B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00J30B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00J, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00K00D[2]    = {&BuiltInVariable::kVar_pt00K,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00K20B00B[3] = {
-    &BuiltInVariable::kVar_pt00K, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00K20B00D[3] = {
-    &BuiltInVariable::kVar_pt00K, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00K20B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00K, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00L00D[2]       = {&BuiltInVariable::kVar_pt00L,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00L10B[2]       = {&BuiltInVariable::kVar_pt00L,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00L20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00L20B00D[3] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00J, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00J30B20D00B[4] = {&BuiltInVariable::kpt00J, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00K00D[2]       = {&BuiltInVariable::kpt00K, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00K20B00B[3]    = {&BuiltInVariable::kpt00K, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00K20B00D[3]    = {&BuiltInVariable::kpt00K, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00K20B20B20B[4] = {&BuiltInVariable::kpt00K, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00L00D[2]       = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00L10B[2]       = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00L20B00B10D[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00L20B00D[3]    = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00L20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00L20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00L20B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00L20B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00L20D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00L, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00M00D[2]    = {&BuiltInVariable::kVar_pt00M,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00M10B00B[3] = {
-    &BuiltInVariable::kVar_pt00M, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00M10D00D[3] = {
-    &BuiltInVariable::kVar_pt00M, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00M20B00B[3] = {
-    &BuiltInVariable::kVar_pt00M, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00M30B00B[3] = {
-    &BuiltInVariable::kVar_pt00M, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00N00D[2]    = {&BuiltInVariable::kVar_pt00N,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00N10B00B[3] = {
-    &BuiltInVariable::kVar_pt00N, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00N10D00D[3] = {
-    &BuiltInVariable::kVar_pt00N, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00N20B00B[3] = {
-    &BuiltInVariable::kVar_pt00N, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00N30B00B[3] = {
-    &BuiltInVariable::kVar_pt00N, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00L20B10D00B[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00L20B10D00D[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00L20B70D00D[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00L20D00D10D[4] = {&BuiltInVariable::kpt00L, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00M00D[2]       = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00M10B00B[3]    = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00M10D00D[3]    = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00M20B00B[3]    = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00M30B00B[3]    = {&BuiltInVariable::kpt00M, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00N00D[2]       = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00N10B00B[3]    = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00N10D00D[3]    = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00N20B00B[3]    = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00N30B00B[3]    = {&BuiltInVariable::kpt00N, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
 constexpr const TVariable *p00O10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00O10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00O10B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00O10D10D[3] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00O20B00D[3] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00O, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00O10B10D00D[4] = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00O10B70D00D[4] = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00O10D10D[3]    = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00O20B00D[3]    = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00O20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00O20B10D[3] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00O, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00O20B10D[3] = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00O30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00O30B10D[3] = {
-    &BuiltInVariable::kVar_pt00O, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00P10D00D[3] = {
-    &BuiltInVariable::kVar_pt00P, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00Q20D00D[3] = {
-    &BuiltInVariable::kVar_pt00Q, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00R00B00B00B[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00R00D[2]       = {&BuiltInVariable::kVar_pt00R,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00R10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R10B00D[3] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00O, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00O30B10D[3]    = {&BuiltInVariable::kpt00O, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00P10D00D[3]    = {&BuiltInVariable::kpt00P, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00Q20D00D[3]    = {&BuiltInVariable::kpt00Q, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00R00B00B00B[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00R00D[2]       = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00R10B00B10D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R10B00D[3]    = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00R10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R10B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00R10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00R10B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00R10D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R10B10D00B[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00R10B10D00D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00R10B70D00D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00R10D00D10D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R20B00B10D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00R20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00R30B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00R, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R20B10D00B[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00R30B00B10D[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00R30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00R30B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00R, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00S00D[2]       = {&BuiltInVariable::kVar_pt00S,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00S20B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00R, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00R30B10D00B[4] = {&BuiltInVariable::kpt00R, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00S00D[2]       = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00S20B00B20D[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00S20B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00S20B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00S20D00D20D[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00S30B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00S, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00S20B20D00B[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00S20D00D20D[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00S30B00B20D[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00S30B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00S30B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00S, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00T00D[2]    = {&BuiltInVariable::kVar_pt00T,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00T20B00B[3] = {
-    &BuiltInVariable::kVar_pt00T, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00T20B00D[3] = {
-    &BuiltInVariable::kVar_pt00T, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00T20B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00T, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00U00D[2]       = {&BuiltInVariable::kVar_pt00U,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00U10B[2]       = {&BuiltInVariable::kVar_pt00U,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00U20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00U20B00D[3] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00S, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00S30B20D00B[4] = {&BuiltInVariable::kpt00S, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00T00D[2]       = {&BuiltInVariable::kpt00T, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00T20B00B[3]    = {&BuiltInVariable::kpt00T, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00T20B00D[3]    = {&BuiltInVariable::kpt00T, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00T20B20B20B[4] = {&BuiltInVariable::kpt00T, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00U00D[2]       = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00U10B[2]       = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00U20B00B10D[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00U20B00D[3]    = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00U20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00U20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00U20B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00U20B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00U20D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00U, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00V10D00D[3] = {
-    &BuiltInVariable::kVar_pt00V, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00W20D00D[3] = {
-    &BuiltInVariable::kVar_pt00W, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00X00B00B00B[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00X00D[2]       = {&BuiltInVariable::kVar_pt00X,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00X10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X10B00D[3] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00U20B10D00B[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00U20B10D00D[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00U20B70D00D[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00U20D00D10D[4] = {&BuiltInVariable::kpt00U, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00V10D00D[3]    = {&BuiltInVariable::kpt00V, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00W20D00D[3]    = {&BuiltInVariable::kpt00W, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00X00B00B00B[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00X00D[2]       = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00X10B00B10D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X10B00D[3]    = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00X10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X10B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00X10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00X10B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00X10D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X10B10D00B[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00X10B10D00D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00X10B70D00D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00X10D00D10D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X20B00B10D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00X20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00X30B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00X, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X20B10D00B[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00X30B00B10D[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00X30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00X30B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00X, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00Y00D[2]       = {&BuiltInVariable::kVar_pt00Y,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00Y20B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00X, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00X30B10D00B[4] = {&BuiltInVariable::kpt00X, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00Y00D[2]       = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00Y20B00B20D[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00Y20B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00Y20B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00Y20D00D20D[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00Y30B00B20D[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt20D};
+    &BuiltInVariable::kpt00Y, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00Y20B20D00B[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00Y20D00D20D[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00Y30B00B20D[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt20D};
 constexpr const TVariable *p00Y30B20B20B20D[5] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p00Y30B20D00B[4] = {
-    &BuiltInVariable::kVar_pt00Y, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00Z00D[2]    = {&BuiltInVariable::kVar_pt00Z,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00Z20B00B[3] = {
-    &BuiltInVariable::kVar_pt00Z, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00Z20B00D[3] = {
-    &BuiltInVariable::kVar_pt00Z, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00Z20B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00Z, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00a00D[2]       = {&BuiltInVariable::kVar_pt00a,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00a10B[2]       = {&BuiltInVariable::kVar_pt00a,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00a20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00a20B00D[3] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00Y, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt20B,
+    &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p00Y30B20D00B[4] = {&BuiltInVariable::kpt00Y, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00Z00D[2]       = {&BuiltInVariable::kpt00Z, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00Z20B00B[3]    = {&BuiltInVariable::kpt00Z, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00Z20B00D[3]    = {&BuiltInVariable::kpt00Z, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00Z20B20B20B[4] = {&BuiltInVariable::kpt00Z, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00a00D[2]       = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00a10B[2]       = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00a20B00B10D[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00a20B00D[3]    = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00a20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00a20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00a20B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00a20B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00a20D00D10D[4] = {
-    &BuiltInVariable::kVar_pt00a, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00b10D00D[3] = {
-    &BuiltInVariable::kVar_pt00b, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00c20D00D[3] = {
-    &BuiltInVariable::kVar_pt00c, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00d00D[2]       = {&BuiltInVariable::kVar_pt00d,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00d10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00d10B00B70D[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt70D};
-constexpr const TVariable *p00d20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00a20B10D00B[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00a20B10D00D[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00a20B70D00D[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00a20D00D10D[4] = {&BuiltInVariable::kpt00a, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00b10D00D[3]    = {&BuiltInVariable::kpt00b, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00c20D00D[3]    = {&BuiltInVariable::kpt00c, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00d00D[2]       = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00d10B00B10D[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00d10B00B70D[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt70D};
+constexpr const TVariable *p00d20B00B10D[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00d20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00d20B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00d30B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00d, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00d20B10D00B[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00d30B00B10D[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00d30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00d30B10D00B[4] = {
-    &BuiltInVariable::kVar_pt00d, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00e00D[2]    = {&BuiltInVariable::kVar_pt00e,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00e20B00B[3] = {
-    &BuiltInVariable::kVar_pt00e, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00e30B00B[3] = {
-    &BuiltInVariable::kVar_pt00e, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00e30B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00e, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00f00D[2]       = {&BuiltInVariable::kVar_pt00f,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00f10B[2]       = {&BuiltInVariable::kVar_pt00f,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p00f20B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00f, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00f20B00B70D[4] = {
-    &BuiltInVariable::kVar_pt00f, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt70D};
-constexpr const TVariable *p00f30B00B[3] = {
-    &BuiltInVariable::kVar_pt00f, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00d, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00d30B10D00B[4] = {&BuiltInVariable::kpt00d, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00e00D[2]       = {&BuiltInVariable::kpt00e, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00e20B00B[3]    = {&BuiltInVariable::kpt00e, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00e30B00B[3]    = {&BuiltInVariable::kpt00e, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00e30B20B20B[4] = {&BuiltInVariable::kpt00e, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00f00D[2]       = {&BuiltInVariable::kpt00f, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00f10B[2]       = {&BuiltInVariable::kpt00f, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p00f20B00B10D[4] = {&BuiltInVariable::kpt00f, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00f20B00B70D[4] = {&BuiltInVariable::kpt00f, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt70D};
+constexpr const TVariable *p00f30B00B[3]    = {&BuiltInVariable::kpt00f, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
 constexpr const TVariable *p00f30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00f, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00f30B10D[3] = {
-    &BuiltInVariable::kVar_pt00f, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00f, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00f30B10D[3] = {&BuiltInVariable::kpt00f, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00g00B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00g00B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00g00B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00g00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00g, &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00g00B00B00D[4] = {&BuiltInVariable::kpt00g, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00g00B00D00B[4] = {&BuiltInVariable::kpt00g, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00g00D00D00D[4] = {&BuiltInVariable::kpt00g, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00g10B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00g10B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00g10B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00g, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00g10B00B00D[4] = {&BuiltInVariable::kpt00g, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00g10B00D00B[4] = {&BuiltInVariable::kpt00g, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p00g30B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00g30B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00g30B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00g, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00h00B[2]          = {&BuiltInVariable::kVar_pt00h,
-                                         &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00h00D[2]          = {&BuiltInVariable::kVar_pt00h,
-                                         &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00g, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00g30B00B00D[4] = {&BuiltInVariable::kpt00g, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00g30B00D00B[4] = {&BuiltInVariable::kpt00g, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00h00B[2]       = {&BuiltInVariable::kpt00h, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00h00D[2]       = {&BuiltInVariable::kpt00h, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00h10B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00h, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00h10B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00h, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00h10B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00h, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00h10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00h, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00h20B00B[3] = {
-    &BuiltInVariable::kVar_pt00h, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00i00B[2]          = {&BuiltInVariable::kVar_pt00i,
-                                         &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00i00D[2]          = {&BuiltInVariable::kVar_pt00i,
-                                         &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00h, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00h10B00B00D[4] = {&BuiltInVariable::kpt00h, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00h10B00D00B[4] = {&BuiltInVariable::kpt00h, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00h10D00D00D[4] = {&BuiltInVariable::kpt00h, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00h20B00B[3]    = {&BuiltInVariable::kpt00h, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00i00B[2]       = {&BuiltInVariable::kpt00i, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00i00D[2]       = {&BuiltInVariable::kpt00i, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00i20B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00i, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00i20B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00i, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00i20B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00i, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00j00D[2]    = {&BuiltInVariable::kVar_pt00j,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00k00D[2]    = {&BuiltInVariable::kVar_pt00k,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00k20B[2]    = {&BuiltInVariable::kVar_pt00k,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00k30B00B[3] = {
-    &BuiltInVariable::kVar_pt00k, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00k30B00D[3] = {
-    &BuiltInVariable::kVar_pt00k, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00k30B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00k, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00l00D[2]    = {&BuiltInVariable::kVar_pt00l,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00l20B[2]    = {&BuiltInVariable::kVar_pt00l,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00l30B00B[3] = {
-    &BuiltInVariable::kVar_pt00l, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00m00B[2]          = {&BuiltInVariable::kVar_pt00m,
-                                         &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00m00D[2]          = {&BuiltInVariable::kVar_pt00m,
-                                         &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00i, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00i20B00B00D[4] = {&BuiltInVariable::kpt00i, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00i20B00D00B[4] = {&BuiltInVariable::kpt00i, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00j00D[2]       = {&BuiltInVariable::kpt00j, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00k00D[2]       = {&BuiltInVariable::kpt00k, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00k20B[2]       = {&BuiltInVariable::kpt00k, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00k30B00B[3]    = {&BuiltInVariable::kpt00k, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00k30B00D[3]    = {&BuiltInVariable::kpt00k, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00k30B20B20B[4] = {&BuiltInVariable::kpt00k, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00l00D[2]       = {&BuiltInVariable::kpt00l, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00l20B[2]       = {&BuiltInVariable::kpt00l, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00l30B00B[3]    = {&BuiltInVariable::kpt00l, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00m00B[2]       = {&BuiltInVariable::kpt00m, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00m00D[2]       = {&BuiltInVariable::kpt00m, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00m20B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00m, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00m20B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00m, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00m20B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00m, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00m, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00m20B00B00D[4] = {&BuiltInVariable::kpt00m, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00m20B00D00B[4] = {&BuiltInVariable::kpt00m, &BuiltInVariable::kpt20B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p00m30B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00m, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00m30B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00m, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00m30B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00m, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00n10B00B10D[4] = {
-    &BuiltInVariable::kVar_pt00n, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00n10B00B70D[4] = {
-    &BuiltInVariable::kVar_pt00n, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt70D};
+    &BuiltInVariable::kpt00m, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00m30B00B00D[4] = {&BuiltInVariable::kpt00m, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00m30B00D00B[4] = {&BuiltInVariable::kpt00m, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00n10B00B10D[4] = {&BuiltInVariable::kpt00n, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00n10B00B70D[4] = {&BuiltInVariable::kpt00n, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt70D};
 constexpr const TVariable *p00n20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00n, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00n20B10D[3] = {
-    &BuiltInVariable::kVar_pt00n, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00n, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00n20B10D[3] = {&BuiltInVariable::kpt00n, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00n30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00n, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00n30B10D[3] = {
-    &BuiltInVariable::kVar_pt00n, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00n, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00n30B10D[3] = {&BuiltInVariable::kpt00n, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00o00B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00o00B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00o00B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00o00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00o, &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00o00B00B00D[4] = {&BuiltInVariable::kpt00o, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00o00B00D00B[4] = {&BuiltInVariable::kpt00o, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00o00D00D00D[4] = {&BuiltInVariable::kpt00o, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00o10B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00o10B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00o10B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00o, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00o10B00B00D[4] = {&BuiltInVariable::kpt00o, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00o10B00D00B[4] = {&BuiltInVariable::kpt00o, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p00o30B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00o30B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00o30B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00o, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00p00B[2]          = {&BuiltInVariable::kVar_pt00p,
-                                         &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00p00D[2]          = {&BuiltInVariable::kVar_pt00p,
-                                         &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00o, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00o30B00B00D[4] = {&BuiltInVariable::kpt00o, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00o30B00D00B[4] = {&BuiltInVariable::kpt00o, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00p00B[2]       = {&BuiltInVariable::kpt00p, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00p00D[2]       = {&BuiltInVariable::kpt00p, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00p10B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00p, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00p10B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00p, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00p10B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00p, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00p10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00p, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00p20B00B[3] = {
-    &BuiltInVariable::kVar_pt00p, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00p, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00p10B00B00D[4] = {&BuiltInVariable::kpt00p, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00p10B00D00B[4] = {&BuiltInVariable::kpt00p, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00p10D00D00D[4] = {&BuiltInVariable::kpt00p, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00p20B00B[3]    = {&BuiltInVariable::kpt00p, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
 constexpr const TVariable *p00q10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00q10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00q10B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00q10D10D[3] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00q20B00D[3] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00q, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00q10B10D00D[4] = {&BuiltInVariable::kpt00q, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00q10B70D00D[4] = {&BuiltInVariable::kpt00q, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00q10D10D[3]    = {&BuiltInVariable::kpt00q, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00q20B00D[3]    = {&BuiltInVariable::kpt00q, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00q20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00q20B10D[3] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00q, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00q20B10D[3] = {&BuiltInVariable::kpt00q, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00q30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00q30B10D[3] = {
-    &BuiltInVariable::kVar_pt00q, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00r00D[2]    = {&BuiltInVariable::kVar_pt00r,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00s00D[2]    = {&BuiltInVariable::kVar_pt00s,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00s20B[2]    = {&BuiltInVariable::kVar_pt00s,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00s30B00B[3] = {
-    &BuiltInVariable::kVar_pt00s, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00s30B00D[3] = {
-    &BuiltInVariable::kVar_pt00s, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00s30B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00s, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
+    &BuiltInVariable::kpt00q, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00q30B10D[3]    = {&BuiltInVariable::kpt00q, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00r00D[2]       = {&BuiltInVariable::kpt00r, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00s00D[2]       = {&BuiltInVariable::kpt00s, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00s20B[2]       = {&BuiltInVariable::kpt00s, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00s30B00B[3]    = {&BuiltInVariable::kpt00s, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00s30B00D[3]    = {&BuiltInVariable::kpt00s, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00s30B20B20B[4] = {&BuiltInVariable::kpt00s, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
 constexpr const TVariable *p00t00B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00t00B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00t00B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00t00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00t, &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00t00B00B00D[4] = {&BuiltInVariable::kpt00t, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00t00B00D00B[4] = {&BuiltInVariable::kpt00t, &BuiltInVariable::kpt00B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00t00D00D00D[4] = {&BuiltInVariable::kpt00t, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00t10B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00t10B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00t10B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00t, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00t10B00B00D[4] = {&BuiltInVariable::kpt00t, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00t10B00D00B[4] = {&BuiltInVariable::kpt00t, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p00t30B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00t30B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00t30B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00t, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00u00B[2]          = {&BuiltInVariable::kVar_pt00u,
-                                         &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00u00D[2]          = {&BuiltInVariable::kVar_pt00u,
-                                         &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00t, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00t30B00B00D[4] = {&BuiltInVariable::kpt00t, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00t30B00D00B[4] = {&BuiltInVariable::kpt00t, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00u00B[2]       = {&BuiltInVariable::kpt00u, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00u00D[2]       = {&BuiltInVariable::kpt00u, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00u10B00B00B00D[5] = {
-    &BuiltInVariable::kVar_pt00u, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00u10B00B00D[4] = {
-    &BuiltInVariable::kVar_pt00u, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00u10B00D00B[4] = {
-    &BuiltInVariable::kVar_pt00u, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00u10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00u, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00u20B00B[3] = {
-    &BuiltInVariable::kVar_pt00u, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00u, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt00B,
+    &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00u10B00B00D[4] = {&BuiltInVariable::kpt00u, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00u10B00D00B[4] = {&BuiltInVariable::kpt00u, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00u10D00D00D[4] = {&BuiltInVariable::kpt00u, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00u20B00B[3]    = {&BuiltInVariable::kpt00u, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
 constexpr const TVariable *p00v10B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00v10B10D00D[4] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00v10B70D00D[4] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt70D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00v10D10D[3] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00v20B00D[3] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt00v, &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00v10B10D00D[4] = {&BuiltInVariable::kpt00v, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00v10B70D00D[4] = {&BuiltInVariable::kpt00v, &BuiltInVariable::kpt10B,
+                                               &BuiltInVariable::kpt70D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00v10D10D[3]    = {&BuiltInVariable::kpt00v, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00v20B00D[3]    = {&BuiltInVariable::kpt00v, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00D};
 constexpr const TVariable *p00v20B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00v20B10D[3] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt10D};
+    &BuiltInVariable::kpt00v, &BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00v20B10D[3] = {&BuiltInVariable::kpt00v, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt10D};
 constexpr const TVariable *p00v30B10B10B10D[5] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10B,
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00v30B10D[3] = {
-    &BuiltInVariable::kVar_pt00v, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p00w00D[2]    = {&BuiltInVariable::kVar_pt00w,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00x00D[2]    = {&BuiltInVariable::kVar_pt00x,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00x20B[2]    = {&BuiltInVariable::kVar_pt00x,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00x30B00B[3] = {
-    &BuiltInVariable::kVar_pt00x, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00x30B00D[3] = {
-    &BuiltInVariable::kVar_pt00x, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00x30B20B20B[4] = {
-    &BuiltInVariable::kVar_pt00x, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt20B,
-    &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p00y10D00B[3] = {
-    &BuiltInVariable::kVar_pt00y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00y10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00y10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt00y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p00y10D30B[3] = {
-    &BuiltInVariable::kVar_pt00y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p00z10D00B[3] = {
-    &BuiltInVariable::kVar_pt00z, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p00z10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt00z, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p00z10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt00z, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p00z10D30D[3] = {
-    &BuiltInVariable::kVar_pt00z, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01A10D00B[3] = {
-    &BuiltInVariable::kVar_pt01A, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01A10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01A, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01A10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01A, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01A10D30E[3] = {
-    &BuiltInVariable::kVar_pt01A, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01B20D00B[3] = {
-    &BuiltInVariable::kVar_pt01B, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01B20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01B, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01B20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01B, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01B20D30B[3] = {
-    &BuiltInVariable::kVar_pt01B, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01C20D00B[3] = {
-    &BuiltInVariable::kVar_pt01C, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01C20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01C, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01C20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01C, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01C20D30D[3] = {
-    &BuiltInVariable::kVar_pt01C, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01D20D00B[3] = {
-    &BuiltInVariable::kVar_pt01D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01D20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01D20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01D20D30E[3] = {
-    &BuiltInVariable::kVar_pt01D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01E20D00B[3] = {
-    &BuiltInVariable::kVar_pt01E, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01E20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01E, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01E20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01E, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01E20D30B[3] = {
-    &BuiltInVariable::kVar_pt01E, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01F20D00B[3] = {
-    &BuiltInVariable::kVar_pt01F, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01F20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01F, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01F20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01F, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01F20D30D[3] = {
-    &BuiltInVariable::kVar_pt01F, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01G20D00B[3] = {
-    &BuiltInVariable::kVar_pt01G, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01G20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01G, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01G20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01G, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01G20D30E[3] = {
-    &BuiltInVariable::kVar_pt01G, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01H20D00B[3] = {
-    &BuiltInVariable::kVar_pt01H, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01H20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01H, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01H20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01H, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01H20D30B[3] = {
-    &BuiltInVariable::kVar_pt01H, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01I20D00B[3] = {
-    &BuiltInVariable::kVar_pt01I, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01I20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01I, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01I20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01I, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01I20D30D[3] = {
-    &BuiltInVariable::kVar_pt01I, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01J20D00B[3] = {
-    &BuiltInVariable::kVar_pt01J, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01J20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01J, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01J20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01J, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01J20D30E[3] = {
-    &BuiltInVariable::kVar_pt01J, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01K00D00B[3] = {
-    &BuiltInVariable::kVar_pt01K, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01K00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01K, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01K00D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01K, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01K00D30B[3] = {
-    &BuiltInVariable::kVar_pt01K, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01L00D00B[3] = {
-    &BuiltInVariable::kVar_pt01L, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01L00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01L, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01L00D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01L, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01L00D30D[3] = {
-    &BuiltInVariable::kVar_pt01L, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01M00D00B[3] = {
-    &BuiltInVariable::kVar_pt01M, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01M00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01M, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01M00D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01M, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01M00D30E[3] = {
-    &BuiltInVariable::kVar_pt01M, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01N10D00B[3] = {
-    &BuiltInVariable::kVar_pt01N, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01N10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01N, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01N10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01N, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01N10D30B[3] = {
-    &BuiltInVariable::kVar_pt01N, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01O10D00B[3] = {
-    &BuiltInVariable::kVar_pt01O, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01O10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01O, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01O10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01O, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01O10D30D[3] = {
-    &BuiltInVariable::kVar_pt01O, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01P10D00B[3] = {
-    &BuiltInVariable::kVar_pt01P, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01P10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01P, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01P10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01P, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01P10D30E[3] = {
-    &BuiltInVariable::kVar_pt01P, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01Q10D00D00B[4] = {
-    &BuiltInVariable::kVar_pt01Q, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt00v, &BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B,
+    &BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00v30B10D[3]    = {&BuiltInVariable::kpt00v, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt10D};
+constexpr const TVariable *p00w00D[2]       = {&BuiltInVariable::kpt00w, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00x00D[2]       = {&BuiltInVariable::kpt00x, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00x20B[2]       = {&BuiltInVariable::kpt00x, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00x30B00B[3]    = {&BuiltInVariable::kpt00x, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00x30B00D[3]    = {&BuiltInVariable::kpt00x, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00x30B20B20B[4] = {&BuiltInVariable::kpt00x, &BuiltInVariable::kpt30B,
+                                               &BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p00y10D00B[3]    = {&BuiltInVariable::kpt00y, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00y10D00D00D[4] = {&BuiltInVariable::kpt00y, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00y10D00E00E[4] = {&BuiltInVariable::kpt00y, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p00y10D30B[3]    = {&BuiltInVariable::kpt00y, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p00z10D00B[3]    = {&BuiltInVariable::kpt00z, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p00z10D00D00D[4] = {&BuiltInVariable::kpt00z, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p00z10D00E00E[4] = {&BuiltInVariable::kpt00z, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p00z10D30D[3]    = {&BuiltInVariable::kpt00z, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01A10D00B[3]    = {&BuiltInVariable::kpt01A, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01A10D00D00D[4] = {&BuiltInVariable::kpt01A, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01A10D00E00E[4] = {&BuiltInVariable::kpt01A, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01A10D30E[3]    = {&BuiltInVariable::kpt01A, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01B20D00B[3]    = {&BuiltInVariable::kpt01B, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01B20D00D00D[4] = {&BuiltInVariable::kpt01B, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01B20D00E00E[4] = {&BuiltInVariable::kpt01B, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01B20D30B[3]    = {&BuiltInVariable::kpt01B, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01C20D00B[3]    = {&BuiltInVariable::kpt01C, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01C20D00D00D[4] = {&BuiltInVariable::kpt01C, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01C20D00E00E[4] = {&BuiltInVariable::kpt01C, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01C20D30D[3]    = {&BuiltInVariable::kpt01C, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01D20D00B[3]    = {&BuiltInVariable::kpt01D, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01D20D00D00D[4] = {&BuiltInVariable::kpt01D, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01D20D00E00E[4] = {&BuiltInVariable::kpt01D, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01D20D30E[3]    = {&BuiltInVariable::kpt01D, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01E20D00B[3]    = {&BuiltInVariable::kpt01E, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01E20D00D00D[4] = {&BuiltInVariable::kpt01E, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01E20D00E00E[4] = {&BuiltInVariable::kpt01E, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01E20D30B[3]    = {&BuiltInVariable::kpt01E, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01F20D00B[3]    = {&BuiltInVariable::kpt01F, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01F20D00D00D[4] = {&BuiltInVariable::kpt01F, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01F20D00E00E[4] = {&BuiltInVariable::kpt01F, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01F20D30D[3]    = {&BuiltInVariable::kpt01F, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01G20D00B[3]    = {&BuiltInVariable::kpt01G, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01G20D00D00D[4] = {&BuiltInVariable::kpt01G, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01G20D00E00E[4] = {&BuiltInVariable::kpt01G, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01G20D30E[3]    = {&BuiltInVariable::kpt01G, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01H20D00B[3]    = {&BuiltInVariable::kpt01H, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01H20D00D00D[4] = {&BuiltInVariable::kpt01H, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01H20D00E00E[4] = {&BuiltInVariable::kpt01H, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01H20D30B[3]    = {&BuiltInVariable::kpt01H, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01I20D00B[3]    = {&BuiltInVariable::kpt01I, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01I20D00D00D[4] = {&BuiltInVariable::kpt01I, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01I20D00E00E[4] = {&BuiltInVariable::kpt01I, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01I20D30D[3]    = {&BuiltInVariable::kpt01I, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01J20D00B[3]    = {&BuiltInVariable::kpt01J, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01J20D00D00D[4] = {&BuiltInVariable::kpt01J, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01J20D00E00E[4] = {&BuiltInVariable::kpt01J, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01J20D30E[3]    = {&BuiltInVariable::kpt01J, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01K00D00B[3]    = {&BuiltInVariable::kpt01K, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01K00D00D00D[4] = {&BuiltInVariable::kpt01K, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01K00D00E00E[4] = {&BuiltInVariable::kpt01K, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01K00D30B[3]    = {&BuiltInVariable::kpt01K, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01L00D00B[3]    = {&BuiltInVariable::kpt01L, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01L00D00D00D[4] = {&BuiltInVariable::kpt01L, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01L00D00E00E[4] = {&BuiltInVariable::kpt01L, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01L00D30D[3]    = {&BuiltInVariable::kpt01L, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01M00D00B[3]    = {&BuiltInVariable::kpt01M, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01M00D00D00D[4] = {&BuiltInVariable::kpt01M, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01M00D00E00E[4] = {&BuiltInVariable::kpt01M, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01M00D30E[3]    = {&BuiltInVariable::kpt01M, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01N10D00B[3]    = {&BuiltInVariable::kpt01N, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01N10D00D00D[4] = {&BuiltInVariable::kpt01N, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01N10D00E00E[4] = {&BuiltInVariable::kpt01N, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01N10D30B[3]    = {&BuiltInVariable::kpt01N, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01O10D00B[3]    = {&BuiltInVariable::kpt01O, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01O10D00D00D[4] = {&BuiltInVariable::kpt01O, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01O10D00E00E[4] = {&BuiltInVariable::kpt01O, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01O10D30D[3]    = {&BuiltInVariable::kpt01O, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01P10D00B[3]    = {&BuiltInVariable::kpt01P, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01P10D00D00D[4] = {&BuiltInVariable::kpt01P, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01P10D00E00E[4] = {&BuiltInVariable::kpt01P, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01P10D30E[3]    = {&BuiltInVariable::kpt01P, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01Q10D00D00B[4] = {&BuiltInVariable::kpt01Q, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p01Q10D00D00D00D[5] = {
-    &BuiltInVariable::kVar_pt01Q, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt01Q, &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p01Q10D00D00E00E[5] = {
-    &BuiltInVariable::kVar_pt01Q, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01Q10D00D30B[4] = {
-    &BuiltInVariable::kVar_pt01Q, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01R10D00D00B[4] = {
-    &BuiltInVariable::kVar_pt01R, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt01Q, &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01Q10D00D30B[4] = {&BuiltInVariable::kpt01Q, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01R10D00D00B[4] = {&BuiltInVariable::kpt01R, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p01R10D00D00D00D[5] = {
-    &BuiltInVariable::kVar_pt01R, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt01R, &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p01R10D00D00E00E[5] = {
-    &BuiltInVariable::kVar_pt01R, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01R10D00D30D[4] = {
-    &BuiltInVariable::kVar_pt01R, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01S10D00D00B[4] = {
-    &BuiltInVariable::kVar_pt01S, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt01R, &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01R10D00D30D[4] = {&BuiltInVariable::kpt01R, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01S10D00D00B[4] = {&BuiltInVariable::kpt01S, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p01S10D00D00D00D[5] = {
-    &BuiltInVariable::kVar_pt01S, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt01S, &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p01S10D00D00E00E[5] = {
-    &BuiltInVariable::kVar_pt01S, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01S10D00D30E[4] = {
-    &BuiltInVariable::kVar_pt01S, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01T20D00D00B[4] = {
-    &BuiltInVariable::kVar_pt01T, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt01S, &BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01S10D00D30E[4] = {&BuiltInVariable::kpt01S, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01T20D00D00B[4] = {&BuiltInVariable::kpt01T, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p01T20D00D00D00D[5] = {
-    &BuiltInVariable::kVar_pt01T, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt01T, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p01T20D00D00E00E[5] = {
-    &BuiltInVariable::kVar_pt01T, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01T20D00D30B[4] = {
-    &BuiltInVariable::kVar_pt01T, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01U20D00D00B[4] = {
-    &BuiltInVariable::kVar_pt01U, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt01T, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01T20D00D30B[4] = {&BuiltInVariable::kpt01T, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01U20D00D00B[4] = {&BuiltInVariable::kpt01U, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p01U20D00D00D00D[5] = {
-    &BuiltInVariable::kVar_pt01U, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt01U, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p01U20D00D00E00E[5] = {
-    &BuiltInVariable::kVar_pt01U, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01U20D00D30D[4] = {
-    &BuiltInVariable::kVar_pt01U, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01V20D00D00B[4] = {
-    &BuiltInVariable::kVar_pt01V, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00B};
+    &BuiltInVariable::kpt01U, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01U20D00D30D[4] = {&BuiltInVariable::kpt01U, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01V20D00D00B[4] = {&BuiltInVariable::kpt01V, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00B};
 constexpr const TVariable *p01V20D00D00D00D[5] = {
-    &BuiltInVariable::kVar_pt01V, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
+    &BuiltInVariable::kpt01V, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
 constexpr const TVariable *p01V20D00D00E00E[5] = {
-    &BuiltInVariable::kVar_pt01V, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01V20D00D30E[4] = {
-    &BuiltInVariable::kVar_pt01V, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01W10D00B[3] = {
-    &BuiltInVariable::kVar_pt01W, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01W10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01W, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01W10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01W, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01W10D30B[3] = {
-    &BuiltInVariable::kVar_pt01W, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01X10D00B[3] = {
-    &BuiltInVariable::kVar_pt01X, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01X10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01X, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01X10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01X, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01X10D30D[3] = {
-    &BuiltInVariable::kVar_pt01X, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01Y10D00B[3] = {
-    &BuiltInVariable::kVar_pt01Y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01Y10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01Y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01Y10D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01Y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01Y10D30E[3] = {
-    &BuiltInVariable::kVar_pt01Y, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01Z20D00B[3] = {
-    &BuiltInVariable::kVar_pt01Z, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01Z20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01Z, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01Z20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01Z, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01Z20D30B[3] = {
-    &BuiltInVariable::kVar_pt01Z, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01a20D00B[3] = {
-    &BuiltInVariable::kVar_pt01a, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01a20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01a, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01a20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01a, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01a20D30D[3] = {
-    &BuiltInVariable::kVar_pt01a, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01b20D00B[3] = {
-    &BuiltInVariable::kVar_pt01b, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01b20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01b, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01b20D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01b, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01b20D30E[3] = {
-    &BuiltInVariable::kVar_pt01b, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01c[1]       = {&BuiltInVariable::kVar_pt01c};
-constexpr const TVariable *p01d[1]       = {&BuiltInVariable::kVar_pt01d};
-constexpr const TVariable *p01e[1]       = {&BuiltInVariable::kVar_pt01e};
-constexpr const TVariable *p01f00D00B[3] = {
-    &BuiltInVariable::kVar_pt01f, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01f00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01f, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01f00D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01f, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01f00D30B[3] = {
-    &BuiltInVariable::kVar_pt01f, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p01g00D00B[3] = {
-    &BuiltInVariable::kVar_pt01g, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01g00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01g, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01g00D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01g, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01g00D30D[3] = {
-    &BuiltInVariable::kVar_pt01g, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p01h00D00B[3] = {
-    &BuiltInVariable::kVar_pt01h, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p01h00D00D00D[4] = {
-    &BuiltInVariable::kVar_pt01h, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01h00D00E00E[4] = {
-    &BuiltInVariable::kVar_pt01h, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00E,
-    &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p01h00D30E[3] = {
-    &BuiltInVariable::kVar_pt01h, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p01i[1]       = {&BuiltInVariable::kVar_pt01i};
-constexpr const TVariable *p01j[1]       = {&BuiltInVariable::kVar_pt01j};
-constexpr const TVariable *p01k[1]       = {&BuiltInVariable::kVar_pt01k};
-constexpr const TVariable *p01l00D[2]    = {&BuiltInVariable::kVar_pt01l,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01m00D[2]    = {&BuiltInVariable::kVar_pt01m,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p01n00D[2]    = {&BuiltInVariable::kVar_pt01n,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10B00B00B[3] = {
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p10B00D[2]    = {&BuiltInVariable::kVar_pt10B,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10B10B00B[3] = {
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p10B10B10B[3] = {
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p10B10B10F[3] = {
-    &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10B, &BuiltInVariable::kVar_pt10F};
-constexpr const TVariable *p10B10D[2]    = {&BuiltInVariable::kVar_pt10B,
-                                         &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p10B20B[2]    = {&BuiltInVariable::kVar_pt10B,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p10B30B[2]    = {&BuiltInVariable::kVar_pt10B,
-                                         &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p10B_o_10B[2] = {&BuiltInVariable::kVar_pt10B,
-                                            &BuiltInVariable::kVar_pt_o_10B};
-constexpr const TVariable *p10B_o_10D[2] = {&BuiltInVariable::kVar_pt10B,
-                                            &BuiltInVariable::kVar_pt_o_10D};
-constexpr const TVariable *p10C00C00C[3] = {
-    &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C};
-constexpr const TVariable *p10C10C00B[3] = {
-    &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p10C10C00C[3] = {
-    &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt00C};
-constexpr const TVariable *p10C10C10C[3] = {
-    &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt10C};
-constexpr const TVariable *p10C10C10F[3] = {
-    &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt10C, &BuiltInVariable::kVar_pt10F};
-constexpr const TVariable *p10C10D[2]    = {&BuiltInVariable::kVar_pt10C,
-                                         &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p10C_o_10C[2] = {&BuiltInVariable::kVar_pt10C,
-                                            &BuiltInVariable::kVar_pt_o_10C};
-constexpr const TVariable *p10C_o_10D[2] = {&BuiltInVariable::kVar_pt10C,
-                                            &BuiltInVariable::kVar_pt_o_10D};
-constexpr const TVariable *p10D00D00D[3] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10D10D00D00D[4] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10D10D10D[3] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D};
-constexpr const TVariable *p10D10D10F[3] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10F};
+    &BuiltInVariable::kpt01V, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt00D,
+    &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01V20D00D30E[4] = {&BuiltInVariable::kpt01V, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01W10D00B[3]    = {&BuiltInVariable::kpt01W, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01W10D00D00D[4] = {&BuiltInVariable::kpt01W, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01W10D00E00E[4] = {&BuiltInVariable::kpt01W, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01W10D30B[3]    = {&BuiltInVariable::kpt01W, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01X10D00B[3]    = {&BuiltInVariable::kpt01X, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01X10D00D00D[4] = {&BuiltInVariable::kpt01X, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01X10D00E00E[4] = {&BuiltInVariable::kpt01X, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01X10D30D[3]    = {&BuiltInVariable::kpt01X, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01Y10D00B[3]    = {&BuiltInVariable::kpt01Y, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01Y10D00D00D[4] = {&BuiltInVariable::kpt01Y, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01Y10D00E00E[4] = {&BuiltInVariable::kpt01Y, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01Y10D30E[3]    = {&BuiltInVariable::kpt01Y, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01Z20D00B[3]    = {&BuiltInVariable::kpt01Z, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01Z20D00D00D[4] = {&BuiltInVariable::kpt01Z, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01Z20D00E00E[4] = {&BuiltInVariable::kpt01Z, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01Z20D30B[3]    = {&BuiltInVariable::kpt01Z, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01a20D00B[3]    = {&BuiltInVariable::kpt01a, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01a20D00D00D[4] = {&BuiltInVariable::kpt01a, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01a20D00E00E[4] = {&BuiltInVariable::kpt01a, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01a20D30D[3]    = {&BuiltInVariable::kpt01a, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01b20D00B[3]    = {&BuiltInVariable::kpt01b, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01b20D00D00D[4] = {&BuiltInVariable::kpt01b, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01b20D00E00E[4] = {&BuiltInVariable::kpt01b, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01b20D30E[3]    = {&BuiltInVariable::kpt01b, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p01c[1]          = {&BuiltInVariable::kpt01c};
+constexpr const TVariable *p01d[1]          = {&BuiltInVariable::kpt01d};
+constexpr const TVariable *p01e[1]          = {&BuiltInVariable::kpt01e};
+constexpr const TVariable *p01f00D00B[3]    = {&BuiltInVariable::kpt01f, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01f00D00D00D[4] = {&BuiltInVariable::kpt01f, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01f00D00E00E[4] = {&BuiltInVariable::kpt01f, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01f00D30B[3]    = {&BuiltInVariable::kpt01f, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p01g00D00B[3]    = {&BuiltInVariable::kpt01g, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01g00D00D00D[4] = {&BuiltInVariable::kpt01g, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01g00D00E00E[4] = {&BuiltInVariable::kpt01g, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01g00D30D[3]    = {&BuiltInVariable::kpt01g, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p01h00D00B[3]    = {&BuiltInVariable::kpt01h, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p01h00D00D00D[4] = {&BuiltInVariable::kpt01h, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p01h00D00E00E[4] = {&BuiltInVariable::kpt01h, &BuiltInVariable::kpt00D,
+                                               &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
+constexpr const TVariable *p01h00D30E[3]    = {&BuiltInVariable::kpt01h, &BuiltInVariable::kpt00D,
+                                            &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 *p10B00D[2]       = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10B10B00B[3]    = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p10B10B10B[3]    = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt10B};
+constexpr const TVariable *p10B10B10F[3]    = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10B,
+                                            &BuiltInVariable::kpt10F};
+constexpr const TVariable *p10B10D[2]       = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p10B20B[2]       = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p10B30B[2]       = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p10B_o_10B[2] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt_o_10B};
+constexpr const TVariable *p10B_o_10D[2] = {&BuiltInVariable::kpt10B, &BuiltInVariable::kpt_o_10D};
+constexpr const TVariable *p10C00C00C[3] = {&BuiltInVariable::kpt10C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt00C};
+constexpr const TVariable *p10C10C00B[3] = {&BuiltInVariable::kpt10C, &BuiltInVariable::kpt10C,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p10C10C00C[3] = {&BuiltInVariable::kpt10C, &BuiltInVariable::kpt10C,
+                                            &BuiltInVariable::kpt00C};
+constexpr const TVariable *p10C10C10C[3] = {&BuiltInVariable::kpt10C, &BuiltInVariable::kpt10C,
+                                            &BuiltInVariable::kpt10C};
+constexpr const TVariable *p10C10C10F[3] = {&BuiltInVariable::kpt10C, &BuiltInVariable::kpt10C,
+                                            &BuiltInVariable::kpt10F};
+constexpr const TVariable *p10C10D[2]    = {&BuiltInVariable::kpt10C, &BuiltInVariable::kpt10D};
+constexpr const TVariable *p10C_o_10C[2] = {&BuiltInVariable::kpt10C, &BuiltInVariable::kpt_o_10C};
+constexpr const TVariable *p10C_o_10D[2] = {&BuiltInVariable::kpt10C, &BuiltInVariable::kpt_o_10D};
+constexpr const TVariable *p10D00D00D[3] = {&BuiltInVariable::kpt10D, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10D10D00D00D[4] = {&BuiltInVariable::kpt10D, &BuiltInVariable::kpt10D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10D10D10D[3]    = {&BuiltInVariable::kpt10D, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt10D};
+constexpr const TVariable *p10D10D10F[3]    = {&BuiltInVariable::kpt10D, &BuiltInVariable::kpt10D,
+                                            &BuiltInVariable::kpt10F};
 constexpr const TVariable *p10D10D_o_10D_o_10D[4] = {
-    &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt10D, &BuiltInVariable::kVar_pt_o_10D,
-    &BuiltInVariable::kVar_pt_o_10D};
-constexpr const TVariable *p10E00D00D[3] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10E00E00E[3] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p10E10E00D00D[4] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p10E10E10E[3] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E};
-constexpr const TVariable *p10E10E10F[3] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10F};
+    &BuiltInVariable::kpt10D, &BuiltInVariable::kpt10D, &BuiltInVariable::kpt_o_10D,
+    &BuiltInVariable::kpt_o_10D};
+constexpr const TVariable *p10E00D00D[3]    = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10E00E00E[3]    = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
+constexpr const TVariable *p10E10E00D00D[4] = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt10E,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p10E10E10E[3]    = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt10E,
+                                            &BuiltInVariable::kpt10E};
+constexpr const TVariable *p10E10E10F[3]    = {&BuiltInVariable::kpt10E, &BuiltInVariable::kpt10E,
+                                            &BuiltInVariable::kpt10F};
 constexpr const TVariable *p10E10E_o_10E_o_10E[4] = {
-    &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt10E, &BuiltInVariable::kVar_pt_o_10E,
-    &BuiltInVariable::kVar_pt_o_10E};
-constexpr const TVariable *p10F10F10F[3] = {
-    &BuiltInVariable::kVar_pt10F, &BuiltInVariable::kVar_pt10F, &BuiltInVariable::kVar_pt10F};
-constexpr const TVariable *p20B00B00B[3] = {
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p20B00D[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20B00H[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt00H};
-constexpr const TVariable *p20B10B[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p20B20B00B[3] = {
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p20B20B20B[3] = {
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p20B20B20F[3] = {
-    &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20B, &BuiltInVariable::kVar_pt20F};
-constexpr const TVariable *p20B20D[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p20B30B[2]    = {&BuiltInVariable::kVar_pt20B,
-                                         &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p20B_o_20B[2] = {&BuiltInVariable::kVar_pt20B,
-                                            &BuiltInVariable::kVar_pt_o_20B};
-constexpr const TVariable *p20B_o_20D[2] = {&BuiltInVariable::kVar_pt20B,
-                                            &BuiltInVariable::kVar_pt_o_20D};
-constexpr const TVariable *p20C00C00C[3] = {
-    &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C};
-constexpr const TVariable *p20C20C00B[3] = {
-    &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p20C20C00C[3] = {
-    &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt00C};
-constexpr const TVariable *p20C20C20C[3] = {
-    &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt20C};
-constexpr const TVariable *p20C20C20F[3] = {
-    &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt20C, &BuiltInVariable::kVar_pt20F};
-constexpr const TVariable *p20C20D[2]    = {&BuiltInVariable::kVar_pt20C,
-                                         &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p20C_o_20C[2] = {&BuiltInVariable::kVar_pt20C,
-                                            &BuiltInVariable::kVar_pt_o_20C};
-constexpr const TVariable *p20C_o_20D[2] = {&BuiltInVariable::kVar_pt20C,
-                                            &BuiltInVariable::kVar_pt_o_20D};
-constexpr const TVariable *p20D00D00D[3] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20D20D00D00D[4] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20D20D20D[3] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D};
-constexpr const TVariable *p20D20D20F[3] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20F};
+    &BuiltInVariable::kpt10E, &BuiltInVariable::kpt10E, &BuiltInVariable::kpt_o_10E,
+    &BuiltInVariable::kpt_o_10E};
+constexpr const TVariable *p10F10F10F[3] = {&BuiltInVariable::kpt10F, &BuiltInVariable::kpt10F,
+                                            &BuiltInVariable::kpt10F};
+constexpr const TVariable *p20B00B00B[3] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p20B00D[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20B00H[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt00H};
+constexpr const TVariable *p20B10B[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p20B20B00B[3] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p20B20B20B[3] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt20B};
+constexpr const TVariable *p20B20B20F[3] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt20B,
+                                            &BuiltInVariable::kpt20F};
+constexpr const TVariable *p20B20D[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p20B30B[2]    = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt30B};
+constexpr const TVariable *p20B_o_20B[2] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt_o_20B};
+constexpr const TVariable *p20B_o_20D[2] = {&BuiltInVariable::kpt20B, &BuiltInVariable::kpt_o_20D};
+constexpr const TVariable *p20C00C00C[3] = {&BuiltInVariable::kpt20C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt00C};
+constexpr const TVariable *p20C20C00B[3] = {&BuiltInVariable::kpt20C, &BuiltInVariable::kpt20C,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p20C20C00C[3] = {&BuiltInVariable::kpt20C, &BuiltInVariable::kpt20C,
+                                            &BuiltInVariable::kpt00C};
+constexpr const TVariable *p20C20C20C[3] = {&BuiltInVariable::kpt20C, &BuiltInVariable::kpt20C,
+                                            &BuiltInVariable::kpt20C};
+constexpr const TVariable *p20C20C20F[3] = {&BuiltInVariable::kpt20C, &BuiltInVariable::kpt20C,
+                                            &BuiltInVariable::kpt20F};
+constexpr const TVariable *p20C20D[2]    = {&BuiltInVariable::kpt20C, &BuiltInVariable::kpt20D};
+constexpr const TVariable *p20C_o_20C[2] = {&BuiltInVariable::kpt20C, &BuiltInVariable::kpt_o_20C};
+constexpr const TVariable *p20C_o_20D[2] = {&BuiltInVariable::kpt20C, &BuiltInVariable::kpt_o_20D};
+constexpr const TVariable *p20D00D00D[3] = {&BuiltInVariable::kpt20D, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20D20D00D00D[4] = {&BuiltInVariable::kpt20D, &BuiltInVariable::kpt20D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20D20D20D[3]    = {&BuiltInVariable::kpt20D, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt20D};
+constexpr const TVariable *p20D20D20F[3]    = {&BuiltInVariable::kpt20D, &BuiltInVariable::kpt20D,
+                                            &BuiltInVariable::kpt20F};
 constexpr const TVariable *p20D20D_o_20D_o_20D[4] = {
-    &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt20D, &BuiltInVariable::kVar_pt_o_20D,
-    &BuiltInVariable::kVar_pt_o_20D};
-constexpr const TVariable *p20E00D00D[3] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20E00E00E[3] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p20E20E00D00D[4] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p20E20E20E[3] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E};
-constexpr const TVariable *p20E20E20F[3] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20F};
+    &BuiltInVariable::kpt20D, &BuiltInVariable::kpt20D, &BuiltInVariable::kpt_o_20D,
+    &BuiltInVariable::kpt_o_20D};
+constexpr const TVariable *p20E00D00D[3]    = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20E00E00E[3]    = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
+constexpr const TVariable *p20E20E00D00D[4] = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt20E,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p20E20E20E[3]    = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt20E,
+                                            &BuiltInVariable::kpt20E};
+constexpr const TVariable *p20E20E20F[3]    = {&BuiltInVariable::kpt20E, &BuiltInVariable::kpt20E,
+                                            &BuiltInVariable::kpt20F};
 constexpr const TVariable *p20E20E_o_20E_o_20E[4] = {
-    &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt20E, &BuiltInVariable::kVar_pt_o_20E,
-    &BuiltInVariable::kVar_pt_o_20E};
-constexpr const TVariable *p20F20F20F[3] = {
-    &BuiltInVariable::kVar_pt20F, &BuiltInVariable::kVar_pt20F, &BuiltInVariable::kVar_pt20F};
-constexpr const TVariable *p30B00B00B[3] = {
-    &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p30B00D[2]    = {&BuiltInVariable::kVar_pt30B,
-                                         &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30B10B[2]    = {&BuiltInVariable::kVar_pt30B,
-                                         &BuiltInVariable::kVar_pt10B};
-constexpr const TVariable *p30B20B[2]    = {&BuiltInVariable::kVar_pt30B,
-                                         &BuiltInVariable::kVar_pt20B};
-constexpr const TVariable *p30B30B00B[3] = {
-    &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p30B30B30B[3] = {
-    &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30B};
-constexpr const TVariable *p30B30B30F[3] = {
-    &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30B, &BuiltInVariable::kVar_pt30F};
-constexpr const TVariable *p30B30D[2]    = {&BuiltInVariable::kVar_pt30B,
-                                         &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p30B_o_30B[2] = {&BuiltInVariable::kVar_pt30B,
-                                            &BuiltInVariable::kVar_pt_o_30B};
-constexpr const TVariable *p30B_o_30D[2] = {&BuiltInVariable::kVar_pt30B,
-                                            &BuiltInVariable::kVar_pt_o_30D};
-constexpr const TVariable *p30C00C00C[3] = {
-    &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt00C, &BuiltInVariable::kVar_pt00C};
-constexpr const TVariable *p30C30C00B[3] = {
-    &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt00B};
-constexpr const TVariable *p30C30C00C[3] = {
-    &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt00C};
-constexpr const TVariable *p30C30C30C[3] = {
-    &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt30C};
-constexpr const TVariable *p30C30C30F[3] = {
-    &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt30C, &BuiltInVariable::kVar_pt30F};
-constexpr const TVariable *p30C30D[2]    = {&BuiltInVariable::kVar_pt30C,
-                                         &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p30C_o_30C[2] = {&BuiltInVariable::kVar_pt30C,
-                                            &BuiltInVariable::kVar_pt_o_30C};
-constexpr const TVariable *p30C_o_30D[2] = {&BuiltInVariable::kVar_pt30C,
-                                            &BuiltInVariable::kVar_pt_o_30D};
-constexpr const TVariable *p30D00D00D[3] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30D30D00D00D[4] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30D30D30D[3] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D};
-constexpr const TVariable *p30D30D30F[3] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30F};
+    &BuiltInVariable::kpt20E, &BuiltInVariable::kpt20E, &BuiltInVariable::kpt_o_20E,
+    &BuiltInVariable::kpt_o_20E};
+constexpr const TVariable *p20F20F20F[3] = {&BuiltInVariable::kpt20F, &BuiltInVariable::kpt20F,
+                                            &BuiltInVariable::kpt20F};
+constexpr const TVariable *p30B00B00B[3] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt00B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p30B00D[2]    = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30B10B[2]    = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt10B};
+constexpr const TVariable *p30B20B[2]    = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt20B};
+constexpr const TVariable *p30B30B00B[3] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p30B30B30B[3] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt30B};
+constexpr const TVariable *p30B30B30F[3] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt30B,
+                                            &BuiltInVariable::kpt30F};
+constexpr const TVariable *p30B30D[2]    = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt30D};
+constexpr const TVariable *p30B_o_30B[2] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt_o_30B};
+constexpr const TVariable *p30B_o_30D[2] = {&BuiltInVariable::kpt30B, &BuiltInVariable::kpt_o_30D};
+constexpr const TVariable *p30C00C00C[3] = {&BuiltInVariable::kpt30C, &BuiltInVariable::kpt00C,
+                                            &BuiltInVariable::kpt00C};
+constexpr const TVariable *p30C30C00B[3] = {&BuiltInVariable::kpt30C, &BuiltInVariable::kpt30C,
+                                            &BuiltInVariable::kpt00B};
+constexpr const TVariable *p30C30C00C[3] = {&BuiltInVariable::kpt30C, &BuiltInVariable::kpt30C,
+                                            &BuiltInVariable::kpt00C};
+constexpr const TVariable *p30C30C30C[3] = {&BuiltInVariable::kpt30C, &BuiltInVariable::kpt30C,
+                                            &BuiltInVariable::kpt30C};
+constexpr const TVariable *p30C30C30F[3] = {&BuiltInVariable::kpt30C, &BuiltInVariable::kpt30C,
+                                            &BuiltInVariable::kpt30F};
+constexpr const TVariable *p30C30D[2]    = {&BuiltInVariable::kpt30C, &BuiltInVariable::kpt30D};
+constexpr const TVariable *p30C_o_30C[2] = {&BuiltInVariable::kpt30C, &BuiltInVariable::kpt_o_30C};
+constexpr const TVariable *p30C_o_30D[2] = {&BuiltInVariable::kpt30C, &BuiltInVariable::kpt_o_30D};
+constexpr const TVariable *p30D00D00D[3] = {&BuiltInVariable::kpt30D, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30D30D00D00D[4] = {&BuiltInVariable::kpt30D, &BuiltInVariable::kpt30D,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30D30D30D[3]    = {&BuiltInVariable::kpt30D, &BuiltInVariable::kpt30D,
+                                            &BuiltInVariable::kpt30D};
+constexpr const TVariable *p30D30D30F[3]    = {&BuiltInVariable::kpt30D, &BuiltInVariable::kpt30D,
+                                            &BuiltInVariable::kpt30F};
 constexpr const TVariable *p30D30D_o_30D_o_30D[4] = {
-    &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt30D, &BuiltInVariable::kVar_pt_o_30D,
-    &BuiltInVariable::kVar_pt_o_30D};
-constexpr const TVariable *p30E00D00D[3] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30E00E00E[3] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
-constexpr const TVariable *p30E30E00D00D[4] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt00D,
-    &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p30E30E30E[3] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E};
-constexpr const TVariable *p30E30E30F[3] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30F};
+    &BuiltInVariable::kpt30D, &BuiltInVariable::kpt30D, &BuiltInVariable::kpt_o_30D,
+    &BuiltInVariable::kpt_o_30D};
+constexpr const TVariable *p30E00D00D[3]    = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt00D,
+                                            &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30E00E00E[3]    = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt00E,
+                                            &BuiltInVariable::kpt00E};
+constexpr const TVariable *p30E30E00D00D[4] = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt30E,
+                                               &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p30E30E30E[3]    = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt30E,
+                                            &BuiltInVariable::kpt30E};
+constexpr const TVariable *p30E30E30F[3]    = {&BuiltInVariable::kpt30E, &BuiltInVariable::kpt30E,
+                                            &BuiltInVariable::kpt30F};
 constexpr const TVariable *p30E30E_o_30E_o_30E[4] = {
-    &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt30E, &BuiltInVariable::kVar_pt_o_30E,
-    &BuiltInVariable::kVar_pt_o_30E};
-constexpr const TVariable *p30F30F30F[3] = {
-    &BuiltInVariable::kVar_pt30F, &BuiltInVariable::kVar_pt30F, &BuiltInVariable::kVar_pt30F};
-constexpr const TVariable *p50B50B[2]        = {&BuiltInVariable::kVar_pt50B,
-                                         &BuiltInVariable::kVar_pt50B};
-constexpr const TVariable *p60B60B[2]        = {&BuiltInVariable::kVar_pt60B,
-                                         &BuiltInVariable::kVar_pt60B};
-constexpr const TVariable *p70B70B[2]        = {&BuiltInVariable::kVar_pt70B,
-                                         &BuiltInVariable::kVar_pt70B};
-constexpr const TVariable *p90B90B[2]        = {&BuiltInVariable::kVar_pt90B,
-                                         &BuiltInVariable::kVar_pt90B};
-constexpr const TVariable *pA0BA0B[2]        = {&BuiltInVariable::kVar_ptA0B,
-                                         &BuiltInVariable::kVar_ptA0B};
-constexpr const TVariable *pB0BB0B[2]        = {&BuiltInVariable::kVar_ptB0B,
-                                         &BuiltInVariable::kVar_ptB0B};
-constexpr const TVariable *pD0BD0B[2]        = {&BuiltInVariable::kVar_ptD0B,
-                                         &BuiltInVariable::kVar_ptD0B};
-constexpr const TVariable *pE0BE0B[2]        = {&BuiltInVariable::kVar_ptE0B,
-                                         &BuiltInVariable::kVar_ptE0B};
-constexpr const TVariable *pF0BF0B[2]        = {&BuiltInVariable::kVar_ptF0B,
-                                         &BuiltInVariable::kVar_ptF0B};
-constexpr const TVariable *p_io_00D00D00D[3] = {
-    &BuiltInVariable::kVar_pt_io_00D, &BuiltInVariable::kVar_pt00D, &BuiltInVariable::kVar_pt00D};
-constexpr const TVariable *p_io_00E00E00E[3] = {
-    &BuiltInVariable::kVar_pt_io_00E, &BuiltInVariable::kVar_pt00E, &BuiltInVariable::kVar_pt00E};
+    &BuiltInVariable::kpt30E, &BuiltInVariable::kpt30E, &BuiltInVariable::kpt_o_30E,
+    &BuiltInVariable::kpt_o_30E};
+constexpr const TVariable *p30F30F30F[3]     = {&BuiltInVariable::kpt30F, &BuiltInVariable::kpt30F,
+                                            &BuiltInVariable::kpt30F};
+constexpr const TVariable *p50B50B[2]        = {&BuiltInVariable::kpt50B, &BuiltInVariable::kpt50B};
+constexpr const TVariable *p60B60B[2]        = {&BuiltInVariable::kpt60B, &BuiltInVariable::kpt60B};
+constexpr const TVariable *p70B70B[2]        = {&BuiltInVariable::kpt70B, &BuiltInVariable::kpt70B};
+constexpr const TVariable *p90B90B[2]        = {&BuiltInVariable::kpt90B, &BuiltInVariable::kpt90B};
+constexpr const TVariable *pA0BA0B[2]        = {&BuiltInVariable::kptA0B, &BuiltInVariable::kptA0B};
+constexpr const TVariable *pB0BB0B[2]        = {&BuiltInVariable::kptB0B, &BuiltInVariable::kptB0B};
+constexpr const TVariable *pD0BD0B[2]        = {&BuiltInVariable::kptD0B, &BuiltInVariable::kptD0B};
+constexpr const TVariable *pE0BE0B[2]        = {&BuiltInVariable::kptE0B, &BuiltInVariable::kptE0B};
+constexpr const TVariable *pF0BF0B[2]        = {&BuiltInVariable::kptF0B, &BuiltInVariable::kptF0B};
+constexpr const TVariable *p_io_00D00D00D[3] = {&BuiltInVariable::kpt_io_00D,
+                                                &BuiltInVariable::kpt00D, &BuiltInVariable::kpt00D};
+constexpr const TVariable *p_io_00E00E00E[3] = {&BuiltInVariable::kpt_io_00E,
+                                                &BuiltInVariable::kpt00E, &BuiltInVariable::kpt00E};
 
 }  // namespace BuiltInParameters
 
-namespace UnmangledBuiltIns
-{
-
-constexpr const UnmangledBuiltIn ARB_texture_rectangle(TExtension::ARB_texture_rectangle);
-constexpr const UnmangledBuiltIn EXT_YUV_target(TExtension::EXT_YUV_target);
-constexpr const UnmangledBuiltIn EXT_shader_texture_lod(TExtension::EXT_shader_texture_lod);
-constexpr const UnmangledBuiltIn OES_EGL_image_external_essl3(
-    TExtension::OES_EGL_image_external_essl3);
-constexpr const UnmangledBuiltIn OES_texture_3D(TExtension::OES_texture_3D);
-constexpr const UnmangledBuiltIn UNDEFINED(TExtension::UNDEFINED);
-
-}  // namespace UnmangledBuiltIns
-
 // TODO(oetuaho): Would be nice to make this a class instead of a namespace so that we could friend
 // this from TFunction. Now symbol constructors taking an id have to be public even though they're
 // not supposed to be accessible from outside of here. http://anglebug.com/2390
-namespace BuiltInFunction
+namespace Func
 {
 
-constexpr const TFunction function_radians_00B(
-    BuiltInId::radians_Float1,
-    BuiltInName::radians,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpRadians,
-    true);
-constexpr const TFunction function_radians_10B(
-    BuiltInId::radians_Float2,
-    BuiltInName::radians,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpRadians,
-    true);
-constexpr const TFunction function_radians_20B(
-    BuiltInId::radians_Float3,
-    BuiltInName::radians,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpRadians,
-    true);
-constexpr const TFunction function_radians_30B(
-    BuiltInId::radians_Float4,
-    BuiltInName::radians,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpRadians,
-    true);
-constexpr const TFunction function_degrees_00B(
-    BuiltInId::degrees_Float1,
-    BuiltInName::degrees,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDegrees,
-    true);
-constexpr const TFunction function_degrees_10B(
-    BuiltInId::degrees_Float2,
-    BuiltInName::degrees,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDegrees,
-    true);
-constexpr const TFunction function_degrees_20B(
-    BuiltInId::degrees_Float3,
-    BuiltInName::degrees,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDegrees,
-    true);
-constexpr const TFunction function_degrees_30B(
-    BuiltInId::degrees_Float4,
-    BuiltInName::degrees,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDegrees,
-    true);
-constexpr const TFunction function_sin_00B(
-    BuiltInId::sin_Float1,
-    BuiltInName::sin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSin,
-    true);
-constexpr const TFunction function_sin_10B(
-    BuiltInId::sin_Float2,
-    BuiltInName::sin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSin,
-    true);
-constexpr const TFunction function_sin_20B(
-    BuiltInId::sin_Float3,
-    BuiltInName::sin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSin,
-    true);
-constexpr const TFunction function_sin_30B(
-    BuiltInId::sin_Float4,
-    BuiltInName::sin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSin,
-    true);
-constexpr const TFunction function_cos_00B(
-    BuiltInId::cos_Float1,
-    BuiltInName::cos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCos,
-    true);
-constexpr const TFunction function_cos_10B(
-    BuiltInId::cos_Float2,
-    BuiltInName::cos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCos,
-    true);
-constexpr const TFunction function_cos_20B(
-    BuiltInId::cos_Float3,
-    BuiltInName::cos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCos,
-    true);
-constexpr const TFunction function_cos_30B(
-    BuiltInId::cos_Float4,
-    BuiltInName::cos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCos,
-    true);
-constexpr const TFunction function_tan_00B(
-    BuiltInId::tan_Float1,
-    BuiltInName::tan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpTan,
-    true);
-constexpr const TFunction function_tan_10B(
-    BuiltInId::tan_Float2,
-    BuiltInName::tan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpTan,
-    true);
-constexpr const TFunction function_tan_20B(
-    BuiltInId::tan_Float3,
-    BuiltInName::tan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpTan,
-    true);
-constexpr const TFunction function_tan_30B(
-    BuiltInId::tan_Float4,
-    BuiltInName::tan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpTan,
-    true);
-constexpr const TFunction function_asin_00B(
-    BuiltInId::asin_Float1,
-    BuiltInName::asin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAsin,
-    true);
-constexpr const TFunction function_asin_10B(
-    BuiltInId::asin_Float2,
-    BuiltInName::asin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAsin,
-    true);
-constexpr const TFunction function_asin_20B(
-    BuiltInId::asin_Float3,
-    BuiltInName::asin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAsin,
-    true);
-constexpr const TFunction function_asin_30B(
-    BuiltInId::asin_Float4,
-    BuiltInName::asin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAsin,
-    true);
-constexpr const TFunction function_acos_00B(
-    BuiltInId::acos_Float1,
-    BuiltInName::acos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAcos,
-    true);
-constexpr const TFunction function_acos_10B(
-    BuiltInId::acos_Float2,
-    BuiltInName::acos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAcos,
-    true);
-constexpr const TFunction function_acos_20B(
-    BuiltInId::acos_Float3,
-    BuiltInName::acos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAcos,
-    true);
-constexpr const TFunction function_acos_30B(
-    BuiltInId::acos_Float4,
-    BuiltInName::acos,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAcos,
-    true);
-constexpr const TFunction function_atan_00B00B(
-    BuiltInId::atan_Float1_Float1,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_10B10B(
-    BuiltInId::atan_Float2_Float2,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_20B20B(
-    BuiltInId::atan_Float3_Float3,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_30B30B(
-    BuiltInId::atan_Float4_Float4,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_00B(
-    BuiltInId::atan_Float1,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_10B(
-    BuiltInId::atan_Float2,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_20B(
-    BuiltInId::atan_Float3,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_atan_30B(
-    BuiltInId::atan_Float4,
-    BuiltInName::atan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAtan,
-    true);
-constexpr const TFunction function_sinh_00B(
-    BuiltInId::sinh_Float1,
-    BuiltInName::sinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSinh,
-    true);
-constexpr const TFunction function_sinh_10B(
-    BuiltInId::sinh_Float2,
-    BuiltInName::sinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSinh,
-    true);
-constexpr const TFunction function_sinh_20B(
-    BuiltInId::sinh_Float3,
-    BuiltInName::sinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSinh,
-    true);
-constexpr const TFunction function_sinh_30B(
-    BuiltInId::sinh_Float4,
-    BuiltInName::sinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSinh,
-    true);
-constexpr const TFunction function_cosh_00B(
-    BuiltInId::cosh_Float1,
-    BuiltInName::cosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCosh,
-    true);
-constexpr const TFunction function_cosh_10B(
-    BuiltInId::cosh_Float2,
-    BuiltInName::cosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCosh,
-    true);
-constexpr const TFunction function_cosh_20B(
-    BuiltInId::cosh_Float3,
-    BuiltInName::cosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCosh,
-    true);
-constexpr const TFunction function_cosh_30B(
-    BuiltInId::cosh_Float4,
-    BuiltInName::cosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCosh,
-    true);
-constexpr const TFunction function_tanh_00B(
-    BuiltInId::tanh_Float1,
-    BuiltInName::tanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpTanh,
-    true);
-constexpr const TFunction function_tanh_10B(
-    BuiltInId::tanh_Float2,
-    BuiltInName::tanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpTanh,
-    true);
-constexpr const TFunction function_tanh_20B(
-    BuiltInId::tanh_Float3,
-    BuiltInName::tanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpTanh,
-    true);
-constexpr const TFunction function_tanh_30B(
-    BuiltInId::tanh_Float4,
-    BuiltInName::tanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpTanh,
-    true);
-constexpr const TFunction function_asinh_00B(
-    BuiltInId::asinh_Float1,
-    BuiltInName::asinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAsinh,
-    true);
-constexpr const TFunction function_asinh_10B(
-    BuiltInId::asinh_Float2,
-    BuiltInName::asinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAsinh,
-    true);
-constexpr const TFunction function_asinh_20B(
-    BuiltInId::asinh_Float3,
-    BuiltInName::asinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAsinh,
-    true);
-constexpr const TFunction function_asinh_30B(
-    BuiltInId::asinh_Float4,
-    BuiltInName::asinh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAsinh,
-    true);
-constexpr const TFunction function_acosh_00B(
-    BuiltInId::acosh_Float1,
-    BuiltInName::acosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAcosh,
-    true);
-constexpr const TFunction function_acosh_10B(
-    BuiltInId::acosh_Float2,
-    BuiltInName::acosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAcosh,
-    true);
-constexpr const TFunction function_acosh_20B(
-    BuiltInId::acosh_Float3,
-    BuiltInName::acosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAcosh,
-    true);
-constexpr const TFunction function_acosh_30B(
-    BuiltInId::acosh_Float4,
-    BuiltInName::acosh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAcosh,
-    true);
-constexpr const TFunction function_atanh_00B(
-    BuiltInId::atanh_Float1,
-    BuiltInName::atanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtanh,
-    true);
-constexpr const TFunction function_atanh_10B(
-    BuiltInId::atanh_Float2,
-    BuiltInName::atanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAtanh,
-    true);
-constexpr const TFunction function_atanh_20B(
-    BuiltInId::atanh_Float3,
-    BuiltInName::atanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAtanh,
-    true);
-constexpr const TFunction function_atanh_30B(
-    BuiltInId::atanh_Float4,
-    BuiltInName::atanh,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAtanh,
-    true);
-constexpr const TFunction function_pow_00B00B(
-    BuiltInId::pow_Float1_Float1,
-    BuiltInName::pow,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpPow,
-    true);
-constexpr const TFunction function_pow_10B10B(
-    BuiltInId::pow_Float2_Float2,
-    BuiltInName::pow,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpPow,
-    true);
-constexpr const TFunction function_pow_20B20B(
-    BuiltInId::pow_Float3_Float3,
-    BuiltInName::pow,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpPow,
-    true);
-constexpr const TFunction function_pow_30B30B(
-    BuiltInId::pow_Float4_Float4,
-    BuiltInName::pow,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpPow,
-    true);
-constexpr const TFunction function_exp_00B(
-    BuiltInId::exp_Float1,
-    BuiltInName::exp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpExp,
-    true);
-constexpr const TFunction function_exp_10B(
-    BuiltInId::exp_Float2,
-    BuiltInName::exp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpExp,
-    true);
-constexpr const TFunction function_exp_20B(
-    BuiltInId::exp_Float3,
-    BuiltInName::exp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpExp,
-    true);
-constexpr const TFunction function_exp_30B(
-    BuiltInId::exp_Float4,
-    BuiltInName::exp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpExp,
-    true);
-constexpr const TFunction function_log_00B(
-    BuiltInId::log_Float1,
-    BuiltInName::log,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLog,
-    true);
-constexpr const TFunction function_log_10B(
-    BuiltInId::log_Float2,
-    BuiltInName::log,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLog,
-    true);
-constexpr const TFunction function_log_20B(
-    BuiltInId::log_Float3,
-    BuiltInName::log,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLog,
-    true);
-constexpr const TFunction function_log_30B(
-    BuiltInId::log_Float4,
-    BuiltInName::log,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLog,
-    true);
-constexpr const TFunction function_exp2_00B(
-    BuiltInId::exp2_Float1,
-    BuiltInName::exp2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpExp2,
-    true);
-constexpr const TFunction function_exp2_10B(
-    BuiltInId::exp2_Float2,
-    BuiltInName::exp2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpExp2,
-    true);
-constexpr const TFunction function_exp2_20B(
-    BuiltInId::exp2_Float3,
-    BuiltInName::exp2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpExp2,
-    true);
-constexpr const TFunction function_exp2_30B(
-    BuiltInId::exp2_Float4,
-    BuiltInName::exp2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpExp2,
-    true);
-constexpr const TFunction function_log2_00B(
-    BuiltInId::log2_Float1,
-    BuiltInName::log2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLog2,
-    true);
-constexpr const TFunction function_log2_10B(
-    BuiltInId::log2_Float2,
-    BuiltInName::log2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLog2,
-    true);
-constexpr const TFunction function_log2_20B(
-    BuiltInId::log2_Float3,
-    BuiltInName::log2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLog2,
-    true);
-constexpr const TFunction function_log2_30B(
-    BuiltInId::log2_Float4,
-    BuiltInName::log2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLog2,
-    true);
-constexpr const TFunction function_sqrt_00B(
-    BuiltInId::sqrt_Float1,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_10B(
-    BuiltInId::sqrt_Float2,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_20B(
-    BuiltInId::sqrt_Float3,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_30B(
-    BuiltInId::sqrt_Float4,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_00C(
-    BuiltInId::sqrt_Double1,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_10C(
-    BuiltInId::sqrt_Double2,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_20C(
-    BuiltInId::sqrt_Double3,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_sqrt_30C(
-    BuiltInId::sqrt_Double4,
-    BuiltInName::sqrt,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSqrt,
-    true);
-constexpr const TFunction function_inversesqrt_00B(
+constexpr const TFunction radians_00B(BuiltInId::radians_Float1,
+                                      BuiltInName::radians,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B00B30B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpRadians,
+                                      true);
+constexpr const TFunction radians_10B(BuiltInId::radians_Float2,
+                                      BuiltInName::radians,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B_o_10B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpRadians,
+                                      true);
+constexpr const TFunction radians_20B(BuiltInId::radians_Float3,
+                                      BuiltInName::radians,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B20B00B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpRadians,
+                                      true);
+constexpr const TFunction radians_30B(BuiltInId::radians_Float4,
+                                      BuiltInName::radians,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B30D,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpRadians,
+                                      true);
+constexpr const TFunction degrees_00B(BuiltInId::degrees_Float1,
+                                      BuiltInName::degrees,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B00B30B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpDegrees,
+                                      true);
+constexpr const TFunction degrees_10B(BuiltInId::degrees_Float2,
+                                      BuiltInName::degrees,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B_o_10B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpDegrees,
+                                      true);
+constexpr const TFunction degrees_20B(BuiltInId::degrees_Float3,
+                                      BuiltInName::degrees,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B20B00B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpDegrees,
+                                      true);
+constexpr const TFunction degrees_30B(BuiltInId::degrees_Float4,
+                                      BuiltInName::degrees,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B30D,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpDegrees,
+                                      true);
+constexpr const TFunction sin_00B(BuiltInId::sin_Float1,
+                                  BuiltInName::sin,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpSin,
+                                  true);
+constexpr const TFunction sin_10B(BuiltInId::sin_Float2,
+                                  BuiltInName::sin,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B_o_10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpSin,
+                                  true);
+constexpr const TFunction sin_20B(BuiltInId::sin_Float3,
+                                  BuiltInName::sin,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B20B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpSin,
+                                  true);
+constexpr const TFunction sin_30B(BuiltInId::sin_Float4,
+                                  BuiltInName::sin,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B30D,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpSin,
+                                  true);
+constexpr const TFunction cos_00B(BuiltInId::cos_Float1,
+                                  BuiltInName::cos,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpCos,
+                                  true);
+constexpr const TFunction cos_10B(BuiltInId::cos_Float2,
+                                  BuiltInName::cos,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B_o_10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpCos,
+                                  true);
+constexpr const TFunction cos_20B(BuiltInId::cos_Float3,
+                                  BuiltInName::cos,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B20B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpCos,
+                                  true);
+constexpr const TFunction cos_30B(BuiltInId::cos_Float4,
+                                  BuiltInName::cos,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B30D,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpCos,
+                                  true);
+constexpr const TFunction tan_00B(BuiltInId::tan_Float1,
+                                  BuiltInName::tan,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpTan,
+                                  true);
+constexpr const TFunction tan_10B(BuiltInId::tan_Float2,
+                                  BuiltInName::tan,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B_o_10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpTan,
+                                  true);
+constexpr const TFunction tan_20B(BuiltInId::tan_Float3,
+                                  BuiltInName::tan,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B20B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpTan,
+                                  true);
+constexpr const TFunction tan_30B(BuiltInId::tan_Float4,
+                                  BuiltInName::tan,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B30D,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpTan,
+                                  true);
+constexpr const TFunction asin_00B(BuiltInId::asin_Float1,
+                                   BuiltInName::asin,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpAsin,
+                                   true);
+constexpr const TFunction asin_10B(BuiltInId::asin_Float2,
+                                   BuiltInName::asin,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpAsin,
+                                   true);
+constexpr const TFunction asin_20B(BuiltInId::asin_Float3,
+                                   BuiltInName::asin,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpAsin,
+                                   true);
+constexpr const TFunction asin_30B(BuiltInId::asin_Float4,
+                                   BuiltInName::asin,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpAsin,
+                                   true);
+constexpr const TFunction acos_00B(BuiltInId::acos_Float1,
+                                   BuiltInName::acos,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpAcos,
+                                   true);
+constexpr const TFunction acos_10B(BuiltInId::acos_Float2,
+                                   BuiltInName::acos,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpAcos,
+                                   true);
+constexpr const TFunction acos_20B(BuiltInId::acos_Float3,
+                                   BuiltInName::acos,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpAcos,
+                                   true);
+constexpr const TFunction acos_30B(BuiltInId::acos_Float4,
+                                   BuiltInName::acos,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpAcos,
+                                   true);
+constexpr const TFunction atan_00B00B(BuiltInId::atan_Float1_Float1,
+                                      BuiltInName::atan,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B00B30B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpAtan,
+                                      true);
+constexpr const TFunction atan_10B10B(BuiltInId::atan_Float2_Float2,
+                                      BuiltInName::atan,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B10B00B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpAtan,
+                                      true);
+constexpr const TFunction atan_20B20B(BuiltInId::atan_Float3_Float3,
+                                      BuiltInName::atan,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B20B00B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpAtan,
+                                      true);
+constexpr const TFunction atan_30B30B(BuiltInId::atan_Float4_Float4,
+                                      BuiltInName::atan,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B30B30F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpAtan,
+                                      true);
+constexpr const TFunction atan_00B(BuiltInId::atan_Float1,
+                                   BuiltInName::atan,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpAtan,
+                                   true);
+constexpr const TFunction atan_10B(BuiltInId::atan_Float2,
+                                   BuiltInName::atan,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpAtan,
+                                   true);
+constexpr const TFunction atan_20B(BuiltInId::atan_Float3,
+                                   BuiltInName::atan,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpAtan,
+                                   true);
+constexpr const TFunction atan_30B(BuiltInId::atan_Float4,
+                                   BuiltInName::atan,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpAtan,
+                                   true);
+constexpr const TFunction sinh_00B(BuiltInId::sinh_Float1,
+                                   BuiltInName::sinh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSinh,
+                                   true);
+constexpr const TFunction sinh_10B(BuiltInId::sinh_Float2,
+                                   BuiltInName::sinh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSinh,
+                                   true);
+constexpr const TFunction sinh_20B(BuiltInId::sinh_Float3,
+                                   BuiltInName::sinh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSinh,
+                                   true);
+constexpr const TFunction sinh_30B(BuiltInId::sinh_Float4,
+                                   BuiltInName::sinh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSinh,
+                                   true);
+constexpr const TFunction cosh_00B(BuiltInId::cosh_Float1,
+                                   BuiltInName::cosh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpCosh,
+                                   true);
+constexpr const TFunction cosh_10B(BuiltInId::cosh_Float2,
+                                   BuiltInName::cosh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpCosh,
+                                   true);
+constexpr const TFunction cosh_20B(BuiltInId::cosh_Float3,
+                                   BuiltInName::cosh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpCosh,
+                                   true);
+constexpr const TFunction cosh_30B(BuiltInId::cosh_Float4,
+                                   BuiltInName::cosh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpCosh,
+                                   true);
+constexpr const TFunction tanh_00B(BuiltInId::tanh_Float1,
+                                   BuiltInName::tanh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpTanh,
+                                   true);
+constexpr const TFunction tanh_10B(BuiltInId::tanh_Float2,
+                                   BuiltInName::tanh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpTanh,
+                                   true);
+constexpr const TFunction tanh_20B(BuiltInId::tanh_Float3,
+                                   BuiltInName::tanh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpTanh,
+                                   true);
+constexpr const TFunction tanh_30B(BuiltInId::tanh_Float4,
+                                   BuiltInName::tanh,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpTanh,
+                                   true);
+constexpr const TFunction asinh_00B(BuiltInId::asinh_Float1,
+                                    BuiltInName::asinh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpAsinh,
+                                    true);
+constexpr const TFunction asinh_10B(BuiltInId::asinh_Float2,
+                                    BuiltInName::asinh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpAsinh,
+                                    true);
+constexpr const TFunction asinh_20B(BuiltInId::asinh_Float3,
+                                    BuiltInName::asinh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpAsinh,
+                                    true);
+constexpr const TFunction asinh_30B(BuiltInId::asinh_Float4,
+                                    BuiltInName::asinh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpAsinh,
+                                    true);
+constexpr const TFunction acosh_00B(BuiltInId::acosh_Float1,
+                                    BuiltInName::acosh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpAcosh,
+                                    true);
+constexpr const TFunction acosh_10B(BuiltInId::acosh_Float2,
+                                    BuiltInName::acosh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpAcosh,
+                                    true);
+constexpr const TFunction acosh_20B(BuiltInId::acosh_Float3,
+                                    BuiltInName::acosh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpAcosh,
+                                    true);
+constexpr const TFunction acosh_30B(BuiltInId::acosh_Float4,
+                                    BuiltInName::acosh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpAcosh,
+                                    true);
+constexpr const TFunction atanh_00B(BuiltInId::atanh_Float1,
+                                    BuiltInName::atanh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpAtanh,
+                                    true);
+constexpr const TFunction atanh_10B(BuiltInId::atanh_Float2,
+                                    BuiltInName::atanh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpAtanh,
+                                    true);
+constexpr const TFunction atanh_20B(BuiltInId::atanh_Float3,
+                                    BuiltInName::atanh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpAtanh,
+                                    true);
+constexpr const TFunction atanh_30B(BuiltInId::atanh_Float4,
+                                    BuiltInName::atanh,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpAtanh,
+                                    true);
+constexpr const TFunction pow_00B00B(BuiltInId::pow_Float1_Float1,
+                                     BuiltInName::pow,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpPow,
+                                     true);
+constexpr const TFunction pow_10B10B(BuiltInId::pow_Float2_Float2,
+                                     BuiltInName::pow,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpPow,
+                                     true);
+constexpr const TFunction pow_20B20B(BuiltInId::pow_Float3_Float3,
+                                     BuiltInName::pow,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpPow,
+                                     true);
+constexpr const TFunction pow_30B30B(BuiltInId::pow_Float4_Float4,
+                                     BuiltInName::pow,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpPow,
+                                     true);
+constexpr const TFunction exp_00B(BuiltInId::exp_Float1,
+                                  BuiltInName::exp,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpExp,
+                                  true);
+constexpr const TFunction exp_10B(BuiltInId::exp_Float2,
+                                  BuiltInName::exp,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B_o_10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpExp,
+                                  true);
+constexpr const TFunction exp_20B(BuiltInId::exp_Float3,
+                                  BuiltInName::exp,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B20B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpExp,
+                                  true);
+constexpr const TFunction exp_30B(BuiltInId::exp_Float4,
+                                  BuiltInName::exp,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B30D,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpExp,
+                                  true);
+constexpr const TFunction log_00B(BuiltInId::log_Float1,
+                                  BuiltInName::log,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpLog,
+                                  true);
+constexpr const TFunction log_10B(BuiltInId::log_Float2,
+                                  BuiltInName::log,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B_o_10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpLog,
+                                  true);
+constexpr const TFunction log_20B(BuiltInId::log_Float3,
+                                  BuiltInName::log,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B20B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpLog,
+                                  true);
+constexpr const TFunction log_30B(BuiltInId::log_Float4,
+                                  BuiltInName::log,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B30D,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpLog,
+                                  true);
+constexpr const TFunction exp2_00B(BuiltInId::exp2_Float1,
+                                   BuiltInName::exp2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpExp2,
+                                   true);
+constexpr const TFunction exp2_10B(BuiltInId::exp2_Float2,
+                                   BuiltInName::exp2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpExp2,
+                                   true);
+constexpr const TFunction exp2_20B(BuiltInId::exp2_Float3,
+                                   BuiltInName::exp2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpExp2,
+                                   true);
+constexpr const TFunction exp2_30B(BuiltInId::exp2_Float4,
+                                   BuiltInName::exp2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpExp2,
+                                   true);
+constexpr const TFunction log2_00B(BuiltInId::log2_Float1,
+                                   BuiltInName::log2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpLog2,
+                                   true);
+constexpr const TFunction log2_10B(BuiltInId::log2_Float2,
+                                   BuiltInName::log2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpLog2,
+                                   true);
+constexpr const TFunction log2_20B(BuiltInId::log2_Float3,
+                                   BuiltInName::log2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpLog2,
+                                   true);
+constexpr const TFunction log2_30B(BuiltInId::log2_Float4,
+                                   BuiltInName::log2,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpLog2,
+                                   true);
+constexpr const TFunction sqrt_00B(BuiltInId::sqrt_Float1,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_10B(BuiltInId::sqrt_Float2,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_20B(BuiltInId::sqrt_Float3,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_30B(BuiltInId::sqrt_Float4,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_00C(BuiltInId::sqrt_Double1,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00C10C,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_10C(BuiltInId::sqrt_Double2,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10C_o_10C,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_20C(BuiltInId::sqrt_Double3,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20C20C20F,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction sqrt_30C(BuiltInId::sqrt_Double4,
+                                   BuiltInName::sqrt,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30C30C00B,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSqrt,
+                                   true);
+constexpr const TFunction inversesqrt_00B(
     BuiltInId::inversesqrt_Float1,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -5830,7 +5402,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_10B(
+constexpr const TFunction inversesqrt_10B(
     BuiltInId::inversesqrt_Float2,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -5839,7 +5411,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_20B(
+constexpr const TFunction inversesqrt_20B(
     BuiltInId::inversesqrt_Float3,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -5848,7 +5420,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_30B(
+constexpr const TFunction inversesqrt_30B(
     BuiltInId::inversesqrt_Float4,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -5857,7 +5429,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_00C(
+constexpr const TFunction inversesqrt_00C(
     BuiltInId::inversesqrt_Double1,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -5866,7 +5438,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_10C(
+constexpr const TFunction inversesqrt_10C(
     BuiltInId::inversesqrt_Double2,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -5875,7 +5447,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_20C(
+constexpr const TFunction inversesqrt_20C(
     BuiltInId::inversesqrt_Double3,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -5884,7 +5456,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_inversesqrt_30C(
+constexpr const TFunction inversesqrt_30C(
     BuiltInId::inversesqrt_Double4,
     BuiltInName::inversesqrt,
     TExtension::UNDEFINED,
@@ -5893,1281 +5465,1143 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpInversesqrt,
     true);
-constexpr const TFunction function_abs_00B(
-    BuiltInId::abs_Float1,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_10B(
-    BuiltInId::abs_Float2,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_20B(
-    BuiltInId::abs_Float3,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_30B(
-    BuiltInId::abs_Float4,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_00D(BuiltInId::abs_Int1,
-                                           BuiltInName::abs,
-                                           TExtension::UNDEFINED,
-                                           BuiltInParameters::p00D00D_o_00D_o_00D,
-                                           1,
-                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-                                           EOpAbs,
-                                           true);
-constexpr const TFunction function_abs_10D(BuiltInId::abs_Int2,
-                                           BuiltInName::abs,
-                                           TExtension::UNDEFINED,
-                                           BuiltInParameters::p10D10D_o_10D_o_10D,
-                                           1,
-                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-                                           EOpAbs,
-                                           true);
-constexpr const TFunction function_abs_20D(BuiltInId::abs_Int3,
-                                           BuiltInName::abs,
-                                           TExtension::UNDEFINED,
-                                           BuiltInParameters::p20D20D00D00D,
-                                           1,
-                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-                                           EOpAbs,
-                                           true);
-constexpr const TFunction function_abs_30D(BuiltInId::abs_Int4,
-                                           BuiltInName::abs,
-                                           TExtension::UNDEFINED,
-                                           BuiltInParameters::p30D30D30F,
-                                           1,
-                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-                                           EOpAbs,
-                                           true);
-constexpr const TFunction function_abs_00C(
-    BuiltInId::abs_Double1,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_10C(
-    BuiltInId::abs_Double2,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_20C(
-    BuiltInId::abs_Double3,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_abs_30C(
-    BuiltInId::abs_Double4,
-    BuiltInName::abs,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpAbs,
-    true);
-constexpr const TFunction function_sign_00B(
-    BuiltInId::sign_Float1,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_10B(
-    BuiltInId::sign_Float2,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_20B(
-    BuiltInId::sign_Float3,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_30B(
-    BuiltInId::sign_Float4,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_00D(
-    BuiltInId::sign_Int1,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D_o_00D_o_00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_10D(
-    BuiltInId::sign_Int2,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_20D(
-    BuiltInId::sign_Int3,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_30D(
-    BuiltInId::sign_Int4,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_00C(
-    BuiltInId::sign_Double1,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_10C(
-    BuiltInId::sign_Double2,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_20C(
-    BuiltInId::sign_Double3,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_sign_30C(
-    BuiltInId::sign_Double4,
-    BuiltInName::sign,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpSign,
-    true);
-constexpr const TFunction function_floor_00B(
-    BuiltInId::floor_Float1,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_10B(
-    BuiltInId::floor_Float2,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_20B(
-    BuiltInId::floor_Float3,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_30B(
-    BuiltInId::floor_Float4,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_00C(
-    BuiltInId::floor_Double1,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_10C(
-    BuiltInId::floor_Double2,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_20C(
-    BuiltInId::floor_Double3,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_floor_30C(
-    BuiltInId::floor_Double4,
-    BuiltInName::floor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFloor,
-    true);
-constexpr const TFunction function_trunc_00B(
-    BuiltInId::trunc_Float1,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_10B(
-    BuiltInId::trunc_Float2,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_20B(
-    BuiltInId::trunc_Float3,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_30B(
-    BuiltInId::trunc_Float4,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_00C(
-    BuiltInId::trunc_Double1,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_10C(
-    BuiltInId::trunc_Double2,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_20C(
-    BuiltInId::trunc_Double3,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_trunc_30C(
-    BuiltInId::trunc_Double4,
-    BuiltInName::trunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpTrunc,
-    true);
-constexpr const TFunction function_round_00B(
-    BuiltInId::round_Float1,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_10B(
-    BuiltInId::round_Float2,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_20B(
-    BuiltInId::round_Float3,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_30B(
-    BuiltInId::round_Float4,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_00C(
-    BuiltInId::round_Double1,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_10C(
-    BuiltInId::round_Double2,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_20C(
-    BuiltInId::round_Double3,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_round_30C(
-    BuiltInId::round_Double4,
-    BuiltInName::round,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpRound,
-    true);
-constexpr const TFunction function_roundEven_00B(
-    BuiltInId::roundEven_Float1,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_10B(
-    BuiltInId::roundEven_Float2,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_20B(
-    BuiltInId::roundEven_Float3,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_30B(
-    BuiltInId::roundEven_Float4,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_00C(
-    BuiltInId::roundEven_Double1,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_10C(
-    BuiltInId::roundEven_Double2,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_20C(
-    BuiltInId::roundEven_Double3,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_roundEven_30C(
-    BuiltInId::roundEven_Double4,
-    BuiltInName::roundEven,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpRoundEven,
-    true);
-constexpr const TFunction function_ceil_00B(
-    BuiltInId::ceil_Float1,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_10B(
-    BuiltInId::ceil_Float2,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_20B(
-    BuiltInId::ceil_Float3,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_30B(
-    BuiltInId::ceil_Float4,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_00C(
-    BuiltInId::ceil_Double1,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_10C(
-    BuiltInId::ceil_Double2,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_20C(
-    BuiltInId::ceil_Double3,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_ceil_30C(
-    BuiltInId::ceil_Double4,
-    BuiltInName::ceil,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCeil,
-    true);
-constexpr const TFunction function_fract_00B(
-    BuiltInId::fract_Float1,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_10B(
-    BuiltInId::fract_Float2,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_20B(
-    BuiltInId::fract_Float3,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_30B(
-    BuiltInId::fract_Float4,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_00C(
-    BuiltInId::fract_Double1,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_10C(
-    BuiltInId::fract_Double2,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_20C(
-    BuiltInId::fract_Double3,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_fract_30C(
-    BuiltInId::fract_Double4,
-    BuiltInName::fract,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFract,
-    true);
-constexpr const TFunction function_mod_00B00B(
-    BuiltInId::mod_Float1_Float1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_10B00B(
-    BuiltInId::mod_Float2_Float1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_20B00B(
-    BuiltInId::mod_Float3_Float1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_30B00B(
-    BuiltInId::mod_Float4_Float1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_10B10B(
-    BuiltInId::mod_Float2_Float2,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_20B20B(
-    BuiltInId::mod_Float3_Float3,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_30B30B(
-    BuiltInId::mod_Float4_Float4,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_00C00C(
-    BuiltInId::mod_Double1_Double1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00C10C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_10C00C(
-    BuiltInId::mod_Double2_Double1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_20C00C(
-    BuiltInId::mod_Double3_Double1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_30C00C(
-    BuiltInId::mod_Double4_Double1,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_10C10C(
-    BuiltInId::mod_Double2_Double2,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C10F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_20C20C(
-    BuiltInId::mod_Double3_Double3,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_mod_30C30C(
-    BuiltInId::mod_Double4_Double4,
-    BuiltInName::mod,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMod,
-    true);
-constexpr const TFunction function_min_00B00B(
-    BuiltInId::min_Float1_Float1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10B00B(
-    BuiltInId::min_Float2_Float1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20B00B(
-    BuiltInId::min_Float3_Float1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30B00B(
-    BuiltInId::min_Float4_Float1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10B10B(
-    BuiltInId::min_Float2_Float2,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20B20B(
-    BuiltInId::min_Float3_Float3,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30B30B(
-    BuiltInId::min_Float4_Float4,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_00C00C(
-    BuiltInId::min_Double1_Double1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00C10C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10C10C(
-    BuiltInId::min_Double2_Double2,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C10F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20C20C(
-    BuiltInId::min_Double3_Double3,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30C30C(
-    BuiltInId::min_Double4_Double4,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10C00C(
-    BuiltInId::min_Double2_Double1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20C00C(
-    BuiltInId::min_Double3_Double1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30C00C(
-    BuiltInId::min_Double4_Double1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_00D00D(
-    BuiltInId::min_Int1_Int1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D_o_00D_o_00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10D10D(
-    BuiltInId::min_Int2_Int2,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20D20D(
-    BuiltInId::min_Int3_Int3,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30D30D(
-    BuiltInId::min_Int4_Int4,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10D00D(
-    BuiltInId::min_Int2_Int1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20D00D(
-    BuiltInId::min_Int3_Int1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30D00D(
-    BuiltInId::min_Int4_Int1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_00E00E(
-    BuiltInId::min_UInt1_UInt1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10E10E(
-    BuiltInId::min_UInt2_UInt2,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20E20E(
-    BuiltInId::min_UInt3_UInt3,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30E30E(
-    BuiltInId::min_UInt4_UInt4,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_10E00E(
-    BuiltInId::min_UInt2_UInt1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_20E00E(
-    BuiltInId::min_UInt3_UInt1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_min_30E00E(
-    BuiltInId::min_UInt4_UInt1,
-    BuiltInName::min,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMin,
-    true);
-constexpr const TFunction function_max_00B00B(
-    BuiltInId::max_Float1_Float1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10B00B(
-    BuiltInId::max_Float2_Float1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20B00B(
-    BuiltInId::max_Float3_Float1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30B00B(
-    BuiltInId::max_Float4_Float1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B00B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10B10B(
-    BuiltInId::max_Float2_Float2,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20B20B(
-    BuiltInId::max_Float3_Float3,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30B30B(
-    BuiltInId::max_Float4_Float4,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_00C00C(
-    BuiltInId::max_Double1_Double1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00C10C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10C10C(
-    BuiltInId::max_Double2_Double2,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C10F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20C20C(
-    BuiltInId::max_Double3_Double3,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30C30C(
-    BuiltInId::max_Double4_Double4,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10C00C(
-    BuiltInId::max_Double2_Double1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20C00C(
-    BuiltInId::max_Double3_Double1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30C00C(
-    BuiltInId::max_Double4_Double1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C00C00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_00D00D(
-    BuiltInId::max_Int1_Int1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D_o_00D_o_00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10D10D(
-    BuiltInId::max_Int2_Int2,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20D20D(
-    BuiltInId::max_Int3_Int3,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30D30D(
-    BuiltInId::max_Int4_Int4,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10D00D(
-    BuiltInId::max_Int2_Int1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20D00D(
-    BuiltInId::max_Int3_Int1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30D00D(
-    BuiltInId::max_Int4_Int1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_00E00E(
-    BuiltInId::max_UInt1_UInt1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10E10E(
-    BuiltInId::max_UInt2_UInt2,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20E20E(
-    BuiltInId::max_UInt3_UInt3,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30E30E(
-    BuiltInId::max_UInt4_UInt4,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_10E00E(
-    BuiltInId::max_UInt2_UInt1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_20E00E(
-    BuiltInId::max_UInt3_UInt1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_max_30E00E(
-    BuiltInId::max_UInt4_UInt1,
-    BuiltInName::max,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMax,
-    true);
-constexpr const TFunction function_clamp_00B00B00B(
+constexpr const TFunction abs_00B(BuiltInId::abs_Float1,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00B00B30B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_10B(BuiltInId::abs_Float2,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10B_o_10B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_20B(BuiltInId::abs_Float3,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20B20B00B,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_30B(BuiltInId::abs_Float4,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30B30D,
+                                  1,
+                                  StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_00D(BuiltInId::abs_Int1,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00D00D_o_00D_o_00D,
+                                  1,
+                                  StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_10D(BuiltInId::abs_Int2,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10D10D_o_10D_o_10D,
+                                  1,
+                                  StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_20D(BuiltInId::abs_Int3,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20D20D00D00D,
+                                  1,
+                                  StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_30D(BuiltInId::abs_Int4,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30D30D30F,
+                                  1,
+                                  StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_00C(BuiltInId::abs_Double1,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p00C10C,
+                                  1,
+                                  StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_10C(BuiltInId::abs_Double2,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10C_o_10C,
+                                  1,
+                                  StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_20C(BuiltInId::abs_Double3,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20C20C20F,
+                                  1,
+                                  StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction abs_30C(BuiltInId::abs_Double4,
+                                  BuiltInName::abs,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30C30C00B,
+                                  1,
+                                  StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                  EOpAbs,
+                                  true);
+constexpr const TFunction sign_00B(BuiltInId::sign_Float1,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_10B(BuiltInId::sign_Float2,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_20B(BuiltInId::sign_Float3,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_30B(BuiltInId::sign_Float4,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_00D(BuiltInId::sign_Int1,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00D00D_o_00D_o_00D,
+                                   1,
+                                   StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_10D(BuiltInId::sign_Int2,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10D10D_o_10D_o_10D,
+                                   1,
+                                   StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_20D(BuiltInId::sign_Int3,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20D20D00D00D,
+                                   1,
+                                   StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_30D(BuiltInId::sign_Int4,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30D30D30F,
+                                   1,
+                                   StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_00C(BuiltInId::sign_Double1,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00C10C,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_10C(BuiltInId::sign_Double2,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10C_o_10C,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_20C(BuiltInId::sign_Double3,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20C20C20F,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction sign_30C(BuiltInId::sign_Double4,
+                                   BuiltInName::sign,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30C30C00B,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpSign,
+                                   true);
+constexpr const TFunction floor_00B(BuiltInId::floor_Float1,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_10B(BuiltInId::floor_Float2,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_20B(BuiltInId::floor_Float3,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_30B(BuiltInId::floor_Float4,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_00C(BuiltInId::floor_Double1,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00C10C,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_10C(BuiltInId::floor_Double2,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10C_o_10C,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_20C(BuiltInId::floor_Double3,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20C20C20F,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction floor_30C(BuiltInId::floor_Double4,
+                                    BuiltInName::floor,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30C30C00B,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpFloor,
+                                    true);
+constexpr const TFunction trunc_00B(BuiltInId::trunc_Float1,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_10B(BuiltInId::trunc_Float2,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_20B(BuiltInId::trunc_Float3,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_30B(BuiltInId::trunc_Float4,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_00C(BuiltInId::trunc_Double1,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00C10C,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_10C(BuiltInId::trunc_Double2,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10C_o_10C,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_20C(BuiltInId::trunc_Double3,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20C20C20F,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction trunc_30C(BuiltInId::trunc_Double4,
+                                    BuiltInName::trunc,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30C30C00B,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpTrunc,
+                                    true);
+constexpr const TFunction round_00B(BuiltInId::round_Float1,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_10B(BuiltInId::round_Float2,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_20B(BuiltInId::round_Float3,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_30B(BuiltInId::round_Float4,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_00C(BuiltInId::round_Double1,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00C10C,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_10C(BuiltInId::round_Double2,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10C_o_10C,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_20C(BuiltInId::round_Double3,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20C20C20F,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction round_30C(BuiltInId::round_Double4,
+                                    BuiltInName::round,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30C30C00B,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpRound,
+                                    true);
+constexpr const TFunction roundEven_00B(BuiltInId::roundEven_Float1,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B00B30B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_10B(BuiltInId::roundEven_Float2,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B_o_10B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_20B(BuiltInId::roundEven_Float3,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B00B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_30B(BuiltInId::roundEven_Float4,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30D,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_00C(BuiltInId::roundEven_Double1,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00C10C,
+                                        1,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_10C(BuiltInId::roundEven_Double2,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10C_o_10C,
+                                        1,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_20C(BuiltInId::roundEven_Double3,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20C20C20F,
+                                        1,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction roundEven_30C(BuiltInId::roundEven_Double4,
+                                        BuiltInName::roundEven,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30C30C00B,
+                                        1,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpRoundEven,
+                                        true);
+constexpr const TFunction ceil_00B(BuiltInId::ceil_Float1,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_10B(BuiltInId::ceil_Float2,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_20B(BuiltInId::ceil_Float3,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_30B(BuiltInId::ceil_Float4,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_00C(BuiltInId::ceil_Double1,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00C10C,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_10C(BuiltInId::ceil_Double2,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10C_o_10C,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_20C(BuiltInId::ceil_Double3,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20C20C20F,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction ceil_30C(BuiltInId::ceil_Double4,
+                                   BuiltInName::ceil,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30C30C00B,
+                                   1,
+                                   StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpCeil,
+                                   true);
+constexpr const TFunction fract_00B(BuiltInId::fract_Float1,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_10B(BuiltInId::fract_Float2,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_20B(BuiltInId::fract_Float3,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_30B(BuiltInId::fract_Float4,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_00C(BuiltInId::fract_Double1,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00C10C,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_10C(BuiltInId::fract_Double2,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10C_o_10C,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_20C(BuiltInId::fract_Double3,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20C20C20F,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction fract_30C(BuiltInId::fract_Double4,
+                                    BuiltInName::fract,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30C30C00B,
+                                    1,
+                                    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpFract,
+                                    true);
+constexpr const TFunction mod_00B00B(BuiltInId::mod_Float1_Float1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_10B00B(BuiltInId::mod_Float2_Float1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_20B00B(BuiltInId::mod_Float3_Float1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_30B00B(BuiltInId::mod_Float4_Float1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_10B10B(BuiltInId::mod_Float2_Float2,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_20B20B(BuiltInId::mod_Float3_Float3,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_30B30B(BuiltInId::mod_Float4_Float4,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_00C00C(BuiltInId::mod_Double1_Double1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00C00C10C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_10C00C(BuiltInId::mod_Double2_Double1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_20C00C(BuiltInId::mod_Double3_Double1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_30C00C(BuiltInId::mod_Double4_Double1,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_10C10C(BuiltInId::mod_Double2_Double2,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10C10C10F,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_20C20C(BuiltInId::mod_Double3_Double3,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20C20C20F,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction mod_30C30C(BuiltInId::mod_Double4_Double4,
+                                     BuiltInName::mod,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30C30C00B,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMod,
+                                     true);
+constexpr const TFunction min_00B00B(BuiltInId::min_Float1_Float1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10B00B(BuiltInId::min_Float2_Float1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20B00B(BuiltInId::min_Float3_Float1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30B00B(BuiltInId::min_Float4_Float1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10B10B(BuiltInId::min_Float2_Float2,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20B20B(BuiltInId::min_Float3_Float3,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30B30B(BuiltInId::min_Float4_Float4,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_00C00C(BuiltInId::min_Double1_Double1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00C00C10C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10C10C(BuiltInId::min_Double2_Double2,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10C10C10F,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20C20C(BuiltInId::min_Double3_Double3,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20C20C20F,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30C30C(BuiltInId::min_Double4_Double4,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30C30C00B,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10C00C(BuiltInId::min_Double2_Double1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20C00C(BuiltInId::min_Double3_Double1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30C00C(BuiltInId::min_Double4_Double1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_00D00D(BuiltInId::min_Int1_Int1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00D00D_o_00D_o_00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10D10D(BuiltInId::min_Int2_Int2,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10D10D_o_10D_o_10D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20D20D(BuiltInId::min_Int3_Int3,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20D20D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30D30D(BuiltInId::min_Int4_Int4,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30D30D30F,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10D00D(BuiltInId::min_Int2_Int1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20D00D(BuiltInId::min_Int3_Int1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30D00D(BuiltInId::min_Int4_Int1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_00E00E(BuiltInId::min_UInt1_UInt1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10E10E(BuiltInId::min_UInt2_UInt2,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10E10E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20E20E(BuiltInId::min_UInt3_UInt3,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20E20E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30E30E(BuiltInId::min_UInt4_UInt4,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30E30E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_10E00E(BuiltInId::min_UInt2_UInt1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_20E00E(BuiltInId::min_UInt3_UInt1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction min_30E00E(BuiltInId::min_UInt4_UInt1,
+                                     BuiltInName::min,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMin,
+                                     true);
+constexpr const TFunction max_00B00B(BuiltInId::max_Float1_Float1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10B00B(BuiltInId::max_Float2_Float1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20B00B(BuiltInId::max_Float3_Float1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30B00B(BuiltInId::max_Float4_Float1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B00B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10B10B(BuiltInId::max_Float2_Float2,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20B20B(BuiltInId::max_Float3_Float3,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30B30B(BuiltInId::max_Float4_Float4,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_00C00C(BuiltInId::max_Double1_Double1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00C00C10C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10C10C(BuiltInId::max_Double2_Double2,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10C10C10F,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20C20C(BuiltInId::max_Double3_Double3,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20C20C20F,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30C30C(BuiltInId::max_Double4_Double4,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30C30C00B,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10C00C(BuiltInId::max_Double2_Double1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20C00C(BuiltInId::max_Double3_Double1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30C00C(BuiltInId::max_Double4_Double1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30C00C00C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_00D00D(BuiltInId::max_Int1_Int1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00D00D_o_00D_o_00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10D10D(BuiltInId::max_Int2_Int2,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10D10D_o_10D_o_10D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20D20D(BuiltInId::max_Int3_Int3,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20D20D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30D30D(BuiltInId::max_Int4_Int4,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30D30D30F,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10D00D(BuiltInId::max_Int2_Int1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20D00D(BuiltInId::max_Int3_Int1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30D00D(BuiltInId::max_Int4_Int1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30D00D00D,
+                                     2,
+                                     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_00E00E(BuiltInId::max_UInt1_UInt1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10E10E(BuiltInId::max_UInt2_UInt2,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10E10E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20E20E(BuiltInId::max_UInt3_UInt3,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20E20E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30E30E(BuiltInId::max_UInt4_UInt4,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30E30E00D00D,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_10E00E(BuiltInId::max_UInt2_UInt1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_20E00E(BuiltInId::max_UInt3_UInt1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction max_30E00E(BuiltInId::max_UInt4_UInt1,
+                                     BuiltInName::max,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30E00E00E,
+                                     2,
+                                     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpMax,
+                                     true);
+constexpr const TFunction clamp_00B00B00B(
     BuiltInId::clamp_Float1_Float1_Float1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7176,7 +6610,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_10B00B00B(
+constexpr const TFunction clamp_10B00B00B(
     BuiltInId::clamp_Float2_Float1_Float1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7185,7 +6619,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_20B00B00B(
+constexpr const TFunction clamp_20B00B00B(
     BuiltInId::clamp_Float3_Float1_Float1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7194,7 +6628,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_30B00B00B(
+constexpr const TFunction clamp_30B00B00B(
     BuiltInId::clamp_Float4_Float1_Float1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7203,7 +6637,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_10B10B10B(
+constexpr const TFunction clamp_10B10B10B(
     BuiltInId::clamp_Float2_Float2_Float2,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7212,7 +6646,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_20B20B20B(
+constexpr const TFunction clamp_20B20B20B(
     BuiltInId::clamp_Float3_Float3_Float3,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7221,7 +6655,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_30B30B30B(
+constexpr const TFunction clamp_30B30B30B(
     BuiltInId::clamp_Float4_Float4_Float4,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7230,7 +6664,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_00C00C00C(
+constexpr const TFunction clamp_00C00C00C(
     BuiltInId::clamp_Double1_Double1_Double1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7239,7 +6673,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_10C00C00C(
+constexpr const TFunction clamp_10C00C00C(
     BuiltInId::clamp_Double2_Double1_Double1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7248,7 +6682,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_20C00C00C(
+constexpr const TFunction clamp_20C00C00C(
     BuiltInId::clamp_Double3_Double1_Double1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7257,7 +6691,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_30C00C00C(
+constexpr const TFunction clamp_30C00C00C(
     BuiltInId::clamp_Double4_Double1_Double1,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7266,7 +6700,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_10C10C10C(
+constexpr const TFunction clamp_10C10C10C(
     BuiltInId::clamp_Double2_Double2_Double2,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7275,7 +6709,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_20C20C20C(
+constexpr const TFunction clamp_20C20C20C(
     BuiltInId::clamp_Double3_Double3_Double3,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7284,7 +6718,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_30C30C30C(
+constexpr const TFunction clamp_30C30C30C(
     BuiltInId::clamp_Double4_Double4_Double4,
     BuiltInName::clamp,
     TExtension::UNDEFINED,
@@ -7293,565 +6727,503 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpClamp,
     true);
-constexpr const TFunction function_clamp_00D00D00D(
-    BuiltInId::clamp_Int1_Int1_Int1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00D00D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_10D00D00D(
-    BuiltInId::clamp_Int2_Int1_Int1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D00D00D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_20D00D00D(
-    BuiltInId::clamp_Int3_Int1_Int1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D00D00D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_30D00D00D(
-    BuiltInId::clamp_Int4_Int1_Int1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D00D00D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_10D10D10D(
-    BuiltInId::clamp_Int2_Int2_Int2,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D10D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_20D20D20D(
-    BuiltInId::clamp_Int3_Int3_Int3,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D20D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_30D30D30D(
-    BuiltInId::clamp_Int4_Int4_Int4,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30D,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_00E00E00E(
-    BuiltInId::clamp_UInt1_UInt1_UInt1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_10E00E00E(
-    BuiltInId::clamp_UInt2_UInt1_UInt1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E00E00E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_20E00E00E(
-    BuiltInId::clamp_UInt3_UInt1_UInt1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E00E00E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_30E00E00E(
-    BuiltInId::clamp_UInt4_UInt1_UInt1,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E00E00E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_10E10E10E(
-    BuiltInId::clamp_UInt2_UInt2_UInt2,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E10E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_20E20E20E(
-    BuiltInId::clamp_UInt3_UInt3_UInt3,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E20E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_clamp_30E30E30E(
-    BuiltInId::clamp_UInt4_UInt4_UInt4,
-    BuiltInName::clamp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E30E,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpClamp,
-    true);
-constexpr const TFunction function_mix_00B00B00B(
-    BuiltInId::mix_Float1_Float1_Float1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10B10B00B(
-    BuiltInId::mix_Float2_Float2_Float1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20B20B00B(
-    BuiltInId::mix_Float3_Float3_Float1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30B30B00B(
-    BuiltInId::mix_Float4_Float4_Float1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10B10B10B(
-    BuiltInId::mix_Float2_Float2_Float2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20B20B20B(
-    BuiltInId::mix_Float3_Float3_Float3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30B30B30B(
-    BuiltInId::mix_Float4_Float4_Float4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_00C00C00C(
-    BuiltInId::mix_Double1_Double1_Double1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00C00C,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10C10C00C(
-    BuiltInId::mix_Double2_Double2_Double1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C00C,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20C20C00C(
-    BuiltInId::mix_Double3_Double3_Double1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C00C,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30C30C00C(
-    BuiltInId::mix_Double4_Double4_Double1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00C,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10C10C10C(
-    BuiltInId::mix_Double2_Double2_Double2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C10C,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20C20C20C(
-    BuiltInId::mix_Double3_Double3_Double3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20C,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30C30C30C(
-    BuiltInId::mix_Double4_Double4_Double4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C30C,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_00B00B00F(
-    BuiltInId::mix_Float1_Float1_Bool1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00F,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10B10B10F(
-    BuiltInId::mix_Float2_Float2_Bool2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10F,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20B20B20F(
-    BuiltInId::mix_Float3_Float3_Bool3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20F,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30B30B30F(
-    BuiltInId::mix_Float4_Float4_Bool4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_00C00C00F(
-    BuiltInId::mix_Double1_Double1_Bool1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00C00F,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10C10C10F(
-    BuiltInId::mix_Double2_Double2_Bool2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C10F,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20C20C20F(
-    BuiltInId::mix_Double3_Double3_Bool3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30C30C30F(
-    BuiltInId::mix_Double4_Double4_Bool4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C30F,
-    3,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_00D00D00F(
-    BuiltInId::mix_Int1_Int1_Bool1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D00F,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10D10D10F(
-    BuiltInId::mix_Int2_Int2_Bool2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D10F,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20D20D20F(
-    BuiltInId::mix_Int3_Int3_Bool3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D20F,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30D30D30F(
-    BuiltInId::mix_Int4_Int4_Bool4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    3,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_00E00E00F(
-    BuiltInId::mix_UInt1_UInt1_Bool1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00F,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10E10E10F(
-    BuiltInId::mix_UInt2_UInt2_Bool2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E10F,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20E20E20F(
-    BuiltInId::mix_UInt3_UInt3_Bool3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E20F,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30E30E30F(
-    BuiltInId::mix_UInt4_UInt4_Bool4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E30F,
-    3,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_00F00F00F(
-    BuiltInId::mix_Bool1_Bool1_Bool1,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00F00F00F,
-    3,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_10F10F10F(
-    BuiltInId::mix_Bool2_Bool2_Bool2,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F10F,
-    3,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_20F20F20F(
-    BuiltInId::mix_Bool3_Bool3_Bool3,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F20F,
-    3,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_mix_30F30F30F(
-    BuiltInId::mix_Bool4_Bool4_Bool4,
-    BuiltInName::mix,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F30F,
-    3,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpMix,
-    true);
-constexpr const TFunction function_step_00B00B(
-    BuiltInId::step_Float1_Float1,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_10B10B(
-    BuiltInId::step_Float2_Float2,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_20B20B(
-    BuiltInId::step_Float3_Float3,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_30B30B(
-    BuiltInId::step_Float4_Float4,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00B10B(
-    BuiltInId::step_Float1_Float2,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B10B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00B20B(
-    BuiltInId::step_Float1_Float3,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B20B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00B30B(
-    BuiltInId::step_Float1_Float4,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00C00C(
-    BuiltInId::step_Double1_Double1,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00C10C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_10C10C(
-    BuiltInId::step_Double2_Double2,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C10F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_20C20C(
-    BuiltInId::step_Double3_Double3,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_30C30C(
-    BuiltInId::step_Double4_Double4,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00C10C(
-    BuiltInId::step_Double1_Double2,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00C20C(
-    BuiltInId::step_Double1_Double3,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C20C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_step_00C30C(
-    BuiltInId::step_Double1_Double4,
-    BuiltInName::step,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C30C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpStep,
-    true);
-constexpr const TFunction function_smoothstep_00C00C00C(
+constexpr const TFunction clamp_00D00D00D(BuiltInId::clamp_Int1_Int1_Int1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00D00D00D00D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_10D00D00D(BuiltInId::clamp_Int2_Int1_Int1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10D00D00D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_20D00D00D(BuiltInId::clamp_Int3_Int1_Int1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20D00D00D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_30D00D00D(BuiltInId::clamp_Int4_Int1_Int1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30D00D00D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_10D10D10D(BuiltInId::clamp_Int2_Int2_Int2,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10D10D10D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_20D20D20D(BuiltInId::clamp_Int3_Int3_Int3,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20D20D20D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_30D30D30D(BuiltInId::clamp_Int4_Int4_Int4,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30D30D30D,
+                                          3,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_00E00E00E(BuiltInId::clamp_UInt1_UInt1_UInt1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00E00E00E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_10E00E00E(BuiltInId::clamp_UInt2_UInt1_UInt1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10E00E00E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_20E00E00E(BuiltInId::clamp_UInt3_UInt1_UInt1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20E00E00E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_30E00E00E(BuiltInId::clamp_UInt4_UInt1_UInt1,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30E00E00E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_10E10E10E(BuiltInId::clamp_UInt2_UInt2_UInt2,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10E10E10E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_20E20E20E(BuiltInId::clamp_UInt3_UInt3_UInt3,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20E20E20E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction clamp_30E30E30E(BuiltInId::clamp_UInt4_UInt4_UInt4,
+                                          BuiltInName::clamp,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30E30E30E,
+                                          3,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpClamp,
+                                          true);
+constexpr const TFunction mix_00B00B00B(BuiltInId::mix_Float1_Float1_Float1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B00B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10B10B00B(BuiltInId::mix_Float2_Float2_Float1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B10B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20B20B00B(BuiltInId::mix_Float3_Float3_Float1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30B30B00B(BuiltInId::mix_Float4_Float4_Float1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10B10B10B(BuiltInId::mix_Float2_Float2_Float2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B10B10B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20B20B20B(BuiltInId::mix_Float3_Float3_Float3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B20B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30B30B30B(BuiltInId::mix_Float4_Float4_Float4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30B30B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_00C00C00C(BuiltInId::mix_Double1_Double1_Double1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00C00C00C,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10C10C00C(BuiltInId::mix_Double2_Double2_Double1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10C10C00C,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20C20C00C(BuiltInId::mix_Double3_Double3_Double1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20C20C00C,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30C30C00C(BuiltInId::mix_Double4_Double4_Double1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30C30C00C,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10C10C10C(BuiltInId::mix_Double2_Double2_Double2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10C10C10C,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20C20C20C(BuiltInId::mix_Double3_Double3_Double3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20C20C20C,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30C30C30C(BuiltInId::mix_Double4_Double4_Double4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30C30C30C,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_00B00B00F(BuiltInId::mix_Float1_Float1_Bool1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B00B00F,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10B10B10F(BuiltInId::mix_Float2_Float2_Bool2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B10B10F,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20B20B20F(BuiltInId::mix_Float3_Float3_Bool3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B20F,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30B30B30F(BuiltInId::mix_Float4_Float4_Bool4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30B30F,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_00C00C00F(BuiltInId::mix_Double1_Double1_Bool1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00C00C00F,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10C10C10F(BuiltInId::mix_Double2_Double2_Bool2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10C10C10F,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20C20C20F(BuiltInId::mix_Double3_Double3_Bool3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20C20C20F,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30C30C30F(BuiltInId::mix_Double4_Double4_Bool4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30C30C30F,
+                                        3,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_00D00D00F(BuiltInId::mix_Int1_Int1_Bool1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00D00D00F,
+                                        3,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10D10D10F(BuiltInId::mix_Int2_Int2_Bool2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10D10D10F,
+                                        3,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20D20D20F(BuiltInId::mix_Int3_Int3_Bool3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20D20D20F,
+                                        3,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30D30D30F(BuiltInId::mix_Int4_Int4_Bool4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30D30D30F,
+                                        3,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_00E00E00F(BuiltInId::mix_UInt1_UInt1_Bool1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00E00E00F,
+                                        3,
+                                        StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10E10E10F(BuiltInId::mix_UInt2_UInt2_Bool2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10E10E10F,
+                                        3,
+                                        StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20E20E20F(BuiltInId::mix_UInt3_UInt3_Bool3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20E20E20F,
+                                        3,
+                                        StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30E30E30F(BuiltInId::mix_UInt4_UInt4_Bool4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30E30E30F,
+                                        3,
+                                        StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_00F00F00F(BuiltInId::mix_Bool1_Bool1_Bool1,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00F00F00F,
+                                        3,
+                                        StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_10F10F10F(BuiltInId::mix_Bool2_Bool2_Bool2,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10F10F10F,
+                                        3,
+                                        StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_20F20F20F(BuiltInId::mix_Bool3_Bool3_Bool3,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20F20F20F,
+                                        3,
+                                        StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction mix_30F30F30F(BuiltInId::mix_Bool4_Bool4_Bool4,
+                                        BuiltInName::mix,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30F30F30F,
+                                        3,
+                                        StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpMix,
+                                        true);
+constexpr const TFunction step_00B00B(BuiltInId::step_Float1_Float1,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B00B30B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_10B10B(BuiltInId::step_Float2_Float2,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B10B00B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_20B20B(BuiltInId::step_Float3_Float3,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B20B00B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_30B30B(BuiltInId::step_Float4_Float4,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B30B30F,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00B10B(BuiltInId::step_Float1_Float2,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B10B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00B20B(BuiltInId::step_Float1_Float3,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B20B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00B30B(BuiltInId::step_Float1_Float4,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B30B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00C00C(BuiltInId::step_Double1_Double1,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00C00C10C,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_10C10C(BuiltInId::step_Double2_Double2,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10C10C10F,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_20C20C(BuiltInId::step_Double3_Double3,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20C20C20F,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_30C30C(BuiltInId::step_Double4_Double4,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30C30C00B,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00C10C(BuiltInId::step_Double1_Double2,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00C10C,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00C20C(BuiltInId::step_Double1_Double3,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00C20C,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction step_00C30C(BuiltInId::step_Double1_Double4,
+                                      BuiltInName::step,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00C30C,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpStep,
+                                      true);
+constexpr const TFunction smoothstep_00C00C00C(
     BuiltInId::smoothstep_Double1_Double1_Double1,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7860,7 +7232,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_10C10C10C(
+constexpr const TFunction smoothstep_10C10C10C(
     BuiltInId::smoothstep_Double2_Double2_Double2,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7869,7 +7241,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_20C20C20C(
+constexpr const TFunction smoothstep_20C20C20C(
     BuiltInId::smoothstep_Double3_Double3_Double3,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7878,7 +7250,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_30C30C30C(
+constexpr const TFunction smoothstep_30C30C30C(
     BuiltInId::smoothstep_Double4_Double4_Double4,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7887,7 +7259,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00C00C10C(
+constexpr const TFunction smoothstep_00C00C10C(
     BuiltInId::smoothstep_Double1_Double1_Double2,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7896,7 +7268,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00C00C20C(
+constexpr const TFunction smoothstep_00C00C20C(
     BuiltInId::smoothstep_Double1_Double1_Double3,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7905,7 +7277,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00C00C30C(
+constexpr const TFunction smoothstep_00C00C30C(
     BuiltInId::smoothstep_Double1_Double1_Double4,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7914,7 +7286,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00B00B00B(
+constexpr const TFunction smoothstep_00B00B00B(
     BuiltInId::smoothstep_Float1_Float1_Float1,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7923,7 +7295,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_10B10B10B(
+constexpr const TFunction smoothstep_10B10B10B(
     BuiltInId::smoothstep_Float2_Float2_Float2,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7932,7 +7304,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_20B20B20B(
+constexpr const TFunction smoothstep_20B20B20B(
     BuiltInId::smoothstep_Float3_Float3_Float3,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7941,7 +7313,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_30B30B30B(
+constexpr const TFunction smoothstep_30B30B30B(
     BuiltInId::smoothstep_Float4_Float4_Float4,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7950,7 +7322,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00B00B10B(
+constexpr const TFunction smoothstep_00B00B10B(
     BuiltInId::smoothstep_Float1_Float1_Float2,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7959,7 +7331,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00B00B20B(
+constexpr const TFunction smoothstep_00B00B20B(
     BuiltInId::smoothstep_Float1_Float1_Float3,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7968,7 +7340,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_smoothstep_00B00B30B(
+constexpr const TFunction smoothstep_00B00B30B(
     BuiltInId::smoothstep_Float1_Float1_Float4,
     BuiltInName::smoothstep,
     TExtension::UNDEFINED,
@@ -7977,223 +7349,199 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpSmoothstep,
     true);
-constexpr const TFunction function_modf_00B00B(
-    BuiltInId::modf_Float1_Float1,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B_o_00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_10B10B(
-    BuiltInId::modf_Float2_Float2,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_20B20B(
-    BuiltInId::modf_Float3_Float3,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B_o_20B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_30B30B(
-    BuiltInId::modf_Float4_Float4,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B_o_30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_00C00C(
-    BuiltInId::modf_Double1_Double1,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C_o_00C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_10C10C(
-    BuiltInId::modf_Double2_Double2,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_20C20C(
-    BuiltInId::modf_Double3_Double3,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C_o_20C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_modf_30C30C(
-    BuiltInId::modf_Double4_Double4,
-    BuiltInName::modf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C_o_30C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpModf,
-    false);
-constexpr const TFunction function_isnan_00B(
-    BuiltInId::isnan_Float1,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_10B(
-    BuiltInId::isnan_Float2,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_20B(
-    BuiltInId::isnan_Float3,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_30B(
-    BuiltInId::isnan_Float4,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_00C(
-    BuiltInId::isnan_Double1,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_10C(
-    BuiltInId::isnan_Double2,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_20C(
-    BuiltInId::isnan_Double3,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isnan_30C(
-    BuiltInId::isnan_Double4,
-    BuiltInName::isnan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpIsnan,
-    true);
-constexpr const TFunction function_isinf_00B(
-    BuiltInId::isinf_Float1,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_10B(
-    BuiltInId::isinf_Float2,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_20B(
-    BuiltInId::isinf_Float3,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_30B(
-    BuiltInId::isinf_Float4,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_00C(
-    BuiltInId::isinf_Double1,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_10C(
-    BuiltInId::isinf_Double2,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_20C(
-    BuiltInId::isinf_Double3,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_isinf_30C(
-    BuiltInId::isinf_Double4,
-    BuiltInName::isinf,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpIsinf,
-    true);
-constexpr const TFunction function_floatBitsToInt_00B(
+constexpr const TFunction modf_00B00B(BuiltInId::modf_Float1_Float1,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00B_o_00B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_10B10B(BuiltInId::modf_Float2_Float2,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10B_o_10B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_20B20B(BuiltInId::modf_Float3_Float3,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20B_o_20B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_30B30B(BuiltInId::modf_Float4_Float4,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30B_o_30B,
+                                      2,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_00C00C(BuiltInId::modf_Double1_Double1,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00C_o_00C,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_10C10C(BuiltInId::modf_Double2_Double2,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10C_o_10C,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_20C20C(BuiltInId::modf_Double3_Double3,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20C_o_20C,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction modf_30C30C(BuiltInId::modf_Double4_Double4,
+                                      BuiltInName::modf,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30C_o_30C,
+                                      2,
+                                      StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpModf,
+                                      false);
+constexpr const TFunction isnan_00B(BuiltInId::isnan_Float1,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_10B(BuiltInId::isnan_Float2,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_20B(BuiltInId::isnan_Float3,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_30B(BuiltInId::isnan_Float4,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_00C(BuiltInId::isnan_Double1,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00C10C,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_10C(BuiltInId::isnan_Double2,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10C_o_10C,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_20C(BuiltInId::isnan_Double3,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20C20C20F,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isnan_30C(BuiltInId::isnan_Double4,
+                                    BuiltInName::isnan,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30C30C00B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpIsnan,
+                                    true);
+constexpr const TFunction isinf_00B(BuiltInId::isinf_Float1,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00B00B30B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_10B(BuiltInId::isinf_Float2,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10B_o_10B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_20B(BuiltInId::isinf_Float3,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20B20B00B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_30B(BuiltInId::isinf_Float4,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30B30D,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_00C(BuiltInId::isinf_Double1,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p00C10C,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_10C(BuiltInId::isinf_Double2,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p10C_o_10C,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_20C(BuiltInId::isinf_Double3,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p20C20C20F,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction isinf_30C(BuiltInId::isinf_Double4,
+                                    BuiltInName::isinf,
+                                    TExtension::UNDEFINED,
+                                    BuiltInParameters::p30C30C00B,
+                                    1,
+                                    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                    EOpIsinf,
+                                    true);
+constexpr const TFunction floatBitsToInt_00B(
     BuiltInId::floatBitsToInt_Float1,
     BuiltInName::floatBitsToInt,
     TExtension::UNDEFINED,
@@ -8202,7 +7550,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpFloatBitsToInt,
     true);
-constexpr const TFunction function_floatBitsToInt_10B(
+constexpr const TFunction floatBitsToInt_10B(
     BuiltInId::floatBitsToInt_Float2,
     BuiltInName::floatBitsToInt,
     TExtension::UNDEFINED,
@@ -8211,7 +7559,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpFloatBitsToInt,
     true);
-constexpr const TFunction function_floatBitsToInt_20B(
+constexpr const TFunction floatBitsToInt_20B(
     BuiltInId::floatBitsToInt_Float3,
     BuiltInName::floatBitsToInt,
     TExtension::UNDEFINED,
@@ -8220,7 +7568,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpFloatBitsToInt,
     true);
-constexpr const TFunction function_floatBitsToInt_30B(
+constexpr const TFunction floatBitsToInt_30B(
     BuiltInId::floatBitsToInt_Float4,
     BuiltInName::floatBitsToInt,
     TExtension::UNDEFINED,
@@ -8229,7 +7577,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpFloatBitsToInt,
     true);
-constexpr const TFunction function_floatBitsToUint_00B(
+constexpr const TFunction floatBitsToUint_00B(
     BuiltInId::floatBitsToUint_Float1,
     BuiltInName::floatBitsToUint,
     TExtension::UNDEFINED,
@@ -8238,7 +7586,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpFloatBitsToUint,
     true);
-constexpr const TFunction function_floatBitsToUint_10B(
+constexpr const TFunction floatBitsToUint_10B(
     BuiltInId::floatBitsToUint_Float2,
     BuiltInName::floatBitsToUint,
     TExtension::UNDEFINED,
@@ -8247,7 +7595,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpFloatBitsToUint,
     true);
-constexpr const TFunction function_floatBitsToUint_20B(
+constexpr const TFunction floatBitsToUint_20B(
     BuiltInId::floatBitsToUint_Float3,
     BuiltInName::floatBitsToUint,
     TExtension::UNDEFINED,
@@ -8256,7 +7604,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpFloatBitsToUint,
     true);
-constexpr const TFunction function_floatBitsToUint_30B(
+constexpr const TFunction floatBitsToUint_30B(
     BuiltInId::floatBitsToUint_Float4,
     BuiltInName::floatBitsToUint,
     TExtension::UNDEFINED,
@@ -8265,7 +7613,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpFloatBitsToUint,
     true);
-constexpr const TFunction function_intBitsToFloat_00D(
+constexpr const TFunction intBitsToFloat_00D(
     BuiltInId::intBitsToFloat_Int1,
     BuiltInName::intBitsToFloat,
     TExtension::UNDEFINED,
@@ -8274,7 +7622,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpIntBitsToFloat,
     true);
-constexpr const TFunction function_intBitsToFloat_10D(
+constexpr const TFunction intBitsToFloat_10D(
     BuiltInId::intBitsToFloat_Int2,
     BuiltInName::intBitsToFloat,
     TExtension::UNDEFINED,
@@ -8283,7 +7631,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpIntBitsToFloat,
     true);
-constexpr const TFunction function_intBitsToFloat_20D(
+constexpr const TFunction intBitsToFloat_20D(
     BuiltInId::intBitsToFloat_Int3,
     BuiltInName::intBitsToFloat,
     TExtension::UNDEFINED,
@@ -8292,7 +7640,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpIntBitsToFloat,
     true);
-constexpr const TFunction function_intBitsToFloat_30D(
+constexpr const TFunction intBitsToFloat_30D(
     BuiltInId::intBitsToFloat_Int4,
     BuiltInName::intBitsToFloat,
     TExtension::UNDEFINED,
@@ -8301,7 +7649,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpIntBitsToFloat,
     true);
-constexpr const TFunction function_uintBitsToFloat_00E(
+constexpr const TFunction uintBitsToFloat_00E(
     BuiltInId::uintBitsToFloat_UInt1,
     BuiltInName::uintBitsToFloat,
     TExtension::UNDEFINED,
@@ -8310,7 +7658,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUintBitsToFloat,
     true);
-constexpr const TFunction function_uintBitsToFloat_10E(
+constexpr const TFunction uintBitsToFloat_10E(
     BuiltInId::uintBitsToFloat_UInt2,
     BuiltInName::uintBitsToFloat,
     TExtension::UNDEFINED,
@@ -8319,7 +7667,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUintBitsToFloat,
     true);
-constexpr const TFunction function_uintBitsToFloat_20E(
+constexpr const TFunction uintBitsToFloat_20E(
     BuiltInId::uintBitsToFloat_UInt3,
     BuiltInName::uintBitsToFloat,
     TExtension::UNDEFINED,
@@ -8328,7 +7676,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpUintBitsToFloat,
     true);
-constexpr const TFunction function_uintBitsToFloat_30E(
+constexpr const TFunction uintBitsToFloat_30E(
     BuiltInId::uintBitsToFloat_UInt4,
     BuiltInName::uintBitsToFloat,
     TExtension::UNDEFINED,
@@ -8337,223 +7685,199 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUintBitsToFloat,
     true);
-constexpr const TFunction function_fma_00B00B00B(
-    BuiltInId::fma_Float1_Float1_Float1,
-    BuiltInName::fma,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B00B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFma,
-    true);
-constexpr const TFunction function_fma_10B10B10B(
-    BuiltInId::fma_Float2_Float2_Float2,
-    BuiltInName::fma,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B10B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFma,
-    true);
-constexpr const TFunction function_fma_20B20B20B(
-    BuiltInId::fma_Float3_Float3_Float3,
-    BuiltInName::fma,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B20B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFma,
-    true);
-constexpr const TFunction function_fma_30B30B30B(
-    BuiltInId::fma_Float4_Float4_Float4,
-    BuiltInName::fma,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30B,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFma,
-    true);
-constexpr const TFunction function_fma_00C00C00C(
-    BuiltInId::fma_Double1_Double1_Double1,
-    BuiltInName::fma,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00C00C,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFma,
-    true);
-constexpr const TFunction function_fma_10C10C10C(
-    BuiltInId::fma_Double2_Double2_Double2,
-    BuiltInName::fma,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C10C,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFma,
-    true);
-constexpr const TFunction function_fma_20C20C20C(
-    BuiltInId::fma_Double3_Double3_Double3,
-    BuiltInName::fma,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20C,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFma,
-    true);
-constexpr const TFunction function_fma_30C30C30C(
-    BuiltInId::fma_Double4_Double4_Double4,
-    BuiltInName::fma,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C30C,
-    3,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFma,
-    true);
-constexpr const TFunction function_frexp_00B00D(
-    BuiltInId::frexp_Float1_Int1,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B_o_00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_10B10D(
-    BuiltInId::frexp_Float2_Int2,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_20B20D(
-    BuiltInId::frexp_Float3_Int3,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B_o_20D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_30B30D(
-    BuiltInId::frexp_Float4_Int4,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B_o_30D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_00C00D(
-    BuiltInId::frexp_Double1_Int1,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C_o_00D,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_10C10D(
-    BuiltInId::frexp_Double2_Int2,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10D,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_20C20D(
-    BuiltInId::frexp_Double3_Int3,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C_o_20D,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_frexp_30C30D(
-    BuiltInId::frexp_Double4_Int4,
-    BuiltInName::frexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C_o_30D,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFrexp,
-    false);
-constexpr const TFunction function_ldexp_00B00D(
-    BuiltInId::ldexp_Float1_Int1,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_10B10D(
-    BuiltInId::ldexp_Float2_Int2,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_20B20D(
-    BuiltInId::ldexp_Float3_Int3,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_30B30D(
-    BuiltInId::ldexp_Float4_Int4,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_00C00D(
-    BuiltInId::ldexp_Double1_Int1,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00D,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_10C10D(
-    BuiltInId::ldexp_Double2_Int2,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10D,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_20C20D(
-    BuiltInId::ldexp_Double3_Int3,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20D,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_ldexp_30C30D(
-    BuiltInId::ldexp_Double4_Int4,
-    BuiltInName::ldexp,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30D,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLdexp,
-    true);
-constexpr const TFunction function_packSnorm2x16_10B(
+constexpr const TFunction fma_00B00B00B(BuiltInId::fma_Float1_Float1_Float1,
+                                        BuiltInName::fma,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B00B00B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpFma,
+                                        true);
+constexpr const TFunction fma_10B10B10B(BuiltInId::fma_Float2_Float2_Float2,
+                                        BuiltInName::fma,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B10B10B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpFma,
+                                        true);
+constexpr const TFunction fma_20B20B20B(BuiltInId::fma_Float3_Float3_Float3,
+                                        BuiltInName::fma,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B20B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpFma,
+                                        true);
+constexpr const TFunction fma_30B30B30B(BuiltInId::fma_Float4_Float4_Float4,
+                                        BuiltInName::fma,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30B30B,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpFma,
+                                        true);
+constexpr const TFunction fma_00C00C00C(BuiltInId::fma_Double1_Double1_Double1,
+                                        BuiltInName::fma,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00C00C00C,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpFma,
+                                        true);
+constexpr const TFunction fma_10C10C10C(BuiltInId::fma_Double2_Double2_Double2,
+                                        BuiltInName::fma,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10C10C10C,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpFma,
+                                        true);
+constexpr const TFunction fma_20C20C20C(BuiltInId::fma_Double3_Double3_Double3,
+                                        BuiltInName::fma,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20C20C20C,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpFma,
+                                        true);
+constexpr const TFunction fma_30C30C30C(BuiltInId::fma_Double4_Double4_Double4,
+                                        BuiltInName::fma,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30C30C30C,
+                                        3,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpFma,
+                                        true);
+constexpr const TFunction frexp_00B00D(BuiltInId::frexp_Float1_Int1,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00B_o_00D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_10B10D(BuiltInId::frexp_Float2_Int2,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10B_o_10D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_20B20D(BuiltInId::frexp_Float3_Int3,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B_o_20D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_30B30D(BuiltInId::frexp_Float4_Int4,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30B_o_30D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_00C00D(BuiltInId::frexp_Double1_Int1,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00C_o_00D,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_10C10D(BuiltInId::frexp_Double2_Int2,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10C_o_10D,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_20C20D(BuiltInId::frexp_Double3_Int3,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20C_o_20D,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction frexp_30C30D(BuiltInId::frexp_Double4_Int4,
+                                       BuiltInName::frexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30C_o_30D,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpFrexp,
+                                       false);
+constexpr const TFunction ldexp_00B00D(BuiltInId::ldexp_Float1_Int1,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00B00D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_10B10D(BuiltInId::ldexp_Float2_Int2,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10B10D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_20B20D(BuiltInId::ldexp_Float3_Int3,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B20D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_30B30D(BuiltInId::ldexp_Float4_Int4,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30B30D,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_00C00D(BuiltInId::ldexp_Double1_Int1,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00C00D,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_10C10D(BuiltInId::ldexp_Double2_Int2,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10C10D,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_20C20D(BuiltInId::ldexp_Double3_Int3,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20C20D,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction ldexp_30C30D(BuiltInId::ldexp_Double4_Int4,
+                                       BuiltInName::ldexp,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30C30D,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpLdexp,
+                                       true);
+constexpr const TFunction packSnorm2x16_10B(
     BuiltInId::packSnorm2x16_Float2,
     BuiltInName::packSnorm2x16,
     TExtension::UNDEFINED,
@@ -8562,7 +7886,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackSnorm2x16,
     true);
-constexpr const TFunction function_packHalf2x16_10B(
+constexpr const TFunction packHalf2x16_10B(
     BuiltInId::packHalf2x16_Float2,
     BuiltInName::packHalf2x16,
     TExtension::UNDEFINED,
@@ -8571,7 +7895,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackHalf2x16,
     true);
-constexpr const TFunction function_unpackSnorm2x16_00E(
+constexpr const TFunction unpackSnorm2x16_00E(
     BuiltInId::unpackSnorm2x16_UInt1,
     BuiltInName::unpackSnorm2x16,
     TExtension::UNDEFINED,
@@ -8580,7 +7904,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUnpackSnorm2x16,
     true);
-constexpr const TFunction function_unpackHalf2x16_00E(
+constexpr const TFunction unpackHalf2x16_00E(
     BuiltInId::unpackHalf2x16_UInt1,
     BuiltInName::unpackHalf2x16,
     TExtension::UNDEFINED,
@@ -8589,7 +7913,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUnpackHalf2x16,
     true);
-constexpr const TFunction function_packUnorm2x16_10B(
+constexpr const TFunction packUnorm2x16_10B(
     BuiltInId::packUnorm2x16_Float2,
     BuiltInName::packUnorm2x16,
     TExtension::UNDEFINED,
@@ -8598,7 +7922,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackUnorm2x16,
     true);
-constexpr const TFunction function_unpackUnorm2x16_00E(
+constexpr const TFunction unpackUnorm2x16_00E(
     BuiltInId::unpackUnorm2x16_UInt1,
     BuiltInName::unpackUnorm2x16,
     TExtension::UNDEFINED,
@@ -8607,7 +7931,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUnpackUnorm2x16,
     true);
-constexpr const TFunction function_packUnorm4x8_30B(
+constexpr const TFunction packUnorm4x8_30B(
     BuiltInId::packUnorm4x8_Float4,
     BuiltInName::packUnorm4x8,
     TExtension::UNDEFINED,
@@ -8616,7 +7940,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackUnorm4x8,
     true);
-constexpr const TFunction function_packSnorm4x8_30B(
+constexpr const TFunction packSnorm4x8_30B(
     BuiltInId::packSnorm4x8_Float4,
     BuiltInName::packSnorm4x8,
     TExtension::UNDEFINED,
@@ -8625,7 +7949,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackSnorm4x8,
     true);
-constexpr const TFunction function_unpackUnorm4x8_00E(
+constexpr const TFunction unpackUnorm4x8_00E(
     BuiltInId::unpackUnorm4x8_UInt1,
     BuiltInName::unpackUnorm4x8,
     TExtension::UNDEFINED,
@@ -8634,7 +7958,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUnpackUnorm4x8,
     true);
-constexpr const TFunction function_unpackSnorm4x8_00E(
+constexpr const TFunction unpackSnorm4x8_00E(
     BuiltInId::unpackSnorm4x8_UInt1,
     BuiltInName::unpackSnorm4x8,
     TExtension::UNDEFINED,
@@ -8643,7 +7967,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUnpackSnorm4x8,
     true);
-constexpr const TFunction function_packDouble2x32_10E(
+constexpr const TFunction packDouble2x32_10E(
     BuiltInId::packDouble2x32_UInt2,
     BuiltInName::packDouble2x32,
     TExtension::UNDEFINED,
@@ -8652,7 +7976,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpPackDouble2x32,
     true);
-constexpr const TFunction function_unpackDouble2x32_00C(
+constexpr const TFunction unpackDouble2x32_00C(
     BuiltInId::unpackDouble2x32_Double1,
     BuiltInName::unpackDouble2x32,
     TExtension::UNDEFINED,
@@ -8661,79 +7985,71 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUnpackDouble2x32,
     true);
-constexpr const TFunction function_length_00B(
-    BuiltInId::length_Float1,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_10B(
-    BuiltInId::length_Float2,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_20B(
-    BuiltInId::length_Float3,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_30B(
-    BuiltInId::length_Float4,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_00C(
-    BuiltInId::length_Double1,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_10C(
-    BuiltInId::length_Double2,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_20C(
-    BuiltInId::length_Double3,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_length_30C(
-    BuiltInId::length_Double4,
-    BuiltInName::length,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpLength,
-    true);
-constexpr const TFunction function_distance_00B00B(
+constexpr const TFunction length_00B(BuiltInId::length_Float1,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_10B(BuiltInId::length_Float2,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B_o_10B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_20B(BuiltInId::length_Float3,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_30B(BuiltInId::length_Float4,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30D,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_00C(BuiltInId::length_Double1,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00C10C,
+                                     1,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_10C(BuiltInId::length_Double2,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10C_o_10C,
+                                     1,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_20C(BuiltInId::length_Double3,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20C20C20F,
+                                     1,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction length_30C(BuiltInId::length_Double4,
+                                     BuiltInName::length,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30C30C00B,
+                                     1,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpLength,
+                                     true);
+constexpr const TFunction distance_00B00B(
     BuiltInId::distance_Float1_Float1,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -8742,7 +8058,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_10B10B(
+constexpr const TFunction distance_10B10B(
     BuiltInId::distance_Float2_Float2,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -8751,7 +8067,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_20B20B(
+constexpr const TFunction distance_20B20B(
     BuiltInId::distance_Float3_Float3,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -8760,7 +8076,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_30B30B(
+constexpr const TFunction distance_30B30B(
     BuiltInId::distance_Float4_Float4,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -8769,7 +8085,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_00C00C(
+constexpr const TFunction distance_00C00C(
     BuiltInId::distance_Double1_Double1,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -8778,7 +8094,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_10C10C(
+constexpr const TFunction distance_10C10C(
     BuiltInId::distance_Double2_Double2,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -8787,7 +8103,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_20C20C(
+constexpr const TFunction distance_20C20C(
     BuiltInId::distance_Double3_Double3,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -8796,7 +8112,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_distance_30C30C(
+constexpr const TFunction distance_30C30C(
     BuiltInId::distance_Double4_Double4,
     BuiltInName::distance,
     TExtension::UNDEFINED,
@@ -8805,169 +8121,151 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDistance,
     true);
-constexpr const TFunction function_dot_00B00B(
-    BuiltInId::dot_Float1_Float1,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_10B10B(
-    BuiltInId::dot_Float2_Float2,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_20B20B(
-    BuiltInId::dot_Float3_Float3,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_30B30B(
-    BuiltInId::dot_Float4_Float4,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_00C00C(
-    BuiltInId::dot_Double1_Double1,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C00C10C,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_10C10C(
-    BuiltInId::dot_Double2_Double2,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C10C10F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_20C20C(
-    BuiltInId::dot_Double3_Double3,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_dot_30C30C(
-    BuiltInId::dot_Double4_Double4,
-    BuiltInName::dot,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDot,
-    true);
-constexpr const TFunction function_cross_20B20B(
-    BuiltInId::cross_Float3_Float3,
-    BuiltInName::cross,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCross,
-    true);
-constexpr const TFunction function_cross_20C20C(
-    BuiltInId::cross_Double3_Double3,
-    BuiltInName::cross,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    2,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCross,
-    true);
-constexpr const TFunction function_normalize_00B(
-    BuiltInId::normalize_Float1,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_10B(
-    BuiltInId::normalize_Float2,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_20B(
-    BuiltInId::normalize_Float3,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_30B(
-    BuiltInId::normalize_Float4,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_00C(
-    BuiltInId::normalize_Double1,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00C10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_10C(
-    BuiltInId::normalize_Double2,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10C_o_10C,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_20C(
-    BuiltInId::normalize_Double3,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20C20C20F,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_normalize_30C(
-    BuiltInId::normalize_Double4,
-    BuiltInName::normalize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30C30C00B,
-    1,
-    StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNormalize,
-    true);
-constexpr const TFunction function_faceforward_00B00B00B(
+constexpr const TFunction dot_00B00B(BuiltInId::dot_Float1_Float1,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_10B10B(BuiltInId::dot_Float2_Float2,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B10B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_20B20B(BuiltInId::dot_Float3_Float3,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_30B30B(BuiltInId::dot_Float4_Float4,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30B30F,
+                                     2,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_00C00C(BuiltInId::dot_Double1_Double1,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00C00C10C,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_10C10C(BuiltInId::dot_Double2_Double2,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10C10C10F,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_20C20C(BuiltInId::dot_Double3_Double3,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20C20C20F,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction dot_30C30C(BuiltInId::dot_Double4_Double4,
+                                     BuiltInName::dot,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30C30C00B,
+                                     2,
+                                     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpDot,
+                                     true);
+constexpr const TFunction cross_20B20B(BuiltInId::cross_Float3_Float3,
+                                       BuiltInName::cross,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B20B00B,
+                                       2,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpCross,
+                                       true);
+constexpr const TFunction cross_20C20C(BuiltInId::cross_Double3_Double3,
+                                       BuiltInName::cross,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20C20C20F,
+                                       2,
+                                       StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpCross,
+                                       true);
+constexpr const TFunction normalize_00B(BuiltInId::normalize_Float1,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00B00B30B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_10B(BuiltInId::normalize_Float2,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10B_o_10B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_20B(BuiltInId::normalize_Float3,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20B20B00B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_30B(BuiltInId::normalize_Float4,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30B30D,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_00C(BuiltInId::normalize_Double1,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00C10C,
+                                        1,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_10C(BuiltInId::normalize_Double2,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p10C_o_10C,
+                                        1,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_20C(BuiltInId::normalize_Double3,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p20C20C20F,
+                                        1,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction normalize_30C(BuiltInId::normalize_Double4,
+                                        BuiltInName::normalize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p30C30C00B,
+                                        1,
+                                        StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpNormalize,
+                                        true);
+constexpr const TFunction faceforward_00B00B00B(
     BuiltInId::faceforward_Float1_Float1_Float1,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -8976,7 +8274,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_10B10B10B(
+constexpr const TFunction faceforward_10B10B10B(
     BuiltInId::faceforward_Float2_Float2_Float2,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -8985,7 +8283,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_20B20B20B(
+constexpr const TFunction faceforward_20B20B20B(
     BuiltInId::faceforward_Float3_Float3_Float3,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -8994,7 +8292,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_30B30B30B(
+constexpr const TFunction faceforward_30B30B30B(
     BuiltInId::faceforward_Float4_Float4_Float4,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -9003,7 +8301,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_00C00C00C(
+constexpr const TFunction faceforward_00C00C00C(
     BuiltInId::faceforward_Double1_Double1_Double1,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -9012,7 +8310,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_10C10C10C(
+constexpr const TFunction faceforward_10C10C10C(
     BuiltInId::faceforward_Double2_Double2_Double2,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -9021,7 +8319,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_20C20C20C(
+constexpr const TFunction faceforward_20C20C20C(
     BuiltInId::faceforward_Double3_Double3_Double3,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -9030,7 +8328,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_faceforward_30C30C30C(
+constexpr const TFunction faceforward_30C30C30C(
     BuiltInId::faceforward_Double4_Double4_Double4,
     BuiltInName::faceforward,
     TExtension::UNDEFINED,
@@ -9039,43 +8337,39 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpFaceforward,
     true);
-constexpr const TFunction function_reflect_00B00B(
-    BuiltInId::reflect_Float1_Float1,
-    BuiltInName::reflect,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpReflect,
-    true);
-constexpr const TFunction function_reflect_10B10B(
-    BuiltInId::reflect_Float2_Float2,
-    BuiltInName::reflect,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpReflect,
-    true);
-constexpr const TFunction function_reflect_20B20B(
-    BuiltInId::reflect_Float3_Float3,
-    BuiltInName::reflect,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpReflect,
-    true);
-constexpr const TFunction function_reflect_30B30B(
-    BuiltInId::reflect_Float4_Float4,
-    BuiltInName::reflect,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpReflect,
-    true);
-constexpr const TFunction function_reflect_00C00C(
+constexpr const TFunction reflect_00B00B(BuiltInId::reflect_Float1_Float1,
+                                         BuiltInName::reflect,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00B00B30B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpReflect,
+                                         true);
+constexpr const TFunction reflect_10B10B(BuiltInId::reflect_Float2_Float2,
+                                         BuiltInName::reflect,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p10B10B00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                         EOpReflect,
+                                         true);
+constexpr const TFunction reflect_20B20B(BuiltInId::reflect_Float3_Float3,
+                                         BuiltInName::reflect,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p20B20B00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                         EOpReflect,
+                                         true);
+constexpr const TFunction reflect_30B30B(BuiltInId::reflect_Float4_Float4,
+                                         BuiltInName::reflect,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p30B30B30F,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpReflect,
+                                         true);
+constexpr const TFunction reflect_00C00C(
     BuiltInId::reflect_Double1_Double1,
     BuiltInName::reflect,
     TExtension::UNDEFINED,
@@ -9084,7 +8378,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpReflect,
     true);
-constexpr const TFunction function_reflect_10C10C(
+constexpr const TFunction reflect_10C10C(
     BuiltInId::reflect_Double2_Double2,
     BuiltInName::reflect,
     TExtension::UNDEFINED,
@@ -9093,7 +8387,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpReflect,
     true);
-constexpr const TFunction function_reflect_20C20C(
+constexpr const TFunction reflect_20C20C(
     BuiltInId::reflect_Double3_Double3,
     BuiltInName::reflect,
     TExtension::UNDEFINED,
@@ -9102,7 +8396,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpReflect,
     true);
-constexpr const TFunction function_reflect_30C30C(
+constexpr const TFunction reflect_30C30C(
     BuiltInId::reflect_Double4_Double4,
     BuiltInName::reflect,
     TExtension::UNDEFINED,
@@ -9111,7 +8405,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpReflect,
     true);
-constexpr const TFunction function_refract_00B00B00B(
+constexpr const TFunction refract_00B00B00B(
     BuiltInId::refract_Float1_Float1_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -9120,7 +8414,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_10B10B00B(
+constexpr const TFunction refract_10B10B00B(
     BuiltInId::refract_Float2_Float2_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -9129,7 +8423,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_20B20B00B(
+constexpr const TFunction refract_20B20B00B(
     BuiltInId::refract_Float3_Float3_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -9138,7 +8432,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_30B30B00B(
+constexpr const TFunction refract_30B30B00B(
     BuiltInId::refract_Float4_Float4_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -9147,7 +8441,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_00C00C00B(
+constexpr const TFunction refract_00C00C00B(
     BuiltInId::refract_Double1_Double1_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -9156,7 +8450,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_10C10C00B(
+constexpr const TFunction refract_10C10C00B(
     BuiltInId::refract_Double2_Double2_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -9165,7 +8459,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_20C20C00B(
+constexpr const TFunction refract_20C20C00B(
     BuiltInId::refract_Double3_Double3_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -9174,7 +8468,7 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_refract_30C30C00B(
+constexpr const TFunction refract_30C30C00B(
     BuiltInId::refract_Double4_Double4_Float1,
     BuiltInName::refract,
     TExtension::UNDEFINED,
@@ -9183,16 +8477,15 @@
     StaticType::Get<EbtDouble, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpRefract,
     true);
-constexpr const TFunction function_ftransform_(
-    BuiltInId::ftransform,
-    BuiltInName::ftransform,
-    TExtension::UNDEFINED,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_matrixCompMult_50B50B(
+constexpr const TFunction ftransform_(BuiltInId::ftransform,
+                                      BuiltInName::ftransform,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::empty,
+                                      0,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpCallBuiltInFunction,
+                                      false);
+constexpr const TFunction matrixCompMult_50B50B(
     BuiltInId::matrixCompMult_Float2x2_Float2x2,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9201,7 +8494,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_A0BA0B(
+constexpr const TFunction matrixCompMult_A0BA0B(
     BuiltInId::matrixCompMult_Float3x3_Float3x3,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9210,7 +8503,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_F0BF0B(
+constexpr const TFunction matrixCompMult_F0BF0B(
     BuiltInId::matrixCompMult_Float4x4_Float4x4,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9219,7 +8512,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_90B90B(
+constexpr const TFunction matrixCompMult_90B90B(
     BuiltInId::matrixCompMult_Float2x3_Float2x3,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9228,7 +8521,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_60B60B(
+constexpr const TFunction matrixCompMult_60B60B(
     BuiltInId::matrixCompMult_Float3x2_Float3x2,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9237,7 +8530,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_D0BD0B(
+constexpr const TFunction matrixCompMult_D0BD0B(
     BuiltInId::matrixCompMult_Float2x4_Float2x4,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9246,7 +8539,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_70B70B(
+constexpr const TFunction matrixCompMult_70B70B(
     BuiltInId::matrixCompMult_Float4x2_Float4x2,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9255,7 +8548,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_E0BE0B(
+constexpr const TFunction matrixCompMult_E0BE0B(
     BuiltInId::matrixCompMult_Float3x4_Float3x4,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9264,7 +8557,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_matrixCompMult_B0BB0B(
+constexpr const TFunction matrixCompMult_B0BB0B(
     BuiltInId::matrixCompMult_Float4x3_Float4x3,
     BuiltInName::matrixCompMult,
     TExtension::UNDEFINED,
@@ -9273,7 +8566,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>(),
     EOpMulMatrixComponentWise,
     true);
-constexpr const TFunction function_outerProduct_10B10B(
+constexpr const TFunction outerProduct_10B10B(
     BuiltInId::outerProduct_Float2_Float2,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9282,7 +8575,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_20B20B(
+constexpr const TFunction outerProduct_20B20B(
     BuiltInId::outerProduct_Float3_Float3,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9291,7 +8584,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_30B30B(
+constexpr const TFunction outerProduct_30B30B(
     BuiltInId::outerProduct_Float4_Float4,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9300,7 +8593,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_20B10B(
+constexpr const TFunction outerProduct_20B10B(
     BuiltInId::outerProduct_Float3_Float2,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9309,7 +8602,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_10B20B(
+constexpr const TFunction outerProduct_10B20B(
     BuiltInId::outerProduct_Float2_Float3,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9318,7 +8611,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_30B10B(
+constexpr const TFunction outerProduct_30B10B(
     BuiltInId::outerProduct_Float4_Float2,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9327,7 +8620,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_10B30B(
+constexpr const TFunction outerProduct_10B30B(
     BuiltInId::outerProduct_Float2_Float4,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9336,7 +8629,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_30B20B(
+constexpr const TFunction outerProduct_30B20B(
     BuiltInId::outerProduct_Float4_Float3,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9345,7 +8638,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_outerProduct_20B30B(
+constexpr const TFunction outerProduct_20B30B(
     BuiltInId::outerProduct_Float3_Float4,
     BuiltInName::outerProduct,
     TExtension::UNDEFINED,
@@ -9354,88 +8647,79 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>(),
     EOpOuterProduct,
     true);
-constexpr const TFunction function_transpose_50B(
-    BuiltInId::transpose_Float2x2,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p50B50B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_A0B(
-    BuiltInId::transpose_Float3x3,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pA0BA0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_F0B(
-    BuiltInId::transpose_Float4x4,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pF0BF0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_60B(
-    BuiltInId::transpose_Float3x2,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p60B60B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_90B(
-    BuiltInId::transpose_Float2x3,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p90B90B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_70B(
-    BuiltInId::transpose_Float4x2,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p70B70B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_D0B(
-    BuiltInId::transpose_Float2x4,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pD0BD0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_B0B(
-    BuiltInId::transpose_Float4x3,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pB0BB0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_transpose_E0B(
-    BuiltInId::transpose_Float3x4,
-    BuiltInName::transpose,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pE0BE0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>(),
-    EOpTranspose,
-    true);
-constexpr const TFunction function_determinant_50B(
+constexpr const TFunction transpose_50B(BuiltInId::transpose_Float2x2,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p50B50B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_A0B(BuiltInId::transpose_Float3x3,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pA0BA0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_F0B(BuiltInId::transpose_Float4x4,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pF0BF0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_60B(BuiltInId::transpose_Float3x2,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p60B60B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 3>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_90B(BuiltInId::transpose_Float2x3,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p90B90B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 2>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_70B(BuiltInId::transpose_Float4x2,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p70B70B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 4>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_D0B(BuiltInId::transpose_Float2x4,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pD0BD0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 2>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_B0B(BuiltInId::transpose_Float4x3,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pB0BB0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 4>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction transpose_E0B(BuiltInId::transpose_Float3x4,
+                                        BuiltInName::transpose,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::pE0BE0B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 3>(),
+                                        EOpTranspose,
+                                        true);
+constexpr const TFunction determinant_50B(
     BuiltInId::determinant_Float2x2,
     BuiltInName::determinant,
     TExtension::UNDEFINED,
@@ -9444,7 +8728,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDeterminant,
     true);
-constexpr const TFunction function_determinant_A0B(
+constexpr const TFunction determinant_A0B(
     BuiltInId::determinant_Float3x3,
     BuiltInName::determinant,
     TExtension::UNDEFINED,
@@ -9453,7 +8737,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDeterminant,
     true);
-constexpr const TFunction function_determinant_F0B(
+constexpr const TFunction determinant_F0B(
     BuiltInId::determinant_Float4x4,
     BuiltInName::determinant,
     TExtension::UNDEFINED,
@@ -9462,115 +8746,103 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpDeterminant,
     true);
-constexpr const TFunction function_inverse_50B(
-    BuiltInId::inverse_Float2x2,
-    BuiltInName::inverse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p50B50B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
-    EOpInverse,
-    true);
-constexpr const TFunction function_inverse_A0B(
-    BuiltInId::inverse_Float3x3,
-    BuiltInName::inverse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pA0BA0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
-    EOpInverse,
-    true);
-constexpr const TFunction function_inverse_F0B(
-    BuiltInId::inverse_Float4x4,
-    BuiltInName::inverse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::pF0BF0B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
-    EOpInverse,
-    true);
-constexpr const TFunction function_lessThan_10B10B(
-    BuiltInId::lessThan_Float2_Float2,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_20B20B(
-    BuiltInId::lessThan_Float3_Float3,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_30B30B(
-    BuiltInId::lessThan_Float4_Float4,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_10D10D(
-    BuiltInId::lessThan_Int2_Int2,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_20D20D(
-    BuiltInId::lessThan_Int3_Int3,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_30D30D(
-    BuiltInId::lessThan_Int4_Int4,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_10E10E(
-    BuiltInId::lessThan_UInt2_UInt2,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_20E20E(
-    BuiltInId::lessThan_UInt3_UInt3,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThan_30E30E(
-    BuiltInId::lessThan_UInt4_UInt4,
-    BuiltInName::lessThan,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLessThanComponentWise,
-    true);
-constexpr const TFunction function_lessThanEqual_10B10B(
+constexpr const TFunction inverse_50B(BuiltInId::inverse_Float2x2,
+                                      BuiltInName::inverse,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p50B50B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 2>(),
+                                      EOpInverse,
+                                      true);
+constexpr const TFunction inverse_A0B(BuiltInId::inverse_Float3x3,
+                                      BuiltInName::inverse,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::pA0BA0B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 3>(),
+                                      EOpInverse,
+                                      true);
+constexpr const TFunction inverse_F0B(BuiltInId::inverse_Float4x4,
+                                      BuiltInName::inverse,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::pF0BF0B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 4>(),
+                                      EOpInverse,
+                                      true);
+constexpr const TFunction lessThan_10B10B(BuiltInId::lessThan_Float2_Float2,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10B10B00B,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_20B20B(BuiltInId::lessThan_Float3_Float3,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20B20B00B,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_30B30B(BuiltInId::lessThan_Float4_Float4,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30B30B30F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_10D10D(BuiltInId::lessThan_Int2_Int2,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10D10D_o_10D_o_10D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_20D20D(BuiltInId::lessThan_Int3_Int3,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20D20D00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_30D30D(BuiltInId::lessThan_Int4_Int4,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30D30D30F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_10E10E(BuiltInId::lessThan_UInt2_UInt2,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10E10E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_20E20E(BuiltInId::lessThan_UInt3_UInt3,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20E20E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThan_30E30E(BuiltInId::lessThan_UInt4_UInt4,
+                                          BuiltInName::lessThan,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30E30E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpLessThanComponentWise,
+                                          true);
+constexpr const TFunction lessThanEqual_10B10B(
     BuiltInId::lessThanEqual_Float2_Float2,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9579,7 +8851,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_20B20B(
+constexpr const TFunction lessThanEqual_20B20B(
     BuiltInId::lessThanEqual_Float3_Float3,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9588,7 +8860,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_30B30B(
+constexpr const TFunction lessThanEqual_30B30B(
     BuiltInId::lessThanEqual_Float4_Float4,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9597,7 +8869,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_10D10D(
+constexpr const TFunction lessThanEqual_10D10D(
     BuiltInId::lessThanEqual_Int2_Int2,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9606,7 +8878,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_20D20D(
+constexpr const TFunction lessThanEqual_20D20D(
     BuiltInId::lessThanEqual_Int3_Int3,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9615,7 +8887,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_30D30D(
+constexpr const TFunction lessThanEqual_30D30D(
     BuiltInId::lessThanEqual_Int4_Int4,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9624,7 +8896,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_10E10E(
+constexpr const TFunction lessThanEqual_10E10E(
     BuiltInId::lessThanEqual_UInt2_UInt2,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9633,7 +8905,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_20E20E(
+constexpr const TFunction lessThanEqual_20E20E(
     BuiltInId::lessThanEqual_UInt3_UInt3,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9642,7 +8914,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_lessThanEqual_30E30E(
+constexpr const TFunction lessThanEqual_30E30E(
     BuiltInId::lessThanEqual_UInt4_UInt4,
     BuiltInName::lessThanEqual,
     TExtension::UNDEFINED,
@@ -9651,7 +8923,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpLessThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThan_10B10B(
+constexpr const TFunction greaterThan_10B10B(
     BuiltInId::greaterThan_Float2_Float2,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9660,7 +8932,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_20B20B(
+constexpr const TFunction greaterThan_20B20B(
     BuiltInId::greaterThan_Float3_Float3,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9669,7 +8941,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_30B30B(
+constexpr const TFunction greaterThan_30B30B(
     BuiltInId::greaterThan_Float4_Float4,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9678,7 +8950,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_10D10D(
+constexpr const TFunction greaterThan_10D10D(
     BuiltInId::greaterThan_Int2_Int2,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9687,7 +8959,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_20D20D(
+constexpr const TFunction greaterThan_20D20D(
     BuiltInId::greaterThan_Int3_Int3,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9696,7 +8968,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_30D30D(
+constexpr const TFunction greaterThan_30D30D(
     BuiltInId::greaterThan_Int4_Int4,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9705,7 +8977,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_10E10E(
+constexpr const TFunction greaterThan_10E10E(
     BuiltInId::greaterThan_UInt2_UInt2,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9714,7 +8986,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_20E20E(
+constexpr const TFunction greaterThan_20E20E(
     BuiltInId::greaterThan_UInt3_UInt3,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9723,7 +8995,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThan_30E30E(
+constexpr const TFunction greaterThan_30E30E(
     BuiltInId::greaterThan_UInt4_UInt4,
     BuiltInName::greaterThan,
     TExtension::UNDEFINED,
@@ -9732,7 +9004,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_10B10B(
+constexpr const TFunction greaterThanEqual_10B10B(
     BuiltInId::greaterThanEqual_Float2_Float2,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9741,7 +9013,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_20B20B(
+constexpr const TFunction greaterThanEqual_20B20B(
     BuiltInId::greaterThanEqual_Float3_Float3,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9750,7 +9022,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_30B30B(
+constexpr const TFunction greaterThanEqual_30B30B(
     BuiltInId::greaterThanEqual_Float4_Float4,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9759,7 +9031,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_10D10D(
+constexpr const TFunction greaterThanEqual_10D10D(
     BuiltInId::greaterThanEqual_Int2_Int2,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9768,7 +9040,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_20D20D(
+constexpr const TFunction greaterThanEqual_20D20D(
     BuiltInId::greaterThanEqual_Int3_Int3,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9777,7 +9049,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_30D30D(
+constexpr const TFunction greaterThanEqual_30D30D(
     BuiltInId::greaterThanEqual_Int4_Int4,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9786,7 +9058,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_10E10E(
+constexpr const TFunction greaterThanEqual_10E10E(
     BuiltInId::greaterThanEqual_UInt2_UInt2,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9795,7 +9067,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_20E20E(
+constexpr const TFunction greaterThanEqual_20E20E(
     BuiltInId::greaterThanEqual_UInt3_UInt3,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9804,7 +9076,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_greaterThanEqual_30E30E(
+constexpr const TFunction greaterThanEqual_30E30E(
     BuiltInId::greaterThanEqual_UInt4_UInt4,
     BuiltInName::greaterThanEqual,
     TExtension::UNDEFINED,
@@ -9813,304 +9085,271 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpGreaterThanEqualComponentWise,
     true);
-constexpr const TFunction function_equal_10B10B(
-    BuiltInId::equal_Float2_Float2,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_20B20B(
-    BuiltInId::equal_Float3_Float3,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_30B30B(
-    BuiltInId::equal_Float4_Float4,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_10D10D(
-    BuiltInId::equal_Int2_Int2,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_20D20D(
-    BuiltInId::equal_Int3_Int3,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_30D30D(
-    BuiltInId::equal_Int4_Int4,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_10E10E(
-    BuiltInId::equal_UInt2_UInt2,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_20E20E(
-    BuiltInId::equal_UInt3_UInt3,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_30E30E(
-    BuiltInId::equal_UInt4_UInt4,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_10F10F(
-    BuiltInId::equal_Bool2_Bool2,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F10F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_20F20F(
-    BuiltInId::equal_Bool3_Bool3,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F20F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_equal_30F30F(
-    BuiltInId::equal_Bool4_Bool4,
-    BuiltInName::equal,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_10B10B(
-    BuiltInId::notEqual_Float2_Float2,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B10B00B,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_20B20B(
-    BuiltInId::notEqual_Float3_Float3,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_30B30B(
-    BuiltInId::notEqual_Float4_Float4,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30B30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_10D10D(
-    BuiltInId::notEqual_Int2_Int2,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_20D20D(
-    BuiltInId::notEqual_Int3_Int3,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_30D30D(
-    BuiltInId::notEqual_Int4_Int4,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_10E10E(
-    BuiltInId::notEqual_UInt2_UInt2,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_20E20E(
-    BuiltInId::notEqual_UInt3_UInt3,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_30E30E(
-    BuiltInId::notEqual_UInt4_UInt4,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_10F10F(
-    BuiltInId::notEqual_Bool2_Bool2,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F10F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_20F20F(
-    BuiltInId::notEqual_Bool3_Bool3,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F20F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_notEqual_30F30F(
-    BuiltInId::notEqual_Bool4_Bool4,
-    BuiltInName::notEqual,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F30F,
-    2,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpNotEqualComponentWise,
-    true);
-constexpr const TFunction function_any_10F(
-    BuiltInId::any_Bool2,
-    BuiltInName::any,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F10F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAny,
-    true);
-constexpr const TFunction function_any_20F(
-    BuiltInId::any_Bool3,
-    BuiltInName::any,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F20F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAny,
-    true);
-constexpr const TFunction function_any_30F(
-    BuiltInId::any_Bool4,
-    BuiltInName::any,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F30F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAny,
-    true);
-constexpr const TFunction function_all_10F(
-    BuiltInId::all_Bool2,
-    BuiltInName::all,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F10F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAll,
-    true);
-constexpr const TFunction function_all_20F(
-    BuiltInId::all_Bool3,
-    BuiltInName::all,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F20F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAll,
-    true);
-constexpr const TFunction function_all_30F(
-    BuiltInId::all_Bool4,
-    BuiltInName::all,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F30F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAll,
-    true);
-constexpr const TFunction function_notFunc_10F(
-    BuiltInId::notFunc_Bool2,
-    BuiltInName::notFunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10F10F10F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpLogicalNotComponentWise,
-    true);
-constexpr const TFunction function_notFunc_20F(
-    BuiltInId::notFunc_Bool3,
-    BuiltInName::notFunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20F20F20F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpLogicalNotComponentWise,
-    true);
-constexpr const TFunction function_notFunc_30F(
-    BuiltInId::notFunc_Bool4,
-    BuiltInName::notFunc,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30F30F30F,
-    1,
-    StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpLogicalNotComponentWise,
-    true);
-constexpr const TFunction function_bitfieldExtract_00D00D00D(
+constexpr const TFunction equal_10B10B(BuiltInId::equal_Float2_Float2,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10B10B00B,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_20B20B(BuiltInId::equal_Float3_Float3,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B20B00B,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_30B30B(BuiltInId::equal_Float4_Float4,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30B30B30F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_10D10D(BuiltInId::equal_Int2_Int2,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10D10D_o_10D_o_10D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_20D20D(BuiltInId::equal_Int3_Int3,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20D20D00D00D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_30D30D(BuiltInId::equal_Int4_Int4,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30D30D30F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_10E10E(BuiltInId::equal_UInt2_UInt2,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10E10E00D00D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_20E20E(BuiltInId::equal_UInt3_UInt3,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20E20E00D00D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_30E30E(BuiltInId::equal_UInt4_UInt4,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30E30E00D00D,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_10F10F(BuiltInId::equal_Bool2_Bool2,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10F10F10F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_20F20F(BuiltInId::equal_Bool3_Bool3,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20F20F20F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction equal_30F30F(BuiltInId::equal_Bool4_Bool4,
+                                       BuiltInName::equal,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30F30F30F,
+                                       2,
+                                       StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpEqualComponentWise,
+                                       true);
+constexpr const TFunction notEqual_10B10B(BuiltInId::notEqual_Float2_Float2,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10B10B00B,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_20B20B(BuiltInId::notEqual_Float3_Float3,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20B20B00B,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_30B30B(BuiltInId::notEqual_Float4_Float4,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30B30B30F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_10D10D(BuiltInId::notEqual_Int2_Int2,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10D10D_o_10D_o_10D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_20D20D(BuiltInId::notEqual_Int3_Int3,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20D20D00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_30D30D(BuiltInId::notEqual_Int4_Int4,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30D30D30F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_10E10E(BuiltInId::notEqual_UInt2_UInt2,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10E10E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_20E20E(BuiltInId::notEqual_UInt3_UInt3,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20E20E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_30E30E(BuiltInId::notEqual_UInt4_UInt4,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30E30E00D00D,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_10F10F(BuiltInId::notEqual_Bool2_Bool2,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p10F10F10F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_20F20F(BuiltInId::notEqual_Bool3_Bool3,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p20F20F20F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction notEqual_30F30F(BuiltInId::notEqual_Bool4_Bool4,
+                                          BuiltInName::notEqual,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p30F30F30F,
+                                          2,
+                                          StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpNotEqualComponentWise,
+                                          true);
+constexpr const TFunction any_10F(BuiltInId::any_Bool2,
+                                  BuiltInName::any,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10F10F10F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAny,
+                                  true);
+constexpr const TFunction any_20F(BuiltInId::any_Bool3,
+                                  BuiltInName::any,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20F20F20F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAny,
+                                  true);
+constexpr const TFunction any_30F(BuiltInId::any_Bool4,
+                                  BuiltInName::any,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30F30F30F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAny,
+                                  true);
+constexpr const TFunction all_10F(BuiltInId::all_Bool2,
+                                  BuiltInName::all,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p10F10F10F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAll,
+                                  true);
+constexpr const TFunction all_20F(BuiltInId::all_Bool3,
+                                  BuiltInName::all,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p20F20F20F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAll,
+                                  true);
+constexpr const TFunction all_30F(BuiltInId::all_Bool4,
+                                  BuiltInName::all,
+                                  TExtension::UNDEFINED,
+                                  BuiltInParameters::p30F30F30F,
+                                  1,
+                                  StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
+                                  EOpAll,
+                                  true);
+constexpr const TFunction notFunc_10F(BuiltInId::notFunc_Bool2,
+                                      BuiltInName::notFunc,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10F10F10F,
+                                      1,
+                                      StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpLogicalNotComponentWise,
+                                      true);
+constexpr const TFunction notFunc_20F(BuiltInId::notFunc_Bool3,
+                                      BuiltInName::notFunc,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20F20F20F,
+                                      1,
+                                      StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpLogicalNotComponentWise,
+                                      true);
+constexpr const TFunction notFunc_30F(BuiltInId::notFunc_Bool4,
+                                      BuiltInName::notFunc,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30F30F30F,
+                                      1,
+                                      StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpLogicalNotComponentWise,
+                                      true);
+constexpr const TFunction bitfieldExtract_00D00D00D(
     BuiltInId::bitfieldExtract_Int1_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -10119,7 +9358,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_10D00D00D(
+constexpr const TFunction bitfieldExtract_10D00D00D(
     BuiltInId::bitfieldExtract_Int2_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -10128,7 +9367,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_20D00D00D(
+constexpr const TFunction bitfieldExtract_20D00D00D(
     BuiltInId::bitfieldExtract_Int3_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -10137,7 +9376,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_30D00D00D(
+constexpr const TFunction bitfieldExtract_30D00D00D(
     BuiltInId::bitfieldExtract_Int4_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -10146,7 +9385,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_00E00D00D(
+constexpr const TFunction bitfieldExtract_00E00D00D(
     BuiltInId::bitfieldExtract_UInt1_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -10155,7 +9394,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_10E00D00D(
+constexpr const TFunction bitfieldExtract_10E00D00D(
     BuiltInId::bitfieldExtract_UInt2_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -10164,7 +9403,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_20E00D00D(
+constexpr const TFunction bitfieldExtract_20E00D00D(
     BuiltInId::bitfieldExtract_UInt3_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -10173,7 +9412,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldExtract_30E00D00D(
+constexpr const TFunction bitfieldExtract_30E00D00D(
     BuiltInId::bitfieldExtract_UInt4_Int1_Int1,
     BuiltInName::bitfieldExtract,
     TExtension::UNDEFINED,
@@ -10182,7 +9421,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldExtract,
     true);
-constexpr const TFunction function_bitfieldInsert_00D00D00D00D(
+constexpr const TFunction bitfieldInsert_00D00D00D00D(
     BuiltInId::bitfieldInsert_Int1_Int1_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -10191,7 +9430,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_10D10D00D00D(
+constexpr const TFunction bitfieldInsert_10D10D00D00D(
     BuiltInId::bitfieldInsert_Int2_Int2_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -10200,7 +9439,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_20D20D00D00D(
+constexpr const TFunction bitfieldInsert_20D20D00D00D(
     BuiltInId::bitfieldInsert_Int3_Int3_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -10209,7 +9448,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_30D30D00D00D(
+constexpr const TFunction bitfieldInsert_30D30D00D00D(
     BuiltInId::bitfieldInsert_Int4_Int4_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -10218,7 +9457,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_00E00E00D00D(
+constexpr const TFunction bitfieldInsert_00E00E00D00D(
     BuiltInId::bitfieldInsert_UInt1_UInt1_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -10227,7 +9466,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_10E10E00D00D(
+constexpr const TFunction bitfieldInsert_10E10E00D00D(
     BuiltInId::bitfieldInsert_UInt2_UInt2_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -10236,7 +9475,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_20E20E00D00D(
+constexpr const TFunction bitfieldInsert_20E20E00D00D(
     BuiltInId::bitfieldInsert_UInt3_UInt3_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -10245,7 +9484,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldInsert_30E30E00D00D(
+constexpr const TFunction bitfieldInsert_30E30E00D00D(
     BuiltInId::bitfieldInsert_UInt4_UInt4_Int1_Int1,
     BuiltInName::bitfieldInsert,
     TExtension::UNDEFINED,
@@ -10254,7 +9493,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldInsert,
     true);
-constexpr const TFunction function_bitfieldReverse_00D(
+constexpr const TFunction bitfieldReverse_00D(
     BuiltInId::bitfieldReverse_Int1,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -10263,7 +9502,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_10D(
+constexpr const TFunction bitfieldReverse_10D(
     BuiltInId::bitfieldReverse_Int2,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -10272,7 +9511,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_20D(
+constexpr const TFunction bitfieldReverse_20D(
     BuiltInId::bitfieldReverse_Int3,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -10281,7 +9520,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_30D(
+constexpr const TFunction bitfieldReverse_30D(
     BuiltInId::bitfieldReverse_Int4,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -10290,7 +9529,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_00E(
+constexpr const TFunction bitfieldReverse_00E(
     BuiltInId::bitfieldReverse_UInt1,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -10299,7 +9538,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_10E(
+constexpr const TFunction bitfieldReverse_10E(
     BuiltInId::bitfieldReverse_UInt2,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -10308,7 +9547,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_20E(
+constexpr const TFunction bitfieldReverse_20E(
     BuiltInId::bitfieldReverse_UInt3,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -10317,7 +9556,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitfieldReverse_30E(
+constexpr const TFunction bitfieldReverse_30E(
     BuiltInId::bitfieldReverse_UInt4,
     BuiltInName::bitfieldReverse,
     TExtension::UNDEFINED,
@@ -10326,223 +9565,199 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpBitfieldReverse,
     true);
-constexpr const TFunction function_bitCount_00D(
-    BuiltInId::bitCount_Int1,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D_o_00D_o_00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_10D(
-    BuiltInId::bitCount_Int2,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_20D(
-    BuiltInId::bitCount_Int3,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_30D(
-    BuiltInId::bitCount_Int4,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_00E(
-    BuiltInId::bitCount_UInt1,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_10E(
-    BuiltInId::bitCount_UInt2,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_20E(
-    BuiltInId::bitCount_UInt3,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_bitCount_30E(
-    BuiltInId::bitCount_UInt4,
-    BuiltInName::bitCount,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpBitCount,
-    true);
-constexpr const TFunction function_findLSB_00D(
-    BuiltInId::findLSB_Int1,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D_o_00D_o_00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_10D(
-    BuiltInId::findLSB_Int2,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_20D(
-    BuiltInId::findLSB_Int3,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_30D(
-    BuiltInId::findLSB_Int4,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_00E(
-    BuiltInId::findLSB_UInt1,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_10E(
-    BuiltInId::findLSB_UInt2,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_20E(
-    BuiltInId::findLSB_UInt3,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findLSB_30E(
-    BuiltInId::findLSB_UInt4,
-    BuiltInName::findLSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFindLSB,
-    true);
-constexpr const TFunction function_findMSB_00D(
-    BuiltInId::findMSB_Int1,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00D00D_o_00D_o_00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_10D(
-    BuiltInId::findMSB_Int2,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10D10D_o_10D_o_10D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_20D(
-    BuiltInId::findMSB_Int3,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20D20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_30D(
-    BuiltInId::findMSB_Int4,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30D30D30F,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_00E(
-    BuiltInId::findMSB_UInt1,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00E00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_10E(
-    BuiltInId::findMSB_UInt2,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10E10E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_20E(
-    BuiltInId::findMSB_UInt3,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20E20E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_findMSB_30E(
-    BuiltInId::findMSB_UInt4,
-    BuiltInName::findMSB,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30E30E00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFindMSB,
-    true);
-constexpr const TFunction function_uaddCarry_00E00E00E(
+constexpr const TFunction bitCount_00D(BuiltInId::bitCount_Int1,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00D00D_o_00D_o_00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_10D(BuiltInId::bitCount_Int2,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10D10D_o_10D_o_10D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_20D(BuiltInId::bitCount_Int3,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20D20D00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_30D(BuiltInId::bitCount_Int4,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30D30D30F,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_00E(BuiltInId::bitCount_UInt1,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00E00E00E,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_10E(BuiltInId::bitCount_UInt2,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10E10E00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_20E(BuiltInId::bitCount_UInt3,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20E20E00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction bitCount_30E(BuiltInId::bitCount_UInt4,
+                                       BuiltInName::bitCount,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30E30E00D00D,
+                                       1,
+                                       StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpBitCount,
+                                       true);
+constexpr const TFunction findLSB_00D(BuiltInId::findLSB_Int1,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00D00D_o_00D_o_00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_10D(BuiltInId::findLSB_Int2,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10D10D_o_10D_o_10D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_20D(BuiltInId::findLSB_Int3,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20D20D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_30D(BuiltInId::findLSB_Int4,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30D30D30F,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_00E(BuiltInId::findLSB_UInt1,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00E00E00E,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_10E(BuiltInId::findLSB_UInt2,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10E10E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_20E(BuiltInId::findLSB_UInt3,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20E20E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findLSB_30E(BuiltInId::findLSB_UInt4,
+                                      BuiltInName::findLSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30E30E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpFindLSB,
+                                      true);
+constexpr const TFunction findMSB_00D(BuiltInId::findMSB_Int1,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00D00D_o_00D_o_00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_10D(BuiltInId::findMSB_Int2,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10D10D_o_10D_o_10D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_20D(BuiltInId::findMSB_Int3,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20D20D00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_30D(BuiltInId::findMSB_Int4,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30D30D30F,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_00E(BuiltInId::findMSB_UInt1,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p00E00E00E,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_10E(BuiltInId::findMSB_UInt2,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p10E10E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_20E(BuiltInId::findMSB_UInt3,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p20E20E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction findMSB_30E(BuiltInId::findMSB_UInt4,
+                                      BuiltInName::findMSB,
+                                      TExtension::UNDEFINED,
+                                      BuiltInParameters::p30E30E00D00D,
+                                      1,
+                                      StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpFindMSB,
+                                      true);
+constexpr const TFunction uaddCarry_00E00E00E(
     BuiltInId::uaddCarry_UInt1_UInt1_UInt1,
     BuiltInName::uaddCarry,
     TExtension::UNDEFINED,
@@ -10551,7 +9766,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUaddCarry,
     false);
-constexpr const TFunction function_uaddCarry_10E10E10E(
+constexpr const TFunction uaddCarry_10E10E10E(
     BuiltInId::uaddCarry_UInt2_UInt2_UInt2,
     BuiltInName::uaddCarry,
     TExtension::UNDEFINED,
@@ -10560,7 +9775,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUaddCarry,
     false);
-constexpr const TFunction function_uaddCarry_20E20E20E(
+constexpr const TFunction uaddCarry_20E20E20E(
     BuiltInId::uaddCarry_UInt3_UInt3_UInt3,
     BuiltInName::uaddCarry,
     TExtension::UNDEFINED,
@@ -10569,7 +9784,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpUaddCarry,
     false);
-constexpr const TFunction function_uaddCarry_30E30E30E(
+constexpr const TFunction uaddCarry_30E30E30E(
     BuiltInId::uaddCarry_UInt4_UInt4_UInt4,
     BuiltInName::uaddCarry,
     TExtension::UNDEFINED,
@@ -10578,7 +9793,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUaddCarry,
     false);
-constexpr const TFunction function_usubBorrow_00E00E00E(
+constexpr const TFunction usubBorrow_00E00E00E(
     BuiltInId::usubBorrow_UInt1_UInt1_UInt1,
     BuiltInName::usubBorrow,
     TExtension::UNDEFINED,
@@ -10587,7 +9802,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUsubBorrow,
     false);
-constexpr const TFunction function_usubBorrow_10E10E10E(
+constexpr const TFunction usubBorrow_10E10E10E(
     BuiltInId::usubBorrow_UInt2_UInt2_UInt2,
     BuiltInName::usubBorrow,
     TExtension::UNDEFINED,
@@ -10596,7 +9811,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpUsubBorrow,
     false);
-constexpr const TFunction function_usubBorrow_20E20E20E(
+constexpr const TFunction usubBorrow_20E20E20E(
     BuiltInId::usubBorrow_UInt3_UInt3_UInt3,
     BuiltInName::usubBorrow,
     TExtension::UNDEFINED,
@@ -10605,7 +9820,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpUsubBorrow,
     false);
-constexpr const TFunction function_usubBorrow_30E30E30E(
+constexpr const TFunction usubBorrow_30E30E30E(
     BuiltInId::usubBorrow_UInt4_UInt4_UInt4,
     BuiltInName::usubBorrow,
     TExtension::UNDEFINED,
@@ -10614,7 +9829,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpUsubBorrow,
     false);
-constexpr const TFunction function_umulExtended_00E00E00E00E(
+constexpr const TFunction umulExtended_00E00E00E00E(
     BuiltInId::umulExtended_UInt1_UInt1_UInt1_UInt1,
     BuiltInName::umulExtended,
     TExtension::UNDEFINED,
@@ -10623,7 +9838,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUmulExtended,
     false);
-constexpr const TFunction function_umulExtended_10E10E10E10E(
+constexpr const TFunction umulExtended_10E10E10E10E(
     BuiltInId::umulExtended_UInt2_UInt2_UInt2_UInt2,
     BuiltInName::umulExtended,
     TExtension::UNDEFINED,
@@ -10632,7 +9847,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUmulExtended,
     false);
-constexpr const TFunction function_umulExtended_20E20E20E20E(
+constexpr const TFunction umulExtended_20E20E20E20E(
     BuiltInId::umulExtended_UInt3_UInt3_UInt3_UInt3,
     BuiltInName::umulExtended,
     TExtension::UNDEFINED,
@@ -10641,7 +9856,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUmulExtended,
     false);
-constexpr const TFunction function_umulExtended_30E30E30E30E(
+constexpr const TFunction umulExtended_30E30E30E30E(
     BuiltInId::umulExtended_UInt4_UInt4_UInt4_UInt4,
     BuiltInName::umulExtended,
     TExtension::UNDEFINED,
@@ -10650,7 +9865,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpUmulExtended,
     false);
-constexpr const TFunction function_imulExtended_00D00D00D00D(
+constexpr const TFunction imulExtended_00D00D00D00D(
     BuiltInId::imulExtended_Int1_Int1_Int1_Int1,
     BuiltInName::imulExtended,
     TExtension::UNDEFINED,
@@ -10659,7 +9874,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpImulExtended,
     false);
-constexpr const TFunction function_imulExtended_10D10D10D10D(
+constexpr const TFunction imulExtended_10D10D10D10D(
     BuiltInId::imulExtended_Int2_Int2_Int2_Int2,
     BuiltInName::imulExtended,
     TExtension::UNDEFINED,
@@ -10668,7 +9883,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpImulExtended,
     false);
-constexpr const TFunction function_imulExtended_20D20D20D20D(
+constexpr const TFunction imulExtended_20D20D20D20D(
     BuiltInId::imulExtended_Int3_Int3_Int3_Int3,
     BuiltInName::imulExtended,
     TExtension::UNDEFINED,
@@ -10677,7 +9892,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpImulExtended,
     false);
-constexpr const TFunction function_imulExtended_30D30D30D30D(
+constexpr const TFunction imulExtended_30D30D30D30D(
     BuiltInId::imulExtended_Int4_Int4_Int4_Int4,
     BuiltInName::imulExtended,
     TExtension::UNDEFINED,
@@ -10686,7 +9901,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpImulExtended,
     false);
-constexpr const TFunction function_texture2D_00I10B(
+constexpr const TFunction texture2D_00I10B(
     BuiltInId::texture2D_Sampler2D1_Float2,
     BuiltInName::texture2D,
     TExtension::UNDEFINED,
@@ -10695,7 +9910,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00I20B(
+constexpr const TFunction texture2DProj_00I20B(
     BuiltInId::texture2DProj_Sampler2D1_Float3,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -10704,7 +9919,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00I30B(
+constexpr const TFunction texture2DProj_00I30B(
     BuiltInId::texture2DProj_Sampler2D1_Float4,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -10713,7 +9928,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCube_00K20B(
+constexpr const TFunction textureCube_00K20B(
     BuiltInId::textureCube_SamplerCube1_Float3,
     BuiltInName::textureCube,
     TExtension::UNDEFINED,
@@ -10722,7 +9937,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1D_00g00B(
+constexpr const TFunction texture1D_00g00B(
     BuiltInId::texture1D_Sampler1D1_Float1,
     BuiltInName::texture1D,
     TExtension::UNDEFINED,
@@ -10731,7 +9946,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1DProj_00g10B(
+constexpr const TFunction texture1DProj_00g10B(
     BuiltInId::texture1DProj_Sampler1D1_Float2,
     BuiltInName::texture1DProj,
     TExtension::UNDEFINED,
@@ -10740,7 +9955,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1DProj_00g30B(
+constexpr const TFunction texture1DProj_00g30B(
     BuiltInId::texture1DProj_Sampler1D1_Float4,
     BuiltInName::texture1DProj,
     TExtension::UNDEFINED,
@@ -10749,7 +9964,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3D_00J20B(
+constexpr const TFunction texture3D_00J20B(
     BuiltInId::texture3D_Sampler3D1_Float3,
     BuiltInName::texture3D,
     TExtension::UNDEFINED,
@@ -10758,7 +9973,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3DProj_00J30B(
+constexpr const TFunction texture3DProj_00J30B(
     BuiltInId::texture3DProj_Sampler3D1_Float4,
     BuiltInName::texture3DProj,
     TExtension::UNDEFINED,
@@ -10767,7 +9982,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow1D_00m20B(
+constexpr const TFunction shadow1D_00m20B(
     BuiltInId::shadow1D_Sampler1DShadow1_Float3,
     BuiltInName::shadow1D,
     TExtension::UNDEFINED,
@@ -10776,7 +9991,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow1DProj_00m30B(
+constexpr const TFunction shadow1DProj_00m30B(
     BuiltInId::shadow1DProj_Sampler1DShadow1_Float4,
     BuiltInName::shadow1DProj,
     TExtension::UNDEFINED,
@@ -10785,7 +10000,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow2D_00d20B(
+constexpr const TFunction shadow2D_00d20B(
     BuiltInId::shadow2D_Sampler2DShadow1_Float3,
     BuiltInName::shadow2D,
     TExtension::UNDEFINED,
@@ -10794,7 +10009,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow2DProj_00d30B(
+constexpr const TFunction shadow2DProj_00d30B(
     BuiltInId::shadow2DProj_Sampler2DShadow1_Float4,
     BuiltInName::shadow2DProj,
     TExtension::UNDEFINED,
@@ -10803,7 +10018,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2D_00M10B(
+constexpr const TFunction texture2D_00M10B(
     BuiltInId::texture2D_SamplerExternalOES1_Float2,
     BuiltInName::texture2D,
     TExtension::UNDEFINED,
@@ -10812,7 +10027,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00M20B(
+constexpr const TFunction texture2DProj_00M20B(
     BuiltInId::texture2DProj_SamplerExternalOES1_Float3,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -10821,7 +10036,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00M30B(
+constexpr const TFunction texture2DProj_00M30B(
     BuiltInId::texture2DProj_SamplerExternalOES1_Float4,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -10830,7 +10045,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DRect_00O10B(
+constexpr const TFunction texture2DRect_00O10B(
     BuiltInId::texture2DRect_Sampler2DRect1_Float2,
     BuiltInName::texture2DRect,
     TExtension::ARB_texture_rectangle,
@@ -10839,7 +10054,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DRectProj_00O20B(
+constexpr const TFunction texture2DRectProj_00O20B(
     BuiltInId::texture2DRectProj_Sampler2DRect1_Float3,
     BuiltInName::texture2DRectProj,
     TExtension::ARB_texture_rectangle,
@@ -10848,7 +10063,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DRectProj_00O30B(
+constexpr const TFunction texture2DRectProj_00O30B(
     BuiltInId::texture2DRectProj_Sampler2DRect1_Float4,
     BuiltInName::texture2DRectProj,
     TExtension::ARB_texture_rectangle,
@@ -10857,16 +10072,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00O10B(
-    BuiltInId::texture_Sampler2DRect1_Float2,
-    BuiltInName::texture,
-    TExtension::ARB_texture_rectangle,
-    BuiltInParameters::p00O10B70D00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureProj_00O20B(
+constexpr const TFunction texture_00O10B(BuiltInId::texture_Sampler2DRect1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::ARB_texture_rectangle,
+                                         BuiltInParameters::p00O10B70D00D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction textureProj_00O20B(
     BuiltInId::textureProj_Sampler2DRect1_Float3,
     BuiltInName::textureProj,
     TExtension::ARB_texture_rectangle,
@@ -10875,7 +10089,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00O30B(
+constexpr const TFunction textureProj_00O30B(
     BuiltInId::textureProj_Sampler2DRect1_Float4,
     BuiltInName::textureProj,
     TExtension::ARB_texture_rectangle,
@@ -10884,7 +10098,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DGradEXT_00I10B10B10B(
+constexpr const TFunction texture2DGradEXT_00I10B10B10B(
     BuiltInId::texture2DGradEXT_Sampler2D1_Float2_Float2_Float2,
     BuiltInName::texture2DGradEXT,
     TExtension::EXT_shader_texture_lod,
@@ -10893,7 +10107,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjGradEXT_00I20B10B10B(
+constexpr const TFunction texture2DProjGradEXT_00I20B10B10B(
     BuiltInId::texture2DProjGradEXT_Sampler2D1_Float3_Float2_Float2,
     BuiltInName::texture2DProjGradEXT,
     TExtension::EXT_shader_texture_lod,
@@ -10902,7 +10116,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjGradEXT_00I30B10B10B(
+constexpr const TFunction texture2DProjGradEXT_00I30B10B10B(
     BuiltInId::texture2DProjGradEXT_Sampler2D1_Float4_Float2_Float2,
     BuiltInName::texture2DProjGradEXT,
     TExtension::EXT_shader_texture_lod,
@@ -10911,7 +10125,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCubeGradEXT_00K20B20B20B(
+constexpr const TFunction textureCubeGradEXT_00K20B20B20B(
     BuiltInId::textureCubeGradEXT_SamplerCube1_Float3_Float3_Float3,
     BuiltInName::textureCubeGradEXT,
     TExtension::EXT_shader_texture_lod,
@@ -10920,7 +10134,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2D_00I10B00B(
+constexpr const TFunction texture2D_00I10B00B(
     BuiltInId::texture2D_Sampler2D1_Float2_Float1,
     BuiltInName::texture2D,
     TExtension::UNDEFINED,
@@ -10929,7 +10143,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00I20B00B(
+constexpr const TFunction texture2DProj_00I20B00B(
     BuiltInId::texture2DProj_Sampler2D1_Float3_Float1,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -10938,7 +10152,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProj_00I30B00B(
+constexpr const TFunction texture2DProj_00I30B00B(
     BuiltInId::texture2DProj_Sampler2D1_Float4_Float1,
     BuiltInName::texture2DProj,
     TExtension::UNDEFINED,
@@ -10947,7 +10161,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCube_00K20B00B(
+constexpr const TFunction textureCube_00K20B00B(
     BuiltInId::textureCube_SamplerCube1_Float3_Float1,
     BuiltInName::textureCube,
     TExtension::UNDEFINED,
@@ -10956,7 +10170,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3D_00J20B00B(
+constexpr const TFunction texture3D_00J20B00B(
     BuiltInId::texture3D_Sampler3D1_Float3_Float1,
     BuiltInName::texture3D,
     TExtension::UNDEFINED,
@@ -10965,7 +10179,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3DProj_00J30B00B(
+constexpr const TFunction texture3DProj_00J30B00B(
     BuiltInId::texture3DProj_Sampler3D1_Float4_Float1,
     BuiltInName::texture3DProj,
     TExtension::UNDEFINED,
@@ -10974,7 +10188,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3DLod_00J20B00B(
+constexpr const TFunction texture3DLod_00J20B00B(
     BuiltInId::texture3DLod_Sampler3D1_Float3_Float1,
     BuiltInName::texture3DLod,
     TExtension::UNDEFINED,
@@ -10983,7 +10197,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture3DProjLod_00J30B00B(
+constexpr const TFunction texture3DProjLod_00J30B00B(
     BuiltInId::texture3DProjLod_Sampler3D1_Float4_Float1,
     BuiltInName::texture3DProjLod,
     TExtension::UNDEFINED,
@@ -10992,7 +10206,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1D_00g00B00B(
+constexpr const TFunction texture1D_00g00B00B(
     BuiltInId::texture1D_Sampler1D1_Float1_Float1,
     BuiltInName::texture1D,
     TExtension::UNDEFINED,
@@ -11001,7 +10215,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1DProj_00g10B00B(
+constexpr const TFunction texture1DProj_00g10B00B(
     BuiltInId::texture1DProj_Sampler1D1_Float2_Float1,
     BuiltInName::texture1DProj,
     TExtension::UNDEFINED,
@@ -11010,7 +10224,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1DProj_00g30B00B(
+constexpr const TFunction texture1DProj_00g30B00B(
     BuiltInId::texture1DProj_Sampler1D1_Float4_Float1,
     BuiltInName::texture1DProj,
     TExtension::UNDEFINED,
@@ -11019,7 +10233,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow1D_00m20B00B(
+constexpr const TFunction shadow1D_00m20B00B(
     BuiltInId::shadow1D_Sampler1DShadow1_Float3_Float1,
     BuiltInName::shadow1D,
     TExtension::UNDEFINED,
@@ -11028,7 +10242,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow1DProj_00m30B00B(
+constexpr const TFunction shadow1DProj_00m30B00B(
     BuiltInId::shadow1DProj_Sampler1DShadow1_Float4_Float1,
     BuiltInName::shadow1DProj,
     TExtension::UNDEFINED,
@@ -11037,7 +10251,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow2D_00d20B00B(
+constexpr const TFunction shadow2D_00d20B00B(
     BuiltInId::shadow2D_Sampler2DShadow1_Float3_Float1,
     BuiltInName::shadow2D,
     TExtension::UNDEFINED,
@@ -11046,7 +10260,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow2DProj_00d30B00B(
+constexpr const TFunction shadow2DProj_00d30B00B(
     BuiltInId::shadow2DProj_Sampler2DShadow1_Float4_Float1,
     BuiltInName::shadow2DProj,
     TExtension::UNDEFINED,
@@ -11055,115 +10269,103 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_dFdxExt_00B(
-    BuiltInId::dFdxExt_Float1,
-    BuiltInName::dFdxExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdxExt_10B(
-    BuiltInId::dFdxExt_Float2,
-    BuiltInName::dFdxExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdxExt_20B(
-    BuiltInId::dFdxExt_Float3,
-    BuiltInName::dFdxExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdxExt_30B(
-    BuiltInId::dFdxExt_Float4,
-    BuiltInName::dFdxExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdyExt_00B(
-    BuiltInId::dFdyExt_Float1,
-    BuiltInName::dFdyExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdyExt_10B(
-    BuiltInId::dFdyExt_Float2,
-    BuiltInName::dFdyExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdyExt_20B(
-    BuiltInId::dFdyExt_Float3,
-    BuiltInName::dFdyExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdyExt_30B(
-    BuiltInId::dFdyExt_Float4,
-    BuiltInName::dFdyExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_fwidthExt_00B(
-    BuiltInId::fwidthExt_Float1,
-    BuiltInName::fwidthExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidthExt_10B(
-    BuiltInId::fwidthExt_Float2,
-    BuiltInName::fwidthExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidthExt_20B(
-    BuiltInId::fwidthExt_Float3,
-    BuiltInName::fwidthExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidthExt_30B(
-    BuiltInId::fwidthExt_Float4,
-    BuiltInName::fwidthExt,
-    TExtension::OES_standard_derivatives,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_texture2DLodEXT_00I10B00B(
+constexpr const TFunction dFdxExt_00B(BuiltInId::dFdxExt_Float1,
+                                      BuiltInName::dFdxExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p00B00B30B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpDFdx,
+                                      false);
+constexpr const TFunction dFdxExt_10B(BuiltInId::dFdxExt_Float2,
+                                      BuiltInName::dFdxExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p10B_o_10B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpDFdx,
+                                      false);
+constexpr const TFunction dFdxExt_20B(BuiltInId::dFdxExt_Float3,
+                                      BuiltInName::dFdxExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p20B20B00B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpDFdx,
+                                      false);
+constexpr const TFunction dFdxExt_30B(BuiltInId::dFdxExt_Float4,
+                                      BuiltInName::dFdxExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p30B30D,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpDFdx,
+                                      false);
+constexpr const TFunction dFdyExt_00B(BuiltInId::dFdyExt_Float1,
+                                      BuiltInName::dFdyExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p00B00B30B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpDFdy,
+                                      false);
+constexpr const TFunction dFdyExt_10B(BuiltInId::dFdyExt_Float2,
+                                      BuiltInName::dFdyExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p10B_o_10B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                      EOpDFdy,
+                                      false);
+constexpr const TFunction dFdyExt_20B(BuiltInId::dFdyExt_Float3,
+                                      BuiltInName::dFdyExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p20B20B00B,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                      EOpDFdy,
+                                      false);
+constexpr const TFunction dFdyExt_30B(BuiltInId::dFdyExt_Float4,
+                                      BuiltInName::dFdyExt,
+                                      TExtension::OES_standard_derivatives,
+                                      BuiltInParameters::p30B30D,
+                                      1,
+                                      StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                      EOpDFdy,
+                                      false);
+constexpr const TFunction fwidthExt_00B(BuiltInId::fwidthExt_Float1,
+                                        BuiltInName::fwidthExt,
+                                        TExtension::OES_standard_derivatives,
+                                        BuiltInParameters::p00B00B30B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpFwidth,
+                                        false);
+constexpr const TFunction fwidthExt_10B(BuiltInId::fwidthExt_Float2,
+                                        BuiltInName::fwidthExt,
+                                        TExtension::OES_standard_derivatives,
+                                        BuiltInParameters::p10B_o_10B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpFwidth,
+                                        false);
+constexpr const TFunction fwidthExt_20B(BuiltInId::fwidthExt_Float3,
+                                        BuiltInName::fwidthExt,
+                                        TExtension::OES_standard_derivatives,
+                                        BuiltInParameters::p20B20B00B,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpFwidth,
+                                        false);
+constexpr const TFunction fwidthExt_30B(BuiltInId::fwidthExt_Float4,
+                                        BuiltInName::fwidthExt,
+                                        TExtension::OES_standard_derivatives,
+                                        BuiltInParameters::p30B30D,
+                                        1,
+                                        StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                        EOpFwidth,
+                                        false);
+constexpr const TFunction texture2DLodEXT_00I10B00B(
     BuiltInId::texture2DLodEXT_Sampler2D1_Float2_Float1,
     BuiltInName::texture2DLodEXT,
     TExtension::EXT_shader_texture_lod,
@@ -11172,7 +10374,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjLodEXT_00I20B00B(
+constexpr const TFunction texture2DProjLodEXT_00I20B00B(
     BuiltInId::texture2DProjLodEXT_Sampler2D1_Float3_Float1,
     BuiltInName::texture2DProjLodEXT,
     TExtension::EXT_shader_texture_lod,
@@ -11181,7 +10383,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjLodEXT_00I30B00B(
+constexpr const TFunction texture2DProjLodEXT_00I30B00B(
     BuiltInId::texture2DProjLodEXT_Sampler2D1_Float4_Float1,
     BuiltInName::texture2DProjLodEXT,
     TExtension::EXT_shader_texture_lod,
@@ -11190,7 +10392,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCubeLodEXT_00K20B00B(
+constexpr const TFunction textureCubeLodEXT_00K20B00B(
     BuiltInId::textureCubeLodEXT_SamplerCube1_Float3_Float1,
     BuiltInName::textureCubeLodEXT,
     TExtension::EXT_shader_texture_lod,
@@ -11199,7 +10401,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DLod_00I10B00B(
+constexpr const TFunction texture2DLod_00I10B00B(
     BuiltInId::texture2DLod_Sampler2D1_Float2_Float1,
     BuiltInName::texture2DLod,
     TExtension::UNDEFINED,
@@ -11208,7 +10410,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjLod_00I20B00B(
+constexpr const TFunction texture2DProjLod_00I20B00B(
     BuiltInId::texture2DProjLod_Sampler2D1_Float3_Float1,
     BuiltInName::texture2DProjLod,
     TExtension::UNDEFINED,
@@ -11217,7 +10419,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture2DProjLod_00I30B00B(
+constexpr const TFunction texture2DProjLod_00I30B00B(
     BuiltInId::texture2DProjLod_Sampler2D1_Float4_Float1,
     BuiltInName::texture2DProjLod,
     TExtension::UNDEFINED,
@@ -11226,7 +10428,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureCubeLod_00K20B00B(
+constexpr const TFunction textureCubeLod_00K20B00B(
     BuiltInId::textureCubeLod_SamplerCube1_Float3_Float1,
     BuiltInName::textureCubeLod,
     TExtension::UNDEFINED,
@@ -11235,7 +10437,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1DLod_00g00B00B(
+constexpr const TFunction texture1DLod_00g00B00B(
     BuiltInId::texture1DLod_Sampler1D1_Float1_Float1,
     BuiltInName::texture1DLod,
     TExtension::UNDEFINED,
@@ -11244,7 +10446,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1DProjLod_00g10B00B(
+constexpr const TFunction texture1DProjLod_00g10B00B(
     BuiltInId::texture1DProjLod_Sampler1D1_Float2_Float1,
     BuiltInName::texture1DProjLod,
     TExtension::UNDEFINED,
@@ -11253,7 +10455,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture1DProjLod_00g30B00B(
+constexpr const TFunction texture1DProjLod_00g30B00B(
     BuiltInId::texture1DProjLod_Sampler1D1_Float4_Float1,
     BuiltInName::texture1DProjLod,
     TExtension::UNDEFINED,
@@ -11262,7 +10464,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow1DLod_00m20B00B(
+constexpr const TFunction shadow1DLod_00m20B00B(
     BuiltInId::shadow1DLod_Sampler1DShadow1_Float3_Float1,
     BuiltInName::shadow1DLod,
     TExtension::UNDEFINED,
@@ -11271,7 +10473,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow1DProjLod_00m30B00B(
+constexpr const TFunction shadow1DProjLod_00m30B00B(
     BuiltInId::shadow1DProjLod_Sampler1DShadow1_Float4_Float1,
     BuiltInName::shadow1DProjLod,
     TExtension::UNDEFINED,
@@ -11280,7 +10482,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow2DLod_00d20B00B(
+constexpr const TFunction shadow2DLod_00d20B00B(
     BuiltInId::shadow2DLod_Sampler2DShadow1_Float3_Float1,
     BuiltInName::shadow2DLod,
     TExtension::UNDEFINED,
@@ -11289,7 +10491,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_shadow2DProjLod_00d30B00B(
+constexpr const TFunction shadow2DProjLod_00d30B00B(
     BuiltInId::shadow2DProjLod_Sampler2DShadow1_Float4_Float1,
     BuiltInName::shadow2DProjLod,
     TExtension::UNDEFINED,
@@ -11298,241 +10500,215 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00I10B(
-    BuiltInId::texture_Sampler2D1_Float2,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00I10B00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00R10B(
-    BuiltInId::texture_ISampler2D1_Float2,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00R10B70D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00X10B(
-    BuiltInId::texture_USampler2D1_Float2,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00X10B70D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00J20B(
-    BuiltInId::texture_Sampler3D1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00J20B00B20D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00S20B(
-    BuiltInId::texture_ISampler3D1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00S20B20B20B20D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00Y20B(
-    BuiltInId::texture_USampler3D1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00Y20B20B20B20D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00K20B(
-    BuiltInId::texture_SamplerCube1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00K20B20B20B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00T20B(
-    BuiltInId::texture_ISamplerCube1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00T20B00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00Z20B(
-    BuiltInId::texture_USamplerCube1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00Z20B00B,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00L20B(
-    BuiltInId::texture_Sampler2DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00L20B10D00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00U20B(
-    BuiltInId::texture_ISampler2DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00U20B10D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00a20B(
-    BuiltInId::texture_USampler2DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00a20B10B10B10D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00d20B(
-    BuiltInId::texture_Sampler2DShadow1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00d20B00B10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00e30B(
-    BuiltInId::texture_SamplerCubeShadow1_Float4,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00e30B20B20B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00f30B(
-    BuiltInId::texture_Sampler2DArrayShadow1_Float4,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00f30B10B10B10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00g00B(
-    BuiltInId::texture_Sampler1D1_Float1,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00g00B00B00B00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00o00B(
-    BuiltInId::texture_ISampler1D1_Float1,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00o00B00B00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00t00B(
-    BuiltInId::texture_USampler1D1_Float1,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00t00B00B00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00m20B(
-    BuiltInId::texture_Sampler1DShadow1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00m20B00B00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00h20B(
-    BuiltInId::texture_Sampler1DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00h20B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00p20B(
-    BuiltInId::texture_ISampler1DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00p20B00B,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00u20B(
-    BuiltInId::texture_USampler1DArray1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00u20B00B,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00i20B(
-    BuiltInId::texture_Sampler1DArrayShadow1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00i20B00B00D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00q10B(
-    BuiltInId::texture_ISampler2DRect1_Float2,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00q10B10D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00v10B(
-    BuiltInId::texture_USampler2DRect1_Float2,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00v10B70D00D,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00n20B(
-    BuiltInId::texture_Sampler2DRectShadow1_Float3,
-    BuiltInName::texture,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00n20B10B10B10D,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_texture_00l30B00B(
+constexpr const TFunction texture_00I10B(BuiltInId::texture_Sampler2D1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00I10B00D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00R10B(BuiltInId::texture_ISampler2D1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00R10B70D00D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00X10B(BuiltInId::texture_USampler2D1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00X10B70D00D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00J20B(BuiltInId::texture_Sampler3D1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00J20B00B20D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00S20B(BuiltInId::texture_ISampler3D1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00S20B20B20B20D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00Y20B(BuiltInId::texture_USampler3D1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00Y20B20B20B20D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00K20B(BuiltInId::texture_SamplerCube1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00K20B20B20B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00T20B(BuiltInId::texture_ISamplerCube1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00T20B00D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00Z20B(BuiltInId::texture_USamplerCube1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00Z20B00B,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00L20B(BuiltInId::texture_Sampler2DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00L20B10D00D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00U20B(BuiltInId::texture_ISampler2DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00U20B10D00D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00a20B(BuiltInId::texture_USampler2DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00a20B10B10B10D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00d20B(BuiltInId::texture_Sampler2DShadow1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00d20B00B10D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00e30B(BuiltInId::texture_SamplerCubeShadow1_Float4,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00e30B20B20B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00f30B(BuiltInId::texture_Sampler2DArrayShadow1_Float4,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00f30B10B10B10D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00g00B(BuiltInId::texture_Sampler1D1_Float1,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00g00B00B00B00D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00o00B(BuiltInId::texture_ISampler1D1_Float1,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00o00B00B00D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00t00B(BuiltInId::texture_USampler1D1_Float1,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00t00B00B00D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00m20B(BuiltInId::texture_Sampler1DShadow1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00m20B00B00D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00h20B(BuiltInId::texture_Sampler1DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00h20B00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00p20B(BuiltInId::texture_ISampler1DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00p20B00B,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00u20B(BuiltInId::texture_USampler1DArray1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00u20B00B,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00i20B(BuiltInId::texture_Sampler1DArrayShadow1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00i20B00B00D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00q10B(BuiltInId::texture_ISampler2DRect1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00q10B10D00D,
+                                         2,
+                                         StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00v10B(BuiltInId::texture_USampler2DRect1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00v10B70D00D,
+                                         2,
+                                         StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00n20B(BuiltInId::texture_Sampler2DRectShadow1_Float3,
+                                         BuiltInName::texture,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00n20B10B10B10D,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction texture_00l30B00B(
     BuiltInId::texture_SamplerCubeArrayShadow1_Float4_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -11541,7 +10717,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00I20B(
+constexpr const TFunction textureProj_00I20B(
     BuiltInId::textureProj_Sampler2D1_Float3,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11550,7 +10726,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00R20B(
+constexpr const TFunction textureProj_00R20B(
     BuiltInId::textureProj_ISampler2D1_Float3,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11559,7 +10735,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00X20B(
+constexpr const TFunction textureProj_00X20B(
     BuiltInId::textureProj_USampler2D1_Float3,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11568,7 +10744,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00I30B(
+constexpr const TFunction textureProj_00I30B(
     BuiltInId::textureProj_Sampler2D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11577,7 +10753,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00R30B(
+constexpr const TFunction textureProj_00R30B(
     BuiltInId::textureProj_ISampler2D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11586,7 +10762,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00X30B(
+constexpr const TFunction textureProj_00X30B(
     BuiltInId::textureProj_USampler2D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11595,7 +10771,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00J30B(
+constexpr const TFunction textureProj_00J30B(
     BuiltInId::textureProj_Sampler3D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11604,7 +10780,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00S30B(
+constexpr const TFunction textureProj_00S30B(
     BuiltInId::textureProj_ISampler3D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11613,7 +10789,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00Y30B(
+constexpr const TFunction textureProj_00Y30B(
     BuiltInId::textureProj_USampler3D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11622,7 +10798,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00d30B(
+constexpr const TFunction textureProj_00d30B(
     BuiltInId::textureProj_Sampler2DShadow1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11631,7 +10807,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00g10B(
+constexpr const TFunction textureProj_00g10B(
     BuiltInId::textureProj_Sampler1D1_Float2,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11640,7 +10816,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00o10B(
+constexpr const TFunction textureProj_00o10B(
     BuiltInId::textureProj_ISampler1D1_Float2,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11649,7 +10825,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00t10B(
+constexpr const TFunction textureProj_00t10B(
     BuiltInId::textureProj_USampler1D1_Float2,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11658,7 +10834,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00g30B(
+constexpr const TFunction textureProj_00g30B(
     BuiltInId::textureProj_Sampler1D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11667,7 +10843,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00o30B(
+constexpr const TFunction textureProj_00o30B(
     BuiltInId::textureProj_ISampler1D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11676,7 +10852,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00t30B(
+constexpr const TFunction textureProj_00t30B(
     BuiltInId::textureProj_USampler1D1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11685,7 +10861,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00m30B(
+constexpr const TFunction textureProj_00m30B(
     BuiltInId::textureProj_Sampler1DShadow1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11694,7 +10870,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00q20B(
+constexpr const TFunction textureProj_00q20B(
     BuiltInId::textureProj_ISampler2DRect1_Float3,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11703,7 +10879,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00v20B(
+constexpr const TFunction textureProj_00v20B(
     BuiltInId::textureProj_USampler2DRect1_Float3,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11712,7 +10888,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00q30B(
+constexpr const TFunction textureProj_00q30B(
     BuiltInId::textureProj_ISampler2DRect1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11721,7 +10897,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00v30B(
+constexpr const TFunction textureProj_00v30B(
     BuiltInId::textureProj_USampler2DRect1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11730,7 +10906,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00n30B(
+constexpr const TFunction textureProj_00n30B(
     BuiltInId::textureProj_Sampler2DRectShadow1_Float4,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -11739,7 +10915,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00I10B00B(
+constexpr const TFunction textureLod_00I10B00B(
     BuiltInId::textureLod_Sampler2D1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11748,7 +10924,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00R10B00B(
+constexpr const TFunction textureLod_00R10B00B(
     BuiltInId::textureLod_ISampler2D1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11757,7 +10933,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00X10B00B(
+constexpr const TFunction textureLod_00X10B00B(
     BuiltInId::textureLod_USampler2D1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11766,7 +10942,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00J20B00B(
+constexpr const TFunction textureLod_00J20B00B(
     BuiltInId::textureLod_Sampler3D1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11775,7 +10951,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00S20B00B(
+constexpr const TFunction textureLod_00S20B00B(
     BuiltInId::textureLod_ISampler3D1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11784,7 +10960,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00Y20B00B(
+constexpr const TFunction textureLod_00Y20B00B(
     BuiltInId::textureLod_USampler3D1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11793,7 +10969,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00K20B00B(
+constexpr const TFunction textureLod_00K20B00B(
     BuiltInId::textureLod_SamplerCube1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11802,7 +10978,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00T20B00B(
+constexpr const TFunction textureLod_00T20B00B(
     BuiltInId::textureLod_ISamplerCube1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11811,7 +10987,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00Z20B00B(
+constexpr const TFunction textureLod_00Z20B00B(
     BuiltInId::textureLod_USamplerCube1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11820,7 +10996,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00L20B00B(
+constexpr const TFunction textureLod_00L20B00B(
     BuiltInId::textureLod_Sampler2DArray1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11829,7 +11005,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00U20B00B(
+constexpr const TFunction textureLod_00U20B00B(
     BuiltInId::textureLod_ISampler2DArray1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11838,7 +11014,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00a20B00B(
+constexpr const TFunction textureLod_00a20B00B(
     BuiltInId::textureLod_USampler2DArray1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11847,7 +11023,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00d20B00B(
+constexpr const TFunction textureLod_00d20B00B(
     BuiltInId::textureLod_Sampler2DShadow1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11856,7 +11032,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00g00B00B(
+constexpr const TFunction textureLod_00g00B00B(
     BuiltInId::textureLod_Sampler1D1_Float1_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11865,7 +11041,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00o00B00B(
+constexpr const TFunction textureLod_00o00B00B(
     BuiltInId::textureLod_ISampler1D1_Float1_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11874,7 +11050,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00t00B00B(
+constexpr const TFunction textureLod_00t00B00B(
     BuiltInId::textureLod_USampler1D1_Float1_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11883,7 +11059,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00m20B00B(
+constexpr const TFunction textureLod_00m20B00B(
     BuiltInId::textureLod_Sampler1DShadow1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11892,7 +11068,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00h10B00B(
+constexpr const TFunction textureLod_00h10B00B(
     BuiltInId::textureLod_Sampler1DArray1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11901,7 +11077,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00p10B00B(
+constexpr const TFunction textureLod_00p10B00B(
     BuiltInId::textureLod_ISampler1DArray1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11910,7 +11086,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00u10B00B(
+constexpr const TFunction textureLod_00u10B00B(
     BuiltInId::textureLod_USampler1DArray1_Float2_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11919,7 +11095,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00i20B00B(
+constexpr const TFunction textureLod_00i20B00B(
     BuiltInId::textureLod_Sampler1DArrayShadow1_Float3_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11928,7 +11104,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00k30B00B(
+constexpr const TFunction textureLod_00k30B00B(
     BuiltInId::textureLod_SamplerCubeArray1_Float4_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11937,7 +11113,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00s30B00B(
+constexpr const TFunction textureLod_00s30B00B(
     BuiltInId::textureLod_ISamplerCubeArray1_Float4_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11946,7 +11122,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLod_00x30B00B(
+constexpr const TFunction textureLod_00x30B00B(
     BuiltInId::textureLod_USamplerCubeArray1_Float4_Float1,
     BuiltInName::textureLod,
     TExtension::UNDEFINED,
@@ -11955,7 +11131,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00I00D(
+constexpr const TFunction textureSize_00I00D(
     BuiltInId::textureSize_Sampler2D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -11964,7 +11140,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00R00D(
+constexpr const TFunction textureSize_00R00D(
     BuiltInId::textureSize_ISampler2D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -11973,7 +11149,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00X00D(
+constexpr const TFunction textureSize_00X00D(
     BuiltInId::textureSize_USampler2D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -11982,7 +11158,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00J00D(
+constexpr const TFunction textureSize_00J00D(
     BuiltInId::textureSize_Sampler3D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -11991,7 +11167,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00S00D(
+constexpr const TFunction textureSize_00S00D(
     BuiltInId::textureSize_ISampler3D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12000,7 +11176,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00Y00D(
+constexpr const TFunction textureSize_00Y00D(
     BuiltInId::textureSize_USampler3D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12009,7 +11185,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00K00D(
+constexpr const TFunction textureSize_00K00D(
     BuiltInId::textureSize_SamplerCube1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12018,7 +11194,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00T00D(
+constexpr const TFunction textureSize_00T00D(
     BuiltInId::textureSize_ISamplerCube1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12027,7 +11203,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00Z00D(
+constexpr const TFunction textureSize_00Z00D(
     BuiltInId::textureSize_USamplerCube1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12036,7 +11212,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00L00D(
+constexpr const TFunction textureSize_00L00D(
     BuiltInId::textureSize_Sampler2DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12045,7 +11221,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00U00D(
+constexpr const TFunction textureSize_00U00D(
     BuiltInId::textureSize_ISampler2DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12054,7 +11230,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00a00D(
+constexpr const TFunction textureSize_00a00D(
     BuiltInId::textureSize_USampler2DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12063,7 +11239,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00d00D(
+constexpr const TFunction textureSize_00d00D(
     BuiltInId::textureSize_Sampler2DShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12072,7 +11248,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00e00D(
+constexpr const TFunction textureSize_00e00D(
     BuiltInId::textureSize_SamplerCubeShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12081,7 +11257,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00f00D(
+constexpr const TFunction textureSize_00f00D(
     BuiltInId::textureSize_Sampler2DArrayShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12090,7 +11266,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00g00D(
+constexpr const TFunction textureSize_00g00D(
     BuiltInId::textureSize_Sampler1D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12099,7 +11275,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00o00D(
+constexpr const TFunction textureSize_00o00D(
     BuiltInId::textureSize_ISampler1D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12108,7 +11284,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00t00D(
+constexpr const TFunction textureSize_00t00D(
     BuiltInId::textureSize_USampler1D1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12117,7 +11293,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00m00D(
+constexpr const TFunction textureSize_00m00D(
     BuiltInId::textureSize_Sampler1DShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12126,7 +11302,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00k00D(
+constexpr const TFunction textureSize_00k00D(
     BuiltInId::textureSize_SamplerCubeArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12135,7 +11311,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00s00D(
+constexpr const TFunction textureSize_00s00D(
     BuiltInId::textureSize_ISamplerCubeArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12144,7 +11320,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00x00D(
+constexpr const TFunction textureSize_00x00D(
     BuiltInId::textureSize_USamplerCubeArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12153,7 +11329,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00l00D(
+constexpr const TFunction textureSize_00l00D(
     BuiltInId::textureSize_SamplerCubeArrayShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12162,43 +11338,39 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00O(
-    BuiltInId::textureSize_Sampler2DRect1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00O20B00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00q(
-    BuiltInId::textureSize_ISampler2DRect1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00q30B10D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00v(
-    BuiltInId::textureSize_USampler2DRect1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00v20B00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00n(
-    BuiltInId::textureSize_Sampler2DRectShadow1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00n10B00B70D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00h00D(
+constexpr const TFunction textureSize_00O(BuiltInId::textureSize_Sampler2DRect1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00O20B00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00q(BuiltInId::textureSize_ISampler2DRect1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00q30B10D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00v(BuiltInId::textureSize_USampler2DRect1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00v20B00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00n(BuiltInId::textureSize_Sampler2DRectShadow1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00n10B00B70D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00h00D(
     BuiltInId::textureSize_Sampler1DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12207,7 +11379,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00p00D(
+constexpr const TFunction textureSize_00p00D(
     BuiltInId::textureSize_ISampler1DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12216,7 +11388,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00u00D(
+constexpr const TFunction textureSize_00u00D(
     BuiltInId::textureSize_USampler1DArray1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12225,7 +11397,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00i00D(
+constexpr const TFunction textureSize_00i00D(
     BuiltInId::textureSize_Sampler1DArrayShadow1_Int1,
     BuiltInName::textureSize,
     TExtension::UNDEFINED,
@@ -12234,34 +11406,31 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00j(
-    BuiltInId::textureSize_SamplerBuffer1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00j00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00r(
-    BuiltInId::textureSize_ISamplerBuffer1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00r00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00w(
-    BuiltInId::textureSize_USamplerBuffer1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00w00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureProjLod_00I20B00B(
+constexpr const TFunction textureSize_00j(BuiltInId::textureSize_SamplerBuffer1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00j00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00r(BuiltInId::textureSize_ISamplerBuffer1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00r00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00w(BuiltInId::textureSize_USamplerBuffer1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00w00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureProjLod_00I20B00B(
     BuiltInId::textureProjLod_Sampler2D1_Float3_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12270,7 +11439,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00R20B00B(
+constexpr const TFunction textureProjLod_00R20B00B(
     BuiltInId::textureProjLod_ISampler2D1_Float3_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12279,7 +11448,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00X20B00B(
+constexpr const TFunction textureProjLod_00X20B00B(
     BuiltInId::textureProjLod_USampler2D1_Float3_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12288,7 +11457,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00I30B00B(
+constexpr const TFunction textureProjLod_00I30B00B(
     BuiltInId::textureProjLod_Sampler2D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12297,7 +11466,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00R30B00B(
+constexpr const TFunction textureProjLod_00R30B00B(
     BuiltInId::textureProjLod_ISampler2D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12306,7 +11475,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00X30B00B(
+constexpr const TFunction textureProjLod_00X30B00B(
     BuiltInId::textureProjLod_USampler2D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12315,7 +11484,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00J30B00B(
+constexpr const TFunction textureProjLod_00J30B00B(
     BuiltInId::textureProjLod_Sampler3D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12324,7 +11493,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00S30B00B(
+constexpr const TFunction textureProjLod_00S30B00B(
     BuiltInId::textureProjLod_ISampler3D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12333,7 +11502,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00Y30B00B(
+constexpr const TFunction textureProjLod_00Y30B00B(
     BuiltInId::textureProjLod_USampler3D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12342,7 +11511,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00d30B00B(
+constexpr const TFunction textureProjLod_00d30B00B(
     BuiltInId::textureProjLod_Sampler2DShadow1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12351,7 +11520,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00g10B00B(
+constexpr const TFunction textureProjLod_00g10B00B(
     BuiltInId::textureProjLod_Sampler1D1_Float2_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12360,7 +11529,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00o10B00B(
+constexpr const TFunction textureProjLod_00o10B00B(
     BuiltInId::textureProjLod_ISampler1D1_Float2_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12369,7 +11538,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00t10B00B(
+constexpr const TFunction textureProjLod_00t10B00B(
     BuiltInId::textureProjLod_USampler1D1_Float2_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12378,7 +11547,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00g30B00B(
+constexpr const TFunction textureProjLod_00g30B00B(
     BuiltInId::textureProjLod_Sampler1D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12387,7 +11556,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00o30B00B(
+constexpr const TFunction textureProjLod_00o30B00B(
     BuiltInId::textureProjLod_ISampler1D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12396,7 +11565,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00t30B00B(
+constexpr const TFunction textureProjLod_00t30B00B(
     BuiltInId::textureProjLod_USampler1D1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12405,7 +11574,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLod_00m30B00B(
+constexpr const TFunction textureProjLod_00m30B00B(
     BuiltInId::textureProjLod_Sampler1DShadow1_Float4_Float1,
     BuiltInName::textureProjLod,
     TExtension::UNDEFINED,
@@ -12414,7 +11583,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00I10D00D(
+constexpr const TFunction texelFetch_00I10D00D(
     BuiltInId::texelFetch_Sampler2D1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12423,7 +11592,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00R10D00D(
+constexpr const TFunction texelFetch_00R10D00D(
     BuiltInId::texelFetch_ISampler2D1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12432,7 +11601,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00X10D00D(
+constexpr const TFunction texelFetch_00X10D00D(
     BuiltInId::texelFetch_USampler2D1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12441,7 +11610,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00J20D00D(
+constexpr const TFunction texelFetch_00J20D00D(
     BuiltInId::texelFetch_Sampler3D1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12450,7 +11619,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00S20D00D(
+constexpr const TFunction texelFetch_00S20D00D(
     BuiltInId::texelFetch_ISampler3D1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12459,7 +11628,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00Y20D00D(
+constexpr const TFunction texelFetch_00Y20D00D(
     BuiltInId::texelFetch_USampler3D1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12468,7 +11637,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00L20D00D(
+constexpr const TFunction texelFetch_00L20D00D(
     BuiltInId::texelFetch_Sampler2DArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12477,7 +11646,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00U20D00D(
+constexpr const TFunction texelFetch_00U20D00D(
     BuiltInId::texelFetch_ISampler2DArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12486,7 +11655,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00a20D00D(
+constexpr const TFunction texelFetch_00a20D00D(
     BuiltInId::texelFetch_USampler2DArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12495,7 +11664,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00g00D00D(
+constexpr const TFunction texelFetch_00g00D00D(
     BuiltInId::texelFetch_Sampler1D1_Int1_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12504,7 +11673,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00o00D00D(
+constexpr const TFunction texelFetch_00o00D00D(
     BuiltInId::texelFetch_ISampler1D1_Int1_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12513,7 +11682,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00t00D00D(
+constexpr const TFunction texelFetch_00t00D00D(
     BuiltInId::texelFetch_USampler1D1_Int1_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12522,7 +11691,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00O10D(
+constexpr const TFunction texelFetch_00O10D(
     BuiltInId::texelFetch_Sampler2DRect1_Int2,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12531,7 +11700,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00q10D(
+constexpr const TFunction texelFetch_00q10D(
     BuiltInId::texelFetch_ISampler2DRect1_Int2,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12540,7 +11709,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00v10D(
+constexpr const TFunction texelFetch_00v10D(
     BuiltInId::texelFetch_USampler2DRect1_Int2,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12549,7 +11718,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00h10D00D(
+constexpr const TFunction texelFetch_00h10D00D(
     BuiltInId::texelFetch_Sampler1DArray1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12558,7 +11727,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00p10D00D(
+constexpr const TFunction texelFetch_00p10D00D(
     BuiltInId::texelFetch_ISampler1DArray1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12567,7 +11736,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00u10D00D(
+constexpr const TFunction texelFetch_00u10D00D(
     BuiltInId::texelFetch_USampler1DArray1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12576,7 +11745,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00j00D(
+constexpr const TFunction texelFetch_00j00D(
     BuiltInId::texelFetch_SamplerBuffer1_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12585,7 +11754,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00r00D(
+constexpr const TFunction texelFetch_00r00D(
     BuiltInId::texelFetch_ISamplerBuffer1_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12594,7 +11763,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00w00D(
+constexpr const TFunction texelFetch_00w00D(
     BuiltInId::texelFetch_USamplerBuffer1_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -12603,7 +11772,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00I10B10B10B(
+constexpr const TFunction textureGrad_00I10B10B10B(
     BuiltInId::textureGrad_Sampler2D1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12612,7 +11781,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00R10B10B10B(
+constexpr const TFunction textureGrad_00R10B10B10B(
     BuiltInId::textureGrad_ISampler2D1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12621,7 +11790,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00X10B10B10B(
+constexpr const TFunction textureGrad_00X10B10B10B(
     BuiltInId::textureGrad_USampler2D1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12630,7 +11799,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00J20B20B20B(
+constexpr const TFunction textureGrad_00J20B20B20B(
     BuiltInId::textureGrad_Sampler3D1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12639,7 +11808,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00S20B20B20B(
+constexpr const TFunction textureGrad_00S20B20B20B(
     BuiltInId::textureGrad_ISampler3D1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12648,7 +11817,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00Y20B20B20B(
+constexpr const TFunction textureGrad_00Y20B20B20B(
     BuiltInId::textureGrad_USampler3D1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12657,7 +11826,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00K20B20B20B(
+constexpr const TFunction textureGrad_00K20B20B20B(
     BuiltInId::textureGrad_SamplerCube1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12666,7 +11835,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00T20B20B20B(
+constexpr const TFunction textureGrad_00T20B20B20B(
     BuiltInId::textureGrad_ISamplerCube1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12675,7 +11844,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00Z20B20B20B(
+constexpr const TFunction textureGrad_00Z20B20B20B(
     BuiltInId::textureGrad_USamplerCube1_Float3_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12684,7 +11853,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00I00B00B00B(
+constexpr const TFunction textureGrad_00I00B00B00B(
     BuiltInId::textureGrad_Sampler2D1_Float1_Float1_Float1,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12693,7 +11862,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00R00B00B00B(
+constexpr const TFunction textureGrad_00R00B00B00B(
     BuiltInId::textureGrad_ISampler2D1_Float1_Float1_Float1,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12702,7 +11871,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00X00B00B00B(
+constexpr const TFunction textureGrad_00X00B00B00B(
     BuiltInId::textureGrad_USampler2D1_Float1_Float1_Float1,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12711,7 +11880,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00O10B10B10B(
+constexpr const TFunction textureGrad_00O10B10B10B(
     BuiltInId::textureGrad_Sampler2DRect1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12720,7 +11889,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00q10B10B10B(
+constexpr const TFunction textureGrad_00q10B10B10B(
     BuiltInId::textureGrad_ISampler2DRect1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12729,7 +11898,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00v10B10B10B(
+constexpr const TFunction textureGrad_00v10B10B10B(
     BuiltInId::textureGrad_USampler2DRect1_Float2_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12738,7 +11907,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00n20B10B10B(
+constexpr const TFunction textureGrad_00n20B10B10B(
     BuiltInId::textureGrad_Sampler2DRectShadow1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12747,7 +11916,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00d20B10B10B(
+constexpr const TFunction textureGrad_00d20B10B10B(
     BuiltInId::textureGrad_Sampler2DShadow1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12756,7 +11925,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00e30B20B20B(
+constexpr const TFunction textureGrad_00e30B20B20B(
     BuiltInId::textureGrad_SamplerCubeShadow1_Float4_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12765,7 +11934,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00L20B10B10B(
+constexpr const TFunction textureGrad_00L20B10B10B(
     BuiltInId::textureGrad_Sampler2DArray1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12774,7 +11943,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00U20B10B10B(
+constexpr const TFunction textureGrad_00U20B10B10B(
     BuiltInId::textureGrad_ISampler2DArray1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12783,7 +11952,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00a20B10B10B(
+constexpr const TFunction textureGrad_00a20B10B10B(
     BuiltInId::textureGrad_USampler2DArray1_Float3_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12792,7 +11961,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00f30B10B10B(
+constexpr const TFunction textureGrad_00f30B10B10B(
     BuiltInId::textureGrad_Sampler2DArrayShadow1_Float4_Float2_Float2,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12801,7 +11970,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00m20B00B00B(
+constexpr const TFunction textureGrad_00m20B00B00B(
     BuiltInId::textureGrad_Sampler1DShadow1_Float3_Float1_Float1,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12810,7 +11979,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00h10B00B00B(
+constexpr const TFunction textureGrad_00h10B00B00B(
     BuiltInId::textureGrad_Sampler1DArray1_Float2_Float1_Float1,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12819,7 +11988,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00p10B00B00B(
+constexpr const TFunction textureGrad_00p10B00B00B(
     BuiltInId::textureGrad_ISampler1DArray1_Float2_Float1_Float1,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12828,7 +11997,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00u10B00B00B(
+constexpr const TFunction textureGrad_00u10B00B00B(
     BuiltInId::textureGrad_USampler1DArray1_Float2_Float1_Float1,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12837,7 +12006,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00i20B00B00B(
+constexpr const TFunction textureGrad_00i20B00B00B(
     BuiltInId::textureGrad_Sampler1DArrayShadow1_Float3_Float1_Float1,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12846,7 +12015,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00k30B20B20B(
+constexpr const TFunction textureGrad_00k30B20B20B(
     BuiltInId::textureGrad_SamplerCubeArray1_Float4_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12855,7 +12024,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00s30B20B20B(
+constexpr const TFunction textureGrad_00s30B20B20B(
     BuiltInId::textureGrad_ISamplerCubeArray1_Float4_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12864,7 +12033,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGrad_00x30B20B20B(
+constexpr const TFunction textureGrad_00x30B20B20B(
     BuiltInId::textureGrad_USamplerCubeArray1_Float4_Float3_Float3,
     BuiltInName::textureGrad,
     TExtension::UNDEFINED,
@@ -12873,7 +12042,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00I20B10B10B(
+constexpr const TFunction textureProjGrad_00I20B10B10B(
     BuiltInId::textureProjGrad_Sampler2D1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12882,7 +12051,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00R20B10B10B(
+constexpr const TFunction textureProjGrad_00R20B10B10B(
     BuiltInId::textureProjGrad_ISampler2D1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12891,7 +12060,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00X20B10B10B(
+constexpr const TFunction textureProjGrad_00X20B10B10B(
     BuiltInId::textureProjGrad_USampler2D1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12900,7 +12069,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00I30B10B10B(
+constexpr const TFunction textureProjGrad_00I30B10B10B(
     BuiltInId::textureProjGrad_Sampler2D1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12909,7 +12078,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00R30B10B10B(
+constexpr const TFunction textureProjGrad_00R30B10B10B(
     BuiltInId::textureProjGrad_ISampler2D1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12918,7 +12087,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00X30B10B10B(
+constexpr const TFunction textureProjGrad_00X30B10B10B(
     BuiltInId::textureProjGrad_USampler2D1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12927,7 +12096,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00J30B20B20B(
+constexpr const TFunction textureProjGrad_00J30B20B20B(
     BuiltInId::textureProjGrad_Sampler3D1_Float4_Float3_Float3,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12936,7 +12105,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00S30B20B20B(
+constexpr const TFunction textureProjGrad_00S30B20B20B(
     BuiltInId::textureProjGrad_ISampler3D1_Float4_Float3_Float3,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12945,7 +12114,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00Y30B20B20B(
+constexpr const TFunction textureProjGrad_00Y30B20B20B(
     BuiltInId::textureProjGrad_USampler3D1_Float4_Float3_Float3,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12954,7 +12123,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00d30B10B10B(
+constexpr const TFunction textureProjGrad_00d30B10B10B(
     BuiltInId::textureProjGrad_Sampler2DShadow1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12963,7 +12132,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00g10B00B00B(
+constexpr const TFunction textureProjGrad_00g10B00B00B(
     BuiltInId::textureProjGrad_Sampler1D1_Float2_Float1_Float1,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12972,7 +12141,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00o10B00B00B(
+constexpr const TFunction textureProjGrad_00o10B00B00B(
     BuiltInId::textureProjGrad_ISampler1D1_Float2_Float1_Float1,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12981,7 +12150,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00t10B00B00B(
+constexpr const TFunction textureProjGrad_00t10B00B00B(
     BuiltInId::textureProjGrad_USampler1D1_Float2_Float1_Float1,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12990,7 +12159,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00g30B00B00B(
+constexpr const TFunction textureProjGrad_00g30B00B00B(
     BuiltInId::textureProjGrad_Sampler1D1_Float4_Float1_Float1,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -12999,7 +12168,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00o30B00B00B(
+constexpr const TFunction textureProjGrad_00o30B00B00B(
     BuiltInId::textureProjGrad_ISampler1D1_Float4_Float1_Float1,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13008,7 +12177,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00t30B00B00B(
+constexpr const TFunction textureProjGrad_00t30B00B00B(
     BuiltInId::textureProjGrad_USampler1D1_Float4_Float1_Float1,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13017,7 +12186,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00m30B00B00B(
+constexpr const TFunction textureProjGrad_00m30B00B00B(
     BuiltInId::textureProjGrad_Sampler1DShadow1_Float4_Float1_Float1,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13026,7 +12195,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00O20B10B10B(
+constexpr const TFunction textureProjGrad_00O20B10B10B(
     BuiltInId::textureProjGrad_Sampler2DRect1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13035,7 +12204,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00q20B10B10B(
+constexpr const TFunction textureProjGrad_00q20B10B10B(
     BuiltInId::textureProjGrad_ISampler2DRect1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13044,7 +12213,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00v20B10B10B(
+constexpr const TFunction textureProjGrad_00v20B10B10B(
     BuiltInId::textureProjGrad_USampler2DRect1_Float3_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13053,7 +12222,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00O30B10B10B(
+constexpr const TFunction textureProjGrad_00O30B10B10B(
     BuiltInId::textureProjGrad_Sampler2DRect1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13062,7 +12231,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00q30B10B10B(
+constexpr const TFunction textureProjGrad_00q30B10B10B(
     BuiltInId::textureProjGrad_ISampler2DRect1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13071,7 +12240,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00v30B10B10B(
+constexpr const TFunction textureProjGrad_00v30B10B10B(
     BuiltInId::textureProjGrad_USampler2DRect1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13080,7 +12249,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGrad_00n30B10B10B(
+constexpr const TFunction textureProjGrad_00n30B10B10B(
     BuiltInId::textureProjGrad_Sampler2DRectShadow1_Float4_Float2_Float2,
     BuiltInName::textureProjGrad,
     TExtension::UNDEFINED,
@@ -13089,7 +12258,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00g(
+constexpr const TFunction textureQueryLevels_00g(
     BuiltInId::textureQueryLevels_Sampler1D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13098,7 +12267,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00o(
+constexpr const TFunction textureQueryLevels_00o(
     BuiltInId::textureQueryLevels_ISampler1D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13107,7 +12276,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00t(
+constexpr const TFunction textureQueryLevels_00t(
     BuiltInId::textureQueryLevels_USampler1D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13116,7 +12285,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00I(
+constexpr const TFunction textureQueryLevels_00I(
     BuiltInId::textureQueryLevels_Sampler2D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13125,7 +12294,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00R(
+constexpr const TFunction textureQueryLevels_00R(
     BuiltInId::textureQueryLevels_ISampler2D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13134,7 +12303,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00X(
+constexpr const TFunction textureQueryLevels_00X(
     BuiltInId::textureQueryLevels_USampler2D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13143,7 +12312,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00J(
+constexpr const TFunction textureQueryLevels_00J(
     BuiltInId::textureQueryLevels_Sampler3D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13152,7 +12321,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00S(
+constexpr const TFunction textureQueryLevels_00S(
     BuiltInId::textureQueryLevels_ISampler3D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13161,7 +12330,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00Y(
+constexpr const TFunction textureQueryLevels_00Y(
     BuiltInId::textureQueryLevels_USampler3D1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13170,7 +12339,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00K(
+constexpr const TFunction textureQueryLevels_00K(
     BuiltInId::textureQueryLevels_SamplerCube1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13179,7 +12348,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00T(
+constexpr const TFunction textureQueryLevels_00T(
     BuiltInId::textureQueryLevels_ISamplerCube1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13188,7 +12357,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00Z(
+constexpr const TFunction textureQueryLevels_00Z(
     BuiltInId::textureQueryLevels_USamplerCube1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13197,7 +12366,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00h(
+constexpr const TFunction textureQueryLevels_00h(
     BuiltInId::textureQueryLevels_Sampler1DArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13206,7 +12375,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00p(
+constexpr const TFunction textureQueryLevels_00p(
     BuiltInId::textureQueryLevels_ISampler1DArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13215,7 +12384,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00u(
+constexpr const TFunction textureQueryLevels_00u(
     BuiltInId::textureQueryLevels_USampler1DArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13224,7 +12393,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00L(
+constexpr const TFunction textureQueryLevels_00L(
     BuiltInId::textureQueryLevels_Sampler2DArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13233,7 +12402,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00U(
+constexpr const TFunction textureQueryLevels_00U(
     BuiltInId::textureQueryLevels_ISampler2DArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13242,7 +12411,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00a(
+constexpr const TFunction textureQueryLevels_00a(
     BuiltInId::textureQueryLevels_USampler2DArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13251,7 +12420,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00k(
+constexpr const TFunction textureQueryLevels_00k(
     BuiltInId::textureQueryLevels_SamplerCubeArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13260,7 +12429,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00s(
+constexpr const TFunction textureQueryLevels_00s(
     BuiltInId::textureQueryLevels_ISamplerCubeArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13269,7 +12438,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00x(
+constexpr const TFunction textureQueryLevels_00x(
     BuiltInId::textureQueryLevels_USamplerCubeArray1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13278,7 +12447,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00m(
+constexpr const TFunction textureQueryLevels_00m(
     BuiltInId::textureQueryLevels_Sampler1DShadow1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13287,7 +12456,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00d(
+constexpr const TFunction textureQueryLevels_00d(
     BuiltInId::textureQueryLevels_Sampler2DShadow1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13296,7 +12465,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00e(
+constexpr const TFunction textureQueryLevels_00e(
     BuiltInId::textureQueryLevels_SamplerCubeShadow1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13305,7 +12474,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00i(
+constexpr const TFunction textureQueryLevels_00i(
     BuiltInId::textureQueryLevels_Sampler1DArrayShadow1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13314,7 +12483,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00f(
+constexpr const TFunction textureQueryLevels_00f(
     BuiltInId::textureQueryLevels_Sampler2DArrayShadow1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13323,7 +12492,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLevels_00l(
+constexpr const TFunction textureQueryLevels_00l(
     BuiltInId::textureQueryLevels_SamplerCubeArrayShadow1,
     BuiltInName::textureQueryLevels,
     TExtension::UNDEFINED,
@@ -13332,7 +12501,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSamples_00P(
+constexpr const TFunction textureSamples_00P(
     BuiltInId::textureSamples_Sampler2DMS1,
     BuiltInName::textureSamples,
     TExtension::UNDEFINED,
@@ -13341,7 +12510,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSamples_00V(
+constexpr const TFunction textureSamples_00V(
     BuiltInId::textureSamples_ISampler2DMS1,
     BuiltInName::textureSamples,
     TExtension::UNDEFINED,
@@ -13350,7 +12519,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSamples_00b(
+constexpr const TFunction textureSamples_00b(
     BuiltInId::textureSamples_USampler2DMS1,
     BuiltInName::textureSamples,
     TExtension::UNDEFINED,
@@ -13359,7 +12528,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSamples_00Q(
+constexpr const TFunction textureSamples_00Q(
     BuiltInId::textureSamples_Sampler2DMSArray1,
     BuiltInName::textureSamples,
     TExtension::UNDEFINED,
@@ -13368,7 +12537,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSamples_00W(
+constexpr const TFunction textureSamples_00W(
     BuiltInId::textureSamples_ISampler2DMSArray1,
     BuiltInName::textureSamples,
     TExtension::UNDEFINED,
@@ -13377,7 +12546,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSamples_00c(
+constexpr const TFunction textureSamples_00c(
     BuiltInId::textureSamples_USampler2DMSArray1,
     BuiltInName::textureSamples,
     TExtension::UNDEFINED,
@@ -13386,34 +12555,31 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00P(
-    BuiltInId::textureSize_Sampler2DMS1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00P10D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00V(
-    BuiltInId::textureSize_ISampler2DMS1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00V10D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00b(
-    BuiltInId::textureSize_USampler2DMS1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00b10D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSizeExt_00P(
+constexpr const TFunction textureSize_00P(BuiltInId::textureSize_Sampler2DMS1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00P10D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00V(BuiltInId::textureSize_ISampler2DMS1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00V10D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00b(BuiltInId::textureSize_USampler2DMS1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00b10D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSizeExt_00P(
     BuiltInId::textureSizeExt_Sampler2DMS1,
     BuiltInName::textureSizeExt,
     TExtension::ANGLE_texture_multisample,
@@ -13422,7 +12588,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00V(
+constexpr const TFunction textureSizeExt_00V(
     BuiltInId::textureSizeExt_ISampler2DMS1,
     BuiltInName::textureSizeExt,
     TExtension::ANGLE_texture_multisample,
@@ -13431,7 +12597,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00b(
+constexpr const TFunction textureSizeExt_00b(
     BuiltInId::textureSizeExt_USampler2DMS1,
     BuiltInName::textureSizeExt,
     TExtension::ANGLE_texture_multisample,
@@ -13440,34 +12606,31 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00Q(
-    BuiltInId::textureSize_Sampler2DMSArray1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00Q20D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00W(
-    BuiltInId::textureSize_ISampler2DMSArray1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00W20D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSize_00c(
-    BuiltInId::textureSize_USampler2DMSArray1,
-    BuiltInName::textureSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00c20D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureSizeExt_00Q(
+constexpr const TFunction textureSize_00Q(BuiltInId::textureSize_Sampler2DMSArray1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00Q20D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00W(BuiltInId::textureSize_ISampler2DMSArray1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00W20D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSize_00c(BuiltInId::textureSize_USampler2DMSArray1,
+                                          BuiltInName::textureSize,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p00c20D00D,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction textureSizeExt_00Q(
     BuiltInId::textureSizeExt_Sampler2DMSArray1,
     BuiltInName::textureSizeExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -13476,7 +12639,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00W(
+constexpr const TFunction textureSizeExt_00W(
     BuiltInId::textureSizeExt_ISampler2DMSArray1,
     BuiltInName::textureSizeExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -13485,7 +12648,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSizeExt_00c(
+constexpr const TFunction textureSizeExt_00c(
     BuiltInId::textureSizeExt_USampler2DMSArray1,
     BuiltInName::textureSizeExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -13494,7 +12657,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00P10D00D(
+constexpr const TFunction texelFetch_00P10D00D(
     BuiltInId::texelFetch_Sampler2DMS1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -13503,7 +12666,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00V10D00D(
+constexpr const TFunction texelFetch_00V10D00D(
     BuiltInId::texelFetch_ISampler2DMS1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -13512,7 +12675,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00b10D00D(
+constexpr const TFunction texelFetch_00b10D00D(
     BuiltInId::texelFetch_USampler2DMS1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -13521,7 +12684,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00P10D00D(
+constexpr const TFunction texelFetchExt_00P10D00D(
     BuiltInId::texelFetchExt_Sampler2DMS1_Int2_Int1,
     BuiltInName::texelFetchExt,
     TExtension::ANGLE_texture_multisample,
@@ -13530,7 +12693,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00V10D00D(
+constexpr const TFunction texelFetchExt_00V10D00D(
     BuiltInId::texelFetchExt_ISampler2DMS1_Int2_Int1,
     BuiltInName::texelFetchExt,
     TExtension::ANGLE_texture_multisample,
@@ -13539,7 +12702,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00b10D00D(
+constexpr const TFunction texelFetchExt_00b10D00D(
     BuiltInId::texelFetchExt_USampler2DMS1_Int2_Int1,
     BuiltInName::texelFetchExt,
     TExtension::ANGLE_texture_multisample,
@@ -13548,7 +12711,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00Q20D00D(
+constexpr const TFunction texelFetch_00Q20D00D(
     BuiltInId::texelFetch_Sampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -13557,7 +12720,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00W20D00D(
+constexpr const TFunction texelFetch_00W20D00D(
     BuiltInId::texelFetch_ISampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -13566,7 +12729,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00c20D00D(
+constexpr const TFunction texelFetch_00c20D00D(
     BuiltInId::texelFetch_USampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetch,
     TExtension::UNDEFINED,
@@ -13575,7 +12738,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00Q20D00D(
+constexpr const TFunction texelFetchExt_00Q20D00D(
     BuiltInId::texelFetchExt_Sampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetchExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -13584,7 +12747,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00W20D00D(
+constexpr const TFunction texelFetchExt_00W20D00D(
     BuiltInId::texelFetchExt_ISampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetchExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -13593,7 +12756,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchExt_00c20D00D(
+constexpr const TFunction texelFetchExt_00c20D00D(
     BuiltInId::texelFetchExt_USampler2DMSArray1_Int3_Int1,
     BuiltInName::texelFetchExt,
     TExtension::OES_texture_storage_multisample_2d_array,
@@ -13602,7 +12765,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00I10B00B(
+constexpr const TFunction texture_00I10B00B(
     BuiltInId::texture_Sampler2D1_Float2_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13611,7 +12774,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00R10B00B(
+constexpr const TFunction texture_00R10B00B(
     BuiltInId::texture_ISampler2D1_Float2_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13620,7 +12783,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00X10B00B(
+constexpr const TFunction texture_00X10B00B(
     BuiltInId::texture_USampler2D1_Float2_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13629,7 +12792,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00J20B00B(
+constexpr const TFunction texture_00J20B00B(
     BuiltInId::texture_Sampler3D1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13638,7 +12801,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00S20B00B(
+constexpr const TFunction texture_00S20B00B(
     BuiltInId::texture_ISampler3D1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13647,7 +12810,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00Y20B00B(
+constexpr const TFunction texture_00Y20B00B(
     BuiltInId::texture_USampler3D1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13656,7 +12819,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00K20B00B(
+constexpr const TFunction texture_00K20B00B(
     BuiltInId::texture_SamplerCube1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13665,7 +12828,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00T20B00B(
+constexpr const TFunction texture_00T20B00B(
     BuiltInId::texture_ISamplerCube1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13674,7 +12837,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00Z20B00B(
+constexpr const TFunction texture_00Z20B00B(
     BuiltInId::texture_USamplerCube1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13683,7 +12846,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00L20B00B(
+constexpr const TFunction texture_00L20B00B(
     BuiltInId::texture_Sampler2DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13692,7 +12855,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00U20B00B(
+constexpr const TFunction texture_00U20B00B(
     BuiltInId::texture_ISampler2DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13701,7 +12864,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00a20B00B(
+constexpr const TFunction texture_00a20B00B(
     BuiltInId::texture_USampler2DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13710,7 +12873,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00I20B00B(
+constexpr const TFunction textureProj_00I20B00B(
     BuiltInId::textureProj_Sampler2D1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13719,7 +12882,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00R20B00B(
+constexpr const TFunction textureProj_00R20B00B(
     BuiltInId::textureProj_ISampler2D1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13728,7 +12891,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00X20B00B(
+constexpr const TFunction textureProj_00X20B00B(
     BuiltInId::textureProj_USampler2D1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13737,7 +12900,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00I30B00B(
+constexpr const TFunction textureProj_00I30B00B(
     BuiltInId::textureProj_Sampler2D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13746,7 +12909,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00R30B00B(
+constexpr const TFunction textureProj_00R30B00B(
     BuiltInId::textureProj_ISampler2D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13755,7 +12918,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00X30B00B(
+constexpr const TFunction textureProj_00X30B00B(
     BuiltInId::textureProj_USampler2D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13764,7 +12927,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00J30B00B(
+constexpr const TFunction textureProj_00J30B00B(
     BuiltInId::textureProj_Sampler3D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13773,7 +12936,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00S30B00B(
+constexpr const TFunction textureProj_00S30B00B(
     BuiltInId::textureProj_ISampler3D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13782,7 +12945,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00Y30B00B(
+constexpr const TFunction textureProj_00Y30B00B(
     BuiltInId::textureProj_USampler3D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13791,7 +12954,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00d20B00B(
+constexpr const TFunction texture_00d20B00B(
     BuiltInId::texture_Sampler2DShadow1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13800,7 +12963,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00e30B00B(
+constexpr const TFunction texture_00e30B00B(
     BuiltInId::texture_SamplerCubeShadow1_Float4_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13809,7 +12972,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00d30B00B(
+constexpr const TFunction textureProj_00d30B00B(
     BuiltInId::textureProj_Sampler2DShadow1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13818,7 +12981,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00g00B00B(
+constexpr const TFunction texture_00g00B00B(
     BuiltInId::texture_Sampler1D1_Float1_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13827,7 +12990,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00o00B00B(
+constexpr const TFunction texture_00o00B00B(
     BuiltInId::texture_ISampler1D1_Float1_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13836,7 +12999,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00t00B00B(
+constexpr const TFunction texture_00t00B00B(
     BuiltInId::texture_USampler1D1_Float1_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13845,7 +13008,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00m20B00B(
+constexpr const TFunction texture_00m20B00B(
     BuiltInId::texture_Sampler1DShadow1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13854,7 +13017,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00h20B00B(
+constexpr const TFunction texture_00h20B00B(
     BuiltInId::texture_Sampler1DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13863,7 +13026,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00p20B00B(
+constexpr const TFunction texture_00p20B00B(
     BuiltInId::texture_ISampler1DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13872,7 +13035,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00u20B00B(
+constexpr const TFunction texture_00u20B00B(
     BuiltInId::texture_USampler1DArray1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13881,7 +13044,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00i20B00B(
+constexpr const TFunction texture_00i20B00B(
     BuiltInId::texture_Sampler1DArrayShadow1_Float3_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13890,7 +13053,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00f30B00B(
+constexpr const TFunction texture_00f30B00B(
     BuiltInId::texture_Sampler2DArrayShadow1_Float4_Float1,
     BuiltInName::texture,
     TExtension::UNDEFINED,
@@ -13899,7 +13062,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00g10B00B(
+constexpr const TFunction textureProj_00g10B00B(
     BuiltInId::textureProj_Sampler1D1_Float2_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13908,7 +13071,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00o10B00B(
+constexpr const TFunction textureProj_00o10B00B(
     BuiltInId::textureProj_ISampler1D1_Float2_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13917,7 +13080,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00t10B00B(
+constexpr const TFunction textureProj_00t10B00B(
     BuiltInId::textureProj_USampler1D1_Float2_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13926,7 +13089,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00g30B00B(
+constexpr const TFunction textureProj_00g30B00B(
     BuiltInId::textureProj_Sampler1D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13935,7 +13098,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00o30B00B(
+constexpr const TFunction textureProj_00o30B00B(
     BuiltInId::textureProj_ISampler1D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13944,7 +13107,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00t30B00B(
+constexpr const TFunction textureProj_00t30B00B(
     BuiltInId::textureProj_USampler1D1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13953,7 +13116,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00m30B00B(
+constexpr const TFunction textureProj_00m30B00B(
     BuiltInId::textureProj_Sampler1DShadow1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::UNDEFINED,
@@ -13962,7 +13125,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00M10B00B(
+constexpr const TFunction texture_00M10B00B(
     BuiltInId::texture_SamplerExternalOES1_Float2_Float1,
     BuiltInName::texture,
     TExtension::OES_EGL_image_external_essl3,
@@ -13971,7 +13134,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00M20B00B(
+constexpr const TFunction textureProj_00M20B00B(
     BuiltInId::textureProj_SamplerExternalOES1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::OES_EGL_image_external_essl3,
@@ -13980,7 +13143,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00M30B00B(
+constexpr const TFunction textureProj_00M30B00B(
     BuiltInId::textureProj_SamplerExternalOES1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::OES_EGL_image_external_essl3,
@@ -13989,7 +13152,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00N10B00B(
+constexpr const TFunction texture_00N10B00B(
     BuiltInId::texture_SamplerExternal2DY2YEXT1_Float2_Float1,
     BuiltInName::texture,
     TExtension::EXT_YUV_target,
@@ -13998,7 +13161,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00N20B00B(
+constexpr const TFunction textureProj_00N20B00B(
     BuiltInId::textureProj_SamplerExternal2DY2YEXT1_Float3_Float1,
     BuiltInName::textureProj,
     TExtension::EXT_YUV_target,
@@ -14007,7 +13170,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00N30B00B(
+constexpr const TFunction textureProj_00N30B00B(
     BuiltInId::textureProj_SamplerExternal2DY2YEXT1_Float4_Float1,
     BuiltInName::textureProj,
     TExtension::EXT_YUV_target,
@@ -14016,7 +13179,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00g00B(
+constexpr const TFunction textureQueryLod_00g00B(
     BuiltInId::textureQueryLod_Sampler1D1_Float1,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14025,7 +13188,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00o00B(
+constexpr const TFunction textureQueryLod_00o00B(
     BuiltInId::textureQueryLod_ISampler1D1_Float1,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14034,7 +13197,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00t00B(
+constexpr const TFunction textureQueryLod_00t00B(
     BuiltInId::textureQueryLod_USampler1D1_Float1,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14043,7 +13206,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00I10B(
+constexpr const TFunction textureQueryLod_00I10B(
     BuiltInId::textureQueryLod_Sampler2D1_Float2,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14052,7 +13215,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00R10B(
+constexpr const TFunction textureQueryLod_00R10B(
     BuiltInId::textureQueryLod_ISampler2D1_Float2,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14061,7 +13224,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00X10B(
+constexpr const TFunction textureQueryLod_00X10B(
     BuiltInId::textureQueryLod_USampler2D1_Float2,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14070,7 +13233,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00J20B(
+constexpr const TFunction textureQueryLod_00J20B(
     BuiltInId::textureQueryLod_Sampler3D1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14079,7 +13242,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00S20B(
+constexpr const TFunction textureQueryLod_00S20B(
     BuiltInId::textureQueryLod_ISampler3D1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14088,7 +13251,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00Y20B(
+constexpr const TFunction textureQueryLod_00Y20B(
     BuiltInId::textureQueryLod_USampler3D1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14097,7 +13260,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00K20B(
+constexpr const TFunction textureQueryLod_00K20B(
     BuiltInId::textureQueryLod_SamplerCube1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14106,7 +13269,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00T20B(
+constexpr const TFunction textureQueryLod_00T20B(
     BuiltInId::textureQueryLod_ISamplerCube1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14115,7 +13278,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00Z20B(
+constexpr const TFunction textureQueryLod_00Z20B(
     BuiltInId::textureQueryLod_USamplerCube1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14124,7 +13287,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00h00B(
+constexpr const TFunction textureQueryLod_00h00B(
     BuiltInId::textureQueryLod_Sampler1DArray1_Float1,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14133,7 +13296,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00p00B(
+constexpr const TFunction textureQueryLod_00p00B(
     BuiltInId::textureQueryLod_ISampler1DArray1_Float1,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14142,7 +13305,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00u00B(
+constexpr const TFunction textureQueryLod_00u00B(
     BuiltInId::textureQueryLod_USampler1DArray1_Float1,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14151,7 +13314,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00L10B(
+constexpr const TFunction textureQueryLod_00L10B(
     BuiltInId::textureQueryLod_Sampler2DArray1_Float2,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14160,7 +13323,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00U10B(
+constexpr const TFunction textureQueryLod_00U10B(
     BuiltInId::textureQueryLod_ISampler2DArray1_Float2,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14169,7 +13332,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00a10B(
+constexpr const TFunction textureQueryLod_00a10B(
     BuiltInId::textureQueryLod_USampler2DArray1_Float2,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14178,7 +13341,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00k20B(
+constexpr const TFunction textureQueryLod_00k20B(
     BuiltInId::textureQueryLod_SamplerCubeArray1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14187,7 +13350,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00s20B(
+constexpr const TFunction textureQueryLod_00s20B(
     BuiltInId::textureQueryLod_ISamplerCubeArray1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14196,7 +13359,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00x20B(
+constexpr const TFunction textureQueryLod_00x20B(
     BuiltInId::textureQueryLod_USamplerCubeArray1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14205,7 +13368,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00m00B(
+constexpr const TFunction textureQueryLod_00m00B(
     BuiltInId::textureQueryLod_Sampler1DShadow1_Float1,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14214,7 +13377,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00d10B(
+constexpr const TFunction textureQueryLod_00d10B(
     BuiltInId::textureQueryLod_Sampler2DShadow1_Float2,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14223,7 +13386,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00e20B(
+constexpr const TFunction textureQueryLod_00e20B(
     BuiltInId::textureQueryLod_SamplerCubeShadow1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14232,7 +13395,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00i00B(
+constexpr const TFunction textureQueryLod_00i00B(
     BuiltInId::textureQueryLod_Sampler1DArrayShadow1_Float1,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14241,7 +13404,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00f10B(
+constexpr const TFunction textureQueryLod_00f10B(
     BuiltInId::textureQueryLod_Sampler2DArrayShadow1_Float2,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14250,7 +13413,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureQueryLod_00l20B(
+constexpr const TFunction textureQueryLod_00l20B(
     BuiltInId::textureQueryLod_SamplerCubeArrayShadow1_Float3,
     BuiltInName::textureQueryLod,
     TExtension::UNDEFINED,
@@ -14259,7 +13422,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00I10B10D(
+constexpr const TFunction textureOffset_00I10B10D(
     BuiltInId::textureOffset_Sampler2D1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14268,7 +13431,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00R10B10D(
+constexpr const TFunction textureOffset_00R10B10D(
     BuiltInId::textureOffset_ISampler2D1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14277,7 +13440,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00X10B10D(
+constexpr const TFunction textureOffset_00X10B10D(
     BuiltInId::textureOffset_USampler2D1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14286,7 +13449,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00J20B20D(
+constexpr const TFunction textureOffset_00J20B20D(
     BuiltInId::textureOffset_Sampler3D1_Float3_Int3,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14295,7 +13458,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00S20B20D(
+constexpr const TFunction textureOffset_00S20B20D(
     BuiltInId::textureOffset_ISampler3D1_Float3_Int3,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14304,7 +13467,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00Y20B20D(
+constexpr const TFunction textureOffset_00Y20B20D(
     BuiltInId::textureOffset_USampler3D1_Float3_Int3,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14313,7 +13476,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00d20B10D(
+constexpr const TFunction textureOffset_00d20B10D(
     BuiltInId::textureOffset_Sampler2DShadow1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14322,7 +13485,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00L20B10D(
+constexpr const TFunction textureOffset_00L20B10D(
     BuiltInId::textureOffset_Sampler2DArray1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14331,7 +13494,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00U20B10D(
+constexpr const TFunction textureOffset_00U20B10D(
     BuiltInId::textureOffset_ISampler2DArray1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14340,7 +13503,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00a20B10D(
+constexpr const TFunction textureOffset_00a20B10D(
     BuiltInId::textureOffset_USampler2DArray1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14349,7 +13512,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00g00B00D(
+constexpr const TFunction textureOffset_00g00B00D(
     BuiltInId::textureOffset_Sampler1D1_Float1_Int1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14358,7 +13521,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00o00B00D(
+constexpr const TFunction textureOffset_00o00B00D(
     BuiltInId::textureOffset_ISampler1D1_Float1_Int1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14367,7 +13530,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00t00B00D(
+constexpr const TFunction textureOffset_00t00B00D(
     BuiltInId::textureOffset_USampler1D1_Float1_Int1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14376,7 +13539,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00O10B10D(
+constexpr const TFunction textureOffset_00O10B10D(
     BuiltInId::textureOffset_Sampler2DRect1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14385,7 +13548,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00q10B10D(
+constexpr const TFunction textureOffset_00q10B10D(
     BuiltInId::textureOffset_ISampler2DRect1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14394,7 +13557,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00v10B10D(
+constexpr const TFunction textureOffset_00v10B10D(
     BuiltInId::textureOffset_USampler2DRect1_Float2_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14403,7 +13566,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00n20B10D(
+constexpr const TFunction textureOffset_00n20B10D(
     BuiltInId::textureOffset_Sampler2DRectShadow1_Float3_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14412,7 +13575,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00m20B00D(
+constexpr const TFunction textureOffset_00m20B00D(
     BuiltInId::textureOffset_Sampler1DShadow1_Float3_Int1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14421,7 +13584,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00h10B00D(
+constexpr const TFunction textureOffset_00h10B00D(
     BuiltInId::textureOffset_Sampler1DArray1_Float2_Int1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14430,7 +13593,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00p10B00D(
+constexpr const TFunction textureOffset_00p10B00D(
     BuiltInId::textureOffset_ISampler1DArray1_Float2_Int1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14439,7 +13602,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00u10B00D(
+constexpr const TFunction textureOffset_00u10B00D(
     BuiltInId::textureOffset_USampler1DArray1_Float2_Int1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14448,7 +13611,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00i20B00D(
+constexpr const TFunction textureOffset_00i20B00D(
     BuiltInId::textureOffset_Sampler1DArrayShadow1_Float3_Int1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14457,7 +13620,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00f30B10D(
+constexpr const TFunction textureOffset_00f30B10D(
     BuiltInId::textureOffset_Sampler2DArrayShadow1_Float4_Int2,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -14466,7 +13629,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00I20B10D(
+constexpr const TFunction textureProjOffset_00I20B10D(
     BuiltInId::textureProjOffset_Sampler2D1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14475,7 +13638,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00R20B10D(
+constexpr const TFunction textureProjOffset_00R20B10D(
     BuiltInId::textureProjOffset_ISampler2D1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14484,7 +13647,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00X20B10D(
+constexpr const TFunction textureProjOffset_00X20B10D(
     BuiltInId::textureProjOffset_USampler2D1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14493,7 +13656,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00I30B10D(
+constexpr const TFunction textureProjOffset_00I30B10D(
     BuiltInId::textureProjOffset_Sampler2D1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14502,7 +13665,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00R30B10D(
+constexpr const TFunction textureProjOffset_00R30B10D(
     BuiltInId::textureProjOffset_ISampler2D1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14511,7 +13674,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00X30B10D(
+constexpr const TFunction textureProjOffset_00X30B10D(
     BuiltInId::textureProjOffset_USampler2D1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14520,7 +13683,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00J30B20D(
+constexpr const TFunction textureProjOffset_00J30B20D(
     BuiltInId::textureProjOffset_Sampler3D1_Float4_Int3,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14529,7 +13692,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00S30B20D(
+constexpr const TFunction textureProjOffset_00S30B20D(
     BuiltInId::textureProjOffset_ISampler3D1_Float4_Int3,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14538,7 +13701,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00Y30B20D(
+constexpr const TFunction textureProjOffset_00Y30B20D(
     BuiltInId::textureProjOffset_USampler3D1_Float4_Int3,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14547,7 +13710,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00d30B10D(
+constexpr const TFunction textureProjOffset_00d30B10D(
     BuiltInId::textureProjOffset_Sampler2DShadow1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14556,7 +13719,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00g10B00D(
+constexpr const TFunction textureProjOffset_00g10B00D(
     BuiltInId::textureProjOffset_Sampler1D1_Float2_Int1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14565,7 +13728,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00o10B00D(
+constexpr const TFunction textureProjOffset_00o10B00D(
     BuiltInId::textureProjOffset_ISampler1D1_Float2_Int1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14574,7 +13737,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00t10B00D(
+constexpr const TFunction textureProjOffset_00t10B00D(
     BuiltInId::textureProjOffset_USampler1D1_Float2_Int1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14583,7 +13746,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00g30B00D(
+constexpr const TFunction textureProjOffset_00g30B00D(
     BuiltInId::textureProjOffset_Sampler1D1_Float4_Int1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14592,7 +13755,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00o30B00D(
+constexpr const TFunction textureProjOffset_00o30B00D(
     BuiltInId::textureProjOffset_ISampler1D1_Float4_Int1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14601,7 +13764,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00t30B00D(
+constexpr const TFunction textureProjOffset_00t30B00D(
     BuiltInId::textureProjOffset_USampler1D1_Float4_Int1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14610,7 +13773,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00O20B10D(
+constexpr const TFunction textureProjOffset_00O20B10D(
     BuiltInId::textureProjOffset_Sampler2DRect1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14619,7 +13782,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00q20B10D(
+constexpr const TFunction textureProjOffset_00q20B10D(
     BuiltInId::textureProjOffset_ISampler2DRect1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14628,7 +13791,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00v20B10D(
+constexpr const TFunction textureProjOffset_00v20B10D(
     BuiltInId::textureProjOffset_USampler2DRect1_Float3_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14637,7 +13800,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00O30B10D(
+constexpr const TFunction textureProjOffset_00O30B10D(
     BuiltInId::textureProjOffset_Sampler2DRect1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14646,7 +13809,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00q30B10D(
+constexpr const TFunction textureProjOffset_00q30B10D(
     BuiltInId::textureProjOffset_ISampler2DRect1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14655,7 +13818,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00v30B10D(
+constexpr const TFunction textureProjOffset_00v30B10D(
     BuiltInId::textureProjOffset_USampler2DRect1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14664,7 +13827,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00n30B10D(
+constexpr const TFunction textureProjOffset_00n30B10D(
     BuiltInId::textureProjOffset_Sampler2DRectShadow1_Float4_Int2,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14673,7 +13836,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00m30B00D(
+constexpr const TFunction textureProjOffset_00m30B00D(
     BuiltInId::textureProjOffset_Sampler1DShadow1_Float4_Int1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -14682,7 +13845,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00I10B00B10D(
+constexpr const TFunction textureLodOffset_00I10B00B10D(
     BuiltInId::textureLodOffset_Sampler2D1_Float2_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14691,7 +13854,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00R10B00B10D(
+constexpr const TFunction textureLodOffset_00R10B00B10D(
     BuiltInId::textureLodOffset_ISampler2D1_Float2_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14700,7 +13863,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00X10B00B10D(
+constexpr const TFunction textureLodOffset_00X10B00B10D(
     BuiltInId::textureLodOffset_USampler2D1_Float2_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14709,7 +13872,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00J20B00B20D(
+constexpr const TFunction textureLodOffset_00J20B00B20D(
     BuiltInId::textureLodOffset_Sampler3D1_Float3_Float1_Int3,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14718,7 +13881,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00S20B00B20D(
+constexpr const TFunction textureLodOffset_00S20B00B20D(
     BuiltInId::textureLodOffset_ISampler3D1_Float3_Float1_Int3,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14727,7 +13890,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00Y20B00B20D(
+constexpr const TFunction textureLodOffset_00Y20B00B20D(
     BuiltInId::textureLodOffset_USampler3D1_Float3_Float1_Int3,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14736,7 +13899,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00d20B00B10D(
+constexpr const TFunction textureLodOffset_00d20B00B10D(
     BuiltInId::textureLodOffset_Sampler2DShadow1_Float3_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14745,7 +13908,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00L20B00B10D(
+constexpr const TFunction textureLodOffset_00L20B00B10D(
     BuiltInId::textureLodOffset_Sampler2DArray1_Float3_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14754,7 +13917,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00U20B00B10D(
+constexpr const TFunction textureLodOffset_00U20B00B10D(
     BuiltInId::textureLodOffset_ISampler2DArray1_Float3_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14763,7 +13926,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00a20B00B10D(
+constexpr const TFunction textureLodOffset_00a20B00B10D(
     BuiltInId::textureLodOffset_USampler2DArray1_Float3_Float1_Int2,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14772,7 +13935,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00g00B00B00D(
+constexpr const TFunction textureLodOffset_00g00B00B00D(
     BuiltInId::textureLodOffset_Sampler1D1_Float1_Float1_Int1,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14781,7 +13944,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00o00B00B00D(
+constexpr const TFunction textureLodOffset_00o00B00B00D(
     BuiltInId::textureLodOffset_ISampler1D1_Float1_Float1_Int1,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14790,7 +13953,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00t00B00B00D(
+constexpr const TFunction textureLodOffset_00t00B00B00D(
     BuiltInId::textureLodOffset_USampler1D1_Float1_Float1_Int1,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14799,7 +13962,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00m20B00B00D(
+constexpr const TFunction textureLodOffset_00m20B00B00D(
     BuiltInId::textureLodOffset_Sampler1DShadow1_Float3_Float1_Int1,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14808,7 +13971,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00h10B00B00D(
+constexpr const TFunction textureLodOffset_00h10B00B00D(
     BuiltInId::textureLodOffset_Sampler1DArray1_Float2_Float1_Int1,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14817,7 +13980,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00p10B00B00D(
+constexpr const TFunction textureLodOffset_00p10B00B00D(
     BuiltInId::textureLodOffset_ISampler1DArray1_Float2_Float1_Int1,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14826,7 +13989,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00u10B00B00D(
+constexpr const TFunction textureLodOffset_00u10B00B00D(
     BuiltInId::textureLodOffset_USampler1DArray1_Float2_Float1_Int1,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14835,7 +13998,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureLodOffset_00i20B00B00D(
+constexpr const TFunction textureLodOffset_00i20B00B00D(
     BuiltInId::textureLodOffset_Sampler1DArrayShadow1_Float3_Float1_Int1,
     BuiltInName::textureLodOffset,
     TExtension::UNDEFINED,
@@ -14844,7 +14007,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00I20B00B10D(
+constexpr const TFunction textureProjLodOffset_00I20B00B10D(
     BuiltInId::textureProjLodOffset_Sampler2D1_Float3_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14853,7 +14016,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00R20B00B10D(
+constexpr const TFunction textureProjLodOffset_00R20B00B10D(
     BuiltInId::textureProjLodOffset_ISampler2D1_Float3_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14862,7 +14025,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00X20B00B10D(
+constexpr const TFunction textureProjLodOffset_00X20B00B10D(
     BuiltInId::textureProjLodOffset_USampler2D1_Float3_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14871,7 +14034,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00I30B00B10D(
+constexpr const TFunction textureProjLodOffset_00I30B00B10D(
     BuiltInId::textureProjLodOffset_Sampler2D1_Float4_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14880,7 +14043,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00R30B00B10D(
+constexpr const TFunction textureProjLodOffset_00R30B00B10D(
     BuiltInId::textureProjLodOffset_ISampler2D1_Float4_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14889,7 +14052,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00X30B00B10D(
+constexpr const TFunction textureProjLodOffset_00X30B00B10D(
     BuiltInId::textureProjLodOffset_USampler2D1_Float4_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14898,7 +14061,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00J30B00B20D(
+constexpr const TFunction textureProjLodOffset_00J30B00B20D(
     BuiltInId::textureProjLodOffset_Sampler3D1_Float4_Float1_Int3,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14907,7 +14070,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00S30B00B20D(
+constexpr const TFunction textureProjLodOffset_00S30B00B20D(
     BuiltInId::textureProjLodOffset_ISampler3D1_Float4_Float1_Int3,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14916,7 +14079,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00Y30B00B20D(
+constexpr const TFunction textureProjLodOffset_00Y30B00B20D(
     BuiltInId::textureProjLodOffset_USampler3D1_Float4_Float1_Int3,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14925,7 +14088,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00d30B00B10D(
+constexpr const TFunction textureProjLodOffset_00d30B00B10D(
     BuiltInId::textureProjLodOffset_Sampler2DShadow1_Float4_Float1_Int2,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14934,7 +14097,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00g10B00B00D(
+constexpr const TFunction textureProjLodOffset_00g10B00B00D(
     BuiltInId::textureProjLodOffset_Sampler1D1_Float2_Float1_Int1,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14943,7 +14106,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00o10B00B00D(
+constexpr const TFunction textureProjLodOffset_00o10B00B00D(
     BuiltInId::textureProjLodOffset_ISampler1D1_Float2_Float1_Int1,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14952,7 +14115,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00t10B00B00D(
+constexpr const TFunction textureProjLodOffset_00t10B00B00D(
     BuiltInId::textureProjLodOffset_USampler1D1_Float2_Float1_Int1,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14961,7 +14124,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00g30B00B00D(
+constexpr const TFunction textureProjLodOffset_00g30B00B00D(
     BuiltInId::textureProjLodOffset_Sampler1D1_Float4_Float1_Int1,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14970,7 +14133,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00o30B00B00D(
+constexpr const TFunction textureProjLodOffset_00o30B00B00D(
     BuiltInId::textureProjLodOffset_ISampler1D1_Float4_Float1_Int1,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14979,7 +14142,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00t30B00B00D(
+constexpr const TFunction textureProjLodOffset_00t30B00B00D(
     BuiltInId::textureProjLodOffset_USampler1D1_Float4_Float1_Int1,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14988,7 +14151,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjLodOffset_00m30B00B00D(
+constexpr const TFunction textureProjLodOffset_00m30B00B00D(
     BuiltInId::textureProjLodOffset_Sampler1DShadow1_Float4_Float1_Int1,
     BuiltInName::textureProjLodOffset,
     TExtension::UNDEFINED,
@@ -14997,7 +14160,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00I10D00D10D(
+constexpr const TFunction texelFetchOffset_00I10D00D10D(
     BuiltInId::texelFetchOffset_Sampler2D1_Int2_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15006,7 +14169,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00R10D00D10D(
+constexpr const TFunction texelFetchOffset_00R10D00D10D(
     BuiltInId::texelFetchOffset_ISampler2D1_Int2_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15015,7 +14178,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00X10D00D10D(
+constexpr const TFunction texelFetchOffset_00X10D00D10D(
     BuiltInId::texelFetchOffset_USampler2D1_Int2_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15024,7 +14187,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00J20D00D20D(
+constexpr const TFunction texelFetchOffset_00J20D00D20D(
     BuiltInId::texelFetchOffset_Sampler3D1_Int3_Int1_Int3,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15033,7 +14196,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00S20D00D20D(
+constexpr const TFunction texelFetchOffset_00S20D00D20D(
     BuiltInId::texelFetchOffset_ISampler3D1_Int3_Int1_Int3,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15042,7 +14205,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00Y20D00D20D(
+constexpr const TFunction texelFetchOffset_00Y20D00D20D(
     BuiltInId::texelFetchOffset_USampler3D1_Int3_Int1_Int3,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15051,7 +14214,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00L20D00D10D(
+constexpr const TFunction texelFetchOffset_00L20D00D10D(
     BuiltInId::texelFetchOffset_Sampler2DArray1_Int3_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15060,7 +14223,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00U20D00D10D(
+constexpr const TFunction texelFetchOffset_00U20D00D10D(
     BuiltInId::texelFetchOffset_ISampler2DArray1_Int3_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15069,7 +14232,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00a20D00D10D(
+constexpr const TFunction texelFetchOffset_00a20D00D10D(
     BuiltInId::texelFetchOffset_USampler2DArray1_Int3_Int1_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15078,7 +14241,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00g00D00D00D(
+constexpr const TFunction texelFetchOffset_00g00D00D00D(
     BuiltInId::texelFetchOffset_Sampler1D1_Int1_Int1_Int1,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15087,7 +14250,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00o00D00D00D(
+constexpr const TFunction texelFetchOffset_00o00D00D00D(
     BuiltInId::texelFetchOffset_ISampler1D1_Int1_Int1_Int1,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15096,7 +14259,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00t00D00D00D(
+constexpr const TFunction texelFetchOffset_00t00D00D00D(
     BuiltInId::texelFetchOffset_USampler1D1_Int1_Int1_Int1,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15105,7 +14268,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00O10D10D(
+constexpr const TFunction texelFetchOffset_00O10D10D(
     BuiltInId::texelFetchOffset_Sampler2DRect1_Int2_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15114,7 +14277,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00q10D10D(
+constexpr const TFunction texelFetchOffset_00q10D10D(
     BuiltInId::texelFetchOffset_ISampler2DRect1_Int2_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15123,7 +14286,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00v10D10D(
+constexpr const TFunction texelFetchOffset_00v10D10D(
     BuiltInId::texelFetchOffset_USampler2DRect1_Int2_Int2,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15132,7 +14295,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00h10D00D00D(
+constexpr const TFunction texelFetchOffset_00h10D00D00D(
     BuiltInId::texelFetchOffset_Sampler1DArray1_Int2_Int1_Int1,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15141,7 +14304,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00p10D00D00D(
+constexpr const TFunction texelFetchOffset_00p10D00D00D(
     BuiltInId::texelFetchOffset_ISampler1DArray1_Int2_Int1_Int1,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15150,7 +14313,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetchOffset_00u10D00D00D(
+constexpr const TFunction texelFetchOffset_00u10D00D00D(
     BuiltInId::texelFetchOffset_USampler1DArray1_Int2_Int1_Int1,
     BuiltInName::texelFetchOffset,
     TExtension::UNDEFINED,
@@ -15159,7 +14322,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00I10B10B10B10D(
+constexpr const TFunction textureGradOffset_00I10B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2D1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15168,7 +14331,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00R10B10B10B10D(
+constexpr const TFunction textureGradOffset_00R10B10B10B10D(
     BuiltInId::textureGradOffset_ISampler2D1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15177,7 +14340,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00X10B10B10B10D(
+constexpr const TFunction textureGradOffset_00X10B10B10B10D(
     BuiltInId::textureGradOffset_USampler2D1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15186,7 +14349,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00J20B20B20B20D(
+constexpr const TFunction textureGradOffset_00J20B20B20B20D(
     BuiltInId::textureGradOffset_Sampler3D1_Float3_Float3_Float3_Int3,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15195,7 +14358,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00S20B20B20B20D(
+constexpr const TFunction textureGradOffset_00S20B20B20B20D(
     BuiltInId::textureGradOffset_ISampler3D1_Float3_Float3_Float3_Int3,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15204,7 +14367,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00Y20B20B20B20D(
+constexpr const TFunction textureGradOffset_00Y20B20B20B20D(
     BuiltInId::textureGradOffset_USampler3D1_Float3_Float3_Float3_Int3,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15213,7 +14376,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00d20B10B10B10D(
+constexpr const TFunction textureGradOffset_00d20B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2DShadow1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15222,7 +14385,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00L20B10B10B10D(
+constexpr const TFunction textureGradOffset_00L20B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2DArray1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15231,7 +14394,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00U20B10B10B10D(
+constexpr const TFunction textureGradOffset_00U20B10B10B10D(
     BuiltInId::textureGradOffset_ISampler2DArray1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15240,7 +14403,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00a20B10B10B10D(
+constexpr const TFunction textureGradOffset_00a20B10B10B10D(
     BuiltInId::textureGradOffset_USampler2DArray1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15249,7 +14412,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00f30B10B10B10D(
+constexpr const TFunction textureGradOffset_00f30B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2DArrayShadow1_Float4_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15258,7 +14421,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00g00B00B00B00D(
+constexpr const TFunction textureGradOffset_00g00B00B00B00D(
     BuiltInId::textureGradOffset_Sampler1D1_Float1_Float1_Float1_Int1,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15267,7 +14430,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00o00B00B00B00D(
+constexpr const TFunction textureGradOffset_00o00B00B00B00D(
     BuiltInId::textureGradOffset_ISampler1D1_Float1_Float1_Float1_Int1,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15276,7 +14439,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00t00B00B00B00D(
+constexpr const TFunction textureGradOffset_00t00B00B00B00D(
     BuiltInId::textureGradOffset_USampler1D1_Float1_Float1_Float1_Int1,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15285,7 +14448,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00O10B10B10B10D(
+constexpr const TFunction textureGradOffset_00O10B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2DRect1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15294,7 +14457,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00q10B10B10B10D(
+constexpr const TFunction textureGradOffset_00q10B10B10B10D(
     BuiltInId::textureGradOffset_ISampler2DRect1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15303,7 +14466,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00v10B10B10B10D(
+constexpr const TFunction textureGradOffset_00v10B10B10B10D(
     BuiltInId::textureGradOffset_USampler2DRect1_Float2_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15312,7 +14475,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00n20B10B10B10D(
+constexpr const TFunction textureGradOffset_00n20B10B10B10D(
     BuiltInId::textureGradOffset_Sampler2DRectShadow1_Float3_Float2_Float2_Int2,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15321,7 +14484,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00m20B00B00B00D(
+constexpr const TFunction textureGradOffset_00m20B00B00B00D(
     BuiltInId::textureGradOffset_Sampler1DShadow1_Float3_Float1_Float1_Int1,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15330,7 +14493,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00h10B00B00B00D(
+constexpr const TFunction textureGradOffset_00h10B00B00B00D(
     BuiltInId::textureGradOffset_Sampler1DArray1_Float2_Float1_Float1_Int1,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15339,7 +14502,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00p10B00B00B00D(
+constexpr const TFunction textureGradOffset_00p10B00B00B00D(
     BuiltInId::textureGradOffset_ISampler1DArray1_Float2_Float1_Float1_Int1,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15348,7 +14511,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00u10B00B00B00D(
+constexpr const TFunction textureGradOffset_00u10B00B00B00D(
     BuiltInId::textureGradOffset_USampler1DArray1_Float2_Float1_Float1_Int1,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15357,7 +14520,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGradOffset_00i20B00B00B00D(
+constexpr const TFunction textureGradOffset_00i20B00B00B00D(
     BuiltInId::textureGradOffset_Sampler1DArrayShadow1_Float3_Float1_Float1_Int1,
     BuiltInName::textureGradOffset,
     TExtension::UNDEFINED,
@@ -15366,7 +14529,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00I20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00I20B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2D1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15375,7 +14538,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00R20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00R20B10B10B10D(
     BuiltInId::textureProjGradOffset_ISampler2D1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15384,7 +14547,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00X20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00X20B10B10B10D(
     BuiltInId::textureProjGradOffset_USampler2D1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15393,7 +14556,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00I30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00I30B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2D1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15402,7 +14565,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00R30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00R30B10B10B10D(
     BuiltInId::textureProjGradOffset_ISampler2D1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15411,7 +14574,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00X30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00X30B10B10B10D(
     BuiltInId::textureProjGradOffset_USampler2D1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15420,7 +14583,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00J30B20B20B20D(
+constexpr const TFunction textureProjGradOffset_00J30B20B20B20D(
     BuiltInId::textureProjGradOffset_Sampler3D1_Float4_Float3_Float3_Int3,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15429,7 +14592,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00S30B20B20B20D(
+constexpr const TFunction textureProjGradOffset_00S30B20B20B20D(
     BuiltInId::textureProjGradOffset_ISampler3D1_Float4_Float3_Float3_Int3,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15438,7 +14601,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00Y30B20B20B20D(
+constexpr const TFunction textureProjGradOffset_00Y30B20B20B20D(
     BuiltInId::textureProjGradOffset_USampler3D1_Float4_Float3_Float3_Int3,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15447,7 +14610,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00d30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00d30B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2DShadow1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15456,7 +14619,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00g10B00B00B00D(
+constexpr const TFunction textureProjGradOffset_00g10B00B00B00D(
     BuiltInId::textureProjGradOffset_Sampler1D1_Float2_Float1_Float1_Int1,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15465,7 +14628,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00o10B00B00B00D(
+constexpr const TFunction textureProjGradOffset_00o10B00B00B00D(
     BuiltInId::textureProjGradOffset_ISampler1D1_Float2_Float1_Float1_Int1,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15474,7 +14637,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00t10B00B00B00D(
+constexpr const TFunction textureProjGradOffset_00t10B00B00B00D(
     BuiltInId::textureProjGradOffset_USampler1D1_Float2_Float1_Float1_Int1,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15483,7 +14646,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00g30B00B00B00D(
+constexpr const TFunction textureProjGradOffset_00g30B00B00B00D(
     BuiltInId::textureProjGradOffset_Sampler1D1_Float4_Float1_Float1_Int1,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15492,7 +14655,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00o30B00B00B00D(
+constexpr const TFunction textureProjGradOffset_00o30B00B00B00D(
     BuiltInId::textureProjGradOffset_ISampler1D1_Float4_Float1_Float1_Int1,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15501,7 +14664,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00t30B00B00B00D(
+constexpr const TFunction textureProjGradOffset_00t30B00B00B00D(
     BuiltInId::textureProjGradOffset_USampler1D1_Float4_Float1_Float1_Int1,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15510,7 +14673,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00O20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00O20B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2DRect1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15519,7 +14682,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00q20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00q20B10B10B10D(
     BuiltInId::textureProjGradOffset_ISampler2DRect1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15528,7 +14691,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00v20B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00v20B10B10B10D(
     BuiltInId::textureProjGradOffset_USampler2DRect1_Float3_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15537,7 +14700,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00O30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00O30B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2DRect1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15546,7 +14709,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00q30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00q30B10B10B10D(
     BuiltInId::textureProjGradOffset_ISampler2DRect1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15555,7 +14718,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00v30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00v30B10B10B10D(
     BuiltInId::textureProjGradOffset_USampler2DRect1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15564,7 +14727,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00n30B10B10B10D(
+constexpr const TFunction textureProjGradOffset_00n30B10B10B10D(
     BuiltInId::textureProjGradOffset_Sampler2DRectShadow1_Float4_Float2_Float2_Int2,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15573,7 +14736,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjGradOffset_00m30B00B00B00D(
+constexpr const TFunction textureProjGradOffset_00m30B00B00B00D(
     BuiltInId::textureProjGradOffset_Sampler1DShadow1_Float4_Float1_Float1_Int1,
     BuiltInName::textureProjGradOffset,
     TExtension::UNDEFINED,
@@ -15582,7 +14745,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00I10B10D00B(
+constexpr const TFunction textureOffset_00I10B10D00B(
     BuiltInId::textureOffset_Sampler2D1_Float2_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15591,7 +14754,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00R10B10D00B(
+constexpr const TFunction textureOffset_00R10B10D00B(
     BuiltInId::textureOffset_ISampler2D1_Float2_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15600,7 +14763,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00X10B10D00B(
+constexpr const TFunction textureOffset_00X10B10D00B(
     BuiltInId::textureOffset_USampler2D1_Float2_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15609,7 +14772,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00J20B20D00B(
+constexpr const TFunction textureOffset_00J20B20D00B(
     BuiltInId::textureOffset_Sampler3D1_Float3_Int3_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15618,7 +14781,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00S20B20D00B(
+constexpr const TFunction textureOffset_00S20B20D00B(
     BuiltInId::textureOffset_ISampler3D1_Float3_Int3_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15627,7 +14790,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00Y20B20D00B(
+constexpr const TFunction textureOffset_00Y20B20D00B(
     BuiltInId::textureOffset_USampler3D1_Float3_Int3_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15636,7 +14799,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00d20B10D00B(
+constexpr const TFunction textureOffset_00d20B10D00B(
     BuiltInId::textureOffset_Sampler2DShadow1_Float3_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15645,7 +14808,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00L20B10D00B(
+constexpr const TFunction textureOffset_00L20B10D00B(
     BuiltInId::textureOffset_Sampler2DArray1_Float3_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15654,7 +14817,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00U20B10D00B(
+constexpr const TFunction textureOffset_00U20B10D00B(
     BuiltInId::textureOffset_ISampler2DArray1_Float3_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15663,7 +14826,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00a20B10D00B(
+constexpr const TFunction textureOffset_00a20B10D00B(
     BuiltInId::textureOffset_USampler2DArray1_Float3_Int2_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15672,7 +14835,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00g00B00D00B(
+constexpr const TFunction textureOffset_00g00B00D00B(
     BuiltInId::textureOffset_Sampler1D1_Float1_Int1_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15681,7 +14844,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00o00B00D00B(
+constexpr const TFunction textureOffset_00o00B00D00B(
     BuiltInId::textureOffset_ISampler1D1_Float1_Int1_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15690,7 +14853,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00t00B00D00B(
+constexpr const TFunction textureOffset_00t00B00D00B(
     BuiltInId::textureOffset_USampler1D1_Float1_Int1_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15699,7 +14862,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00m20B00D00B(
+constexpr const TFunction textureOffset_00m20B00D00B(
     BuiltInId::textureOffset_Sampler1DShadow1_Float3_Int1_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15708,7 +14871,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00h10B00D00B(
+constexpr const TFunction textureOffset_00h10B00D00B(
     BuiltInId::textureOffset_Sampler1DArray1_Float2_Int1_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15717,7 +14880,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00p10B00D00B(
+constexpr const TFunction textureOffset_00p10B00D00B(
     BuiltInId::textureOffset_ISampler1DArray1_Float2_Int1_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15726,7 +14889,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00u10B00D00B(
+constexpr const TFunction textureOffset_00u10B00D00B(
     BuiltInId::textureOffset_USampler1DArray1_Float2_Int1_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15735,7 +14898,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureOffset_00i20B00D00B(
+constexpr const TFunction textureOffset_00i20B00D00B(
     BuiltInId::textureOffset_Sampler1DArrayShadow1_Float3_Int1_Float1,
     BuiltInName::textureOffset,
     TExtension::UNDEFINED,
@@ -15744,7 +14907,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00I20B10D00B(
+constexpr const TFunction textureProjOffset_00I20B10D00B(
     BuiltInId::textureProjOffset_Sampler2D1_Float3_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15753,7 +14916,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00R20B10D00B(
+constexpr const TFunction textureProjOffset_00R20B10D00B(
     BuiltInId::textureProjOffset_ISampler2D1_Float3_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15762,7 +14925,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00X20B10D00B(
+constexpr const TFunction textureProjOffset_00X20B10D00B(
     BuiltInId::textureProjOffset_USampler2D1_Float3_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15771,7 +14934,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00I30B10D00B(
+constexpr const TFunction textureProjOffset_00I30B10D00B(
     BuiltInId::textureProjOffset_Sampler2D1_Float4_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15780,7 +14943,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00R30B10D00B(
+constexpr const TFunction textureProjOffset_00R30B10D00B(
     BuiltInId::textureProjOffset_ISampler2D1_Float4_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15789,7 +14952,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00X30B10D00B(
+constexpr const TFunction textureProjOffset_00X30B10D00B(
     BuiltInId::textureProjOffset_USampler2D1_Float4_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15798,7 +14961,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00J30B20D00B(
+constexpr const TFunction textureProjOffset_00J30B20D00B(
     BuiltInId::textureProjOffset_Sampler3D1_Float4_Int3_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15807,7 +14970,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00S30B20D00B(
+constexpr const TFunction textureProjOffset_00S30B20D00B(
     BuiltInId::textureProjOffset_ISampler3D1_Float4_Int3_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15816,7 +14979,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00Y30B20D00B(
+constexpr const TFunction textureProjOffset_00Y30B20D00B(
     BuiltInId::textureProjOffset_USampler3D1_Float4_Int3_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15825,7 +14988,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00d30B10D00B(
+constexpr const TFunction textureProjOffset_00d30B10D00B(
     BuiltInId::textureProjOffset_Sampler2DShadow1_Float4_Int2_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15834,7 +14997,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00g10B00D00B(
+constexpr const TFunction textureProjOffset_00g10B00D00B(
     BuiltInId::textureProjOffset_Sampler1D1_Float2_Int1_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15843,7 +15006,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00o10B00D00B(
+constexpr const TFunction textureProjOffset_00o10B00D00B(
     BuiltInId::textureProjOffset_ISampler1D1_Float2_Int1_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15852,7 +15015,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00t10B00D00B(
+constexpr const TFunction textureProjOffset_00t10B00D00B(
     BuiltInId::textureProjOffset_USampler1D1_Float2_Int1_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15861,7 +15024,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00g30B00D00B(
+constexpr const TFunction textureProjOffset_00g30B00D00B(
     BuiltInId::textureProjOffset_Sampler1D1_Float4_Int1_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15870,7 +15033,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00o30B00D00B(
+constexpr const TFunction textureProjOffset_00o30B00D00B(
     BuiltInId::textureProjOffset_ISampler1D1_Float4_Int1_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15879,7 +15042,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00t30B00D00B(
+constexpr const TFunction textureProjOffset_00t30B00D00B(
     BuiltInId::textureProjOffset_USampler1D1_Float4_Int1_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15888,7 +15051,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProjOffset_00m30B00D00B(
+constexpr const TFunction textureProjOffset_00m30B00D00B(
     BuiltInId::textureProjOffset_Sampler1DShadow1_Float4_Int1_Float1,
     BuiltInName::textureProjOffset,
     TExtension::UNDEFINED,
@@ -15897,16 +15060,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00M10B(
-    BuiltInId::texture_SamplerExternalOES1_Float2,
-    BuiltInName::texture,
-    TExtension::OES_EGL_image_external_essl3,
-    BuiltInParameters::p00M10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureProj_00M20B(
+constexpr const TFunction texture_00M10B(BuiltInId::texture_SamplerExternalOES1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::OES_EGL_image_external_essl3,
+                                         BuiltInParameters::p00M10B00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction textureProj_00M20B(
     BuiltInId::textureProj_SamplerExternalOES1_Float3,
     BuiltInName::textureProj,
     TExtension::OES_EGL_image_external_essl3,
@@ -15915,7 +15077,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00M30B(
+constexpr const TFunction textureProj_00M30B(
     BuiltInId::textureProj_SamplerExternalOES1_Float4,
     BuiltInName::textureProj,
     TExtension::OES_EGL_image_external_essl3,
@@ -15924,7 +15086,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00M00D(
+constexpr const TFunction textureSize_00M00D(
     BuiltInId::textureSize_SamplerExternalOES1_Int1,
     BuiltInName::textureSize,
     TExtension::OES_EGL_image_external_essl3,
@@ -15933,7 +15095,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00M10D00D(
+constexpr const TFunction texelFetch_00M10D00D(
     BuiltInId::texelFetch_SamplerExternalOES1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::OES_EGL_image_external_essl3,
@@ -15942,16 +15104,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texture_00N10B(
-    BuiltInId::texture_SamplerExternal2DY2YEXT1_Float2,
-    BuiltInName::texture,
-    TExtension::EXT_YUV_target,
-    BuiltInParameters::p00N10B00B,
-    2,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_textureProj_00N20B(
+constexpr const TFunction texture_00N10B(BuiltInId::texture_SamplerExternal2DY2YEXT1_Float2,
+                                         BuiltInName::texture,
+                                         TExtension::EXT_YUV_target,
+                                         BuiltInParameters::p00N10B00B,
+                                         2,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction textureProj_00N20B(
     BuiltInId::textureProj_SamplerExternal2DY2YEXT1_Float3,
     BuiltInName::textureProj,
     TExtension::EXT_YUV_target,
@@ -15960,7 +15121,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureProj_00N30B(
+constexpr const TFunction textureProj_00N30B(
     BuiltInId::textureProj_SamplerExternal2DY2YEXT1_Float4,
     BuiltInName::textureProj,
     TExtension::EXT_YUV_target,
@@ -15969,7 +15130,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_rgb_2_yuv_20B00H(
+constexpr const TFunction rgb_2_yuv_20B00H(
     BuiltInId::rgb_2_yuv_Float3_YuvCscStandardEXT1,
     BuiltInName::rgb_2_yuv,
     TExtension::EXT_YUV_target,
@@ -15978,7 +15139,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_yuv_2_rgb_20B00H(
+constexpr const TFunction yuv_2_rgb_20B00H(
     BuiltInId::yuv_2_rgb_Float3_YuvCscStandardEXT1,
     BuiltInName::yuv_2_rgb,
     TExtension::EXT_YUV_target,
@@ -15987,7 +15148,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureSize_00N00D(
+constexpr const TFunction textureSize_00N00D(
     BuiltInId::textureSize_SamplerExternal2DY2YEXT1_Int1,
     BuiltInName::textureSize,
     TExtension::EXT_YUV_target,
@@ -15996,7 +15157,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_texelFetch_00N10D00D(
+constexpr const TFunction texelFetch_00N10D00D(
     BuiltInId::texelFetch_SamplerExternal2DY2YEXT1_Int2_Int1,
     BuiltInName::texelFetch,
     TExtension::EXT_YUV_target,
@@ -16005,7 +15166,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00I10B(
+constexpr const TFunction textureGather_00I10B(
     BuiltInId::textureGather_Sampler2D1_Float2,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16014,7 +15175,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00R10B(
+constexpr const TFunction textureGather_00R10B(
     BuiltInId::textureGather_ISampler2D1_Float2,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16023,7 +15184,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00X10B(
+constexpr const TFunction textureGather_00X10B(
     BuiltInId::textureGather_USampler2D1_Float2,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16032,7 +15193,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00I10B00D(
+constexpr const TFunction textureGather_00I10B00D(
     BuiltInId::textureGather_Sampler2D1_Float2_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16041,7 +15202,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00R10B00D(
+constexpr const TFunction textureGather_00R10B00D(
     BuiltInId::textureGather_ISampler2D1_Float2_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16050,7 +15211,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00X10B00D(
+constexpr const TFunction textureGather_00X10B00D(
     BuiltInId::textureGather_USampler2D1_Float2_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16059,7 +15220,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00L20B(
+constexpr const TFunction textureGather_00L20B(
     BuiltInId::textureGather_Sampler2DArray1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16068,7 +15229,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00U20B(
+constexpr const TFunction textureGather_00U20B(
     BuiltInId::textureGather_ISampler2DArray1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16077,7 +15238,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00a20B(
+constexpr const TFunction textureGather_00a20B(
     BuiltInId::textureGather_USampler2DArray1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16086,7 +15247,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00L20B00D(
+constexpr const TFunction textureGather_00L20B00D(
     BuiltInId::textureGather_Sampler2DArray1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16095,7 +15256,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00U20B00D(
+constexpr const TFunction textureGather_00U20B00D(
     BuiltInId::textureGather_ISampler2DArray1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16104,7 +15265,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00a20B00D(
+constexpr const TFunction textureGather_00a20B00D(
     BuiltInId::textureGather_USampler2DArray1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16113,7 +15274,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00K20B(
+constexpr const TFunction textureGather_00K20B(
     BuiltInId::textureGather_SamplerCube1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16122,7 +15283,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00T20B(
+constexpr const TFunction textureGather_00T20B(
     BuiltInId::textureGather_ISamplerCube1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16131,7 +15292,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00Z20B(
+constexpr const TFunction textureGather_00Z20B(
     BuiltInId::textureGather_USamplerCube1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16140,7 +15301,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00K20B00D(
+constexpr const TFunction textureGather_00K20B00D(
     BuiltInId::textureGather_SamplerCube1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16149,7 +15310,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00T20B00D(
+constexpr const TFunction textureGather_00T20B00D(
     BuiltInId::textureGather_ISamplerCube1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16158,7 +15319,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00Z20B00D(
+constexpr const TFunction textureGather_00Z20B00D(
     BuiltInId::textureGather_USamplerCube1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16167,7 +15328,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00k30B(
+constexpr const TFunction textureGather_00k30B(
     BuiltInId::textureGather_SamplerCubeArray1_Float4,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16176,7 +15337,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00s30B(
+constexpr const TFunction textureGather_00s30B(
     BuiltInId::textureGather_ISamplerCubeArray1_Float4,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16185,7 +15346,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00x30B(
+constexpr const TFunction textureGather_00x30B(
     BuiltInId::textureGather_USamplerCubeArray1_Float4,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16194,7 +15355,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00k30B00D(
+constexpr const TFunction textureGather_00k30B00D(
     BuiltInId::textureGather_SamplerCubeArray1_Float4_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16203,7 +15364,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00s30B00D(
+constexpr const TFunction textureGather_00s30B00D(
     BuiltInId::textureGather_ISamplerCubeArray1_Float4_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16212,7 +15373,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00x30B00D(
+constexpr const TFunction textureGather_00x30B00D(
     BuiltInId::textureGather_USamplerCubeArray1_Float4_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16221,7 +15382,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00O20B(
+constexpr const TFunction textureGather_00O20B(
     BuiltInId::textureGather_Sampler2DRect1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16230,7 +15391,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00q20B(
+constexpr const TFunction textureGather_00q20B(
     BuiltInId::textureGather_ISampler2DRect1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16239,7 +15400,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00v20B(
+constexpr const TFunction textureGather_00v20B(
     BuiltInId::textureGather_USampler2DRect1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16248,7 +15409,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00O20B00D(
+constexpr const TFunction textureGather_00O20B00D(
     BuiltInId::textureGather_Sampler2DRect1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16257,7 +15418,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00q20B00D(
+constexpr const TFunction textureGather_00q20B00D(
     BuiltInId::textureGather_ISampler2DRect1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16266,7 +15427,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00v20B00D(
+constexpr const TFunction textureGather_00v20B00D(
     BuiltInId::textureGather_USampler2DRect1_Float3_Int1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16275,7 +15436,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00d10B(
+constexpr const TFunction textureGather_00d10B(
     BuiltInId::textureGather_Sampler2DShadow1_Float2,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16284,7 +15445,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00d10B00B(
+constexpr const TFunction textureGather_00d10B00B(
     BuiltInId::textureGather_Sampler2DShadow1_Float2_Float1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16293,7 +15454,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00f20B(
+constexpr const TFunction textureGather_00f20B(
     BuiltInId::textureGather_Sampler2DArrayShadow1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16302,7 +15463,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00f20B00B(
+constexpr const TFunction textureGather_00f20B00B(
     BuiltInId::textureGather_Sampler2DArrayShadow1_Float3_Float1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16311,7 +15472,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00e20B(
+constexpr const TFunction textureGather_00e20B(
     BuiltInId::textureGather_SamplerCubeShadow1_Float3,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16320,7 +15481,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00e20B00B(
+constexpr const TFunction textureGather_00e20B00B(
     BuiltInId::textureGather_SamplerCubeShadow1_Float3_Float1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16329,7 +15490,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00l30B00B(
+constexpr const TFunction textureGather_00l30B00B(
     BuiltInId::textureGather_SamplerCubeArrayShadow1_Float4_Float1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16338,7 +15499,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGather_00n10B00B(
+constexpr const TFunction textureGather_00n10B00B(
     BuiltInId::textureGather_Sampler2DRectShadow1_Float2_Float1,
     BuiltInName::textureGather,
     TExtension::UNDEFINED,
@@ -16347,7 +15508,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00I10B10D(
+constexpr const TFunction textureGatherOffset_00I10B10D(
     BuiltInId::textureGatherOffset_Sampler2D1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16356,7 +15517,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00R10B10D(
+constexpr const TFunction textureGatherOffset_00R10B10D(
     BuiltInId::textureGatherOffset_ISampler2D1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16365,7 +15526,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00X10B10D(
+constexpr const TFunction textureGatherOffset_00X10B10D(
     BuiltInId::textureGatherOffset_USampler2D1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16374,7 +15535,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00I10B10D00D(
+constexpr const TFunction textureGatherOffset_00I10B10D00D(
     BuiltInId::textureGatherOffset_Sampler2D1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16383,7 +15544,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00R10B10D00D(
+constexpr const TFunction textureGatherOffset_00R10B10D00D(
     BuiltInId::textureGatherOffset_ISampler2D1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16392,7 +15553,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00X10B10D00D(
+constexpr const TFunction textureGatherOffset_00X10B10D00D(
     BuiltInId::textureGatherOffset_USampler2D1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16401,7 +15562,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00L20B10D(
+constexpr const TFunction textureGatherOffset_00L20B10D(
     BuiltInId::textureGatherOffset_Sampler2DArray1_Float3_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16410,7 +15571,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00U20B10D(
+constexpr const TFunction textureGatherOffset_00U20B10D(
     BuiltInId::textureGatherOffset_ISampler2DArray1_Float3_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16419,7 +15580,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00a20B10D(
+constexpr const TFunction textureGatherOffset_00a20B10D(
     BuiltInId::textureGatherOffset_USampler2DArray1_Float3_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16428,7 +15589,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00L20B10D00D(
+constexpr const TFunction textureGatherOffset_00L20B10D00D(
     BuiltInId::textureGatherOffset_Sampler2DArray1_Float3_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16437,7 +15598,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00U20B10D00D(
+constexpr const TFunction textureGatherOffset_00U20B10D00D(
     BuiltInId::textureGatherOffset_ISampler2DArray1_Float3_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16446,7 +15607,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00a20B10D00D(
+constexpr const TFunction textureGatherOffset_00a20B10D00D(
     BuiltInId::textureGatherOffset_USampler2DArray1_Float3_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16455,7 +15616,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00d10B00B10D(
+constexpr const TFunction textureGatherOffset_00d10B00B10D(
     BuiltInId::textureGatherOffset_Sampler2DShadow1_Float2_Float1_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16464,7 +15625,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00f20B00B10D(
+constexpr const TFunction textureGatherOffset_00f20B00B10D(
     BuiltInId::textureGatherOffset_Sampler2DArrayShadow1_Float3_Float1_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16473,7 +15634,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00O10B10D(
+constexpr const TFunction textureGatherOffset_00O10B10D(
     BuiltInId::textureGatherOffset_Sampler2DRect1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16482,7 +15643,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00q10B10D(
+constexpr const TFunction textureGatherOffset_00q10B10D(
     BuiltInId::textureGatherOffset_ISampler2DRect1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16491,7 +15652,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00v10B10D(
+constexpr const TFunction textureGatherOffset_00v10B10D(
     BuiltInId::textureGatherOffset_USampler2DRect1_Float2_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16500,7 +15661,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00O10B10D00D(
+constexpr const TFunction textureGatherOffset_00O10B10D00D(
     BuiltInId::textureGatherOffset_Sampler2DRect1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16509,7 +15670,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00q10B10D00D(
+constexpr const TFunction textureGatherOffset_00q10B10D00D(
     BuiltInId::textureGatherOffset_ISampler2DRect1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16518,7 +15679,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00v10B10D00D(
+constexpr const TFunction textureGatherOffset_00v10B10D00D(
     BuiltInId::textureGatherOffset_USampler2DRect1_Float2_Int2_Int1,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16527,7 +15688,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffset_00n10B00B10D(
+constexpr const TFunction textureGatherOffset_00n10B00B10D(
     BuiltInId::textureGatherOffset_Sampler2DRectShadow1_Float2_Float1_Int2,
     BuiltInName::textureGatherOffset,
     TExtension::UNDEFINED,
@@ -16536,7 +15697,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00I10B70D(
+constexpr const TFunction textureGatherOffsets_00I10B70D(
     BuiltInId::textureGatherOffsets_Sampler2D1_Float2_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16545,7 +15706,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00R10B70D(
+constexpr const TFunction textureGatherOffsets_00R10B70D(
     BuiltInId::textureGatherOffsets_ISampler2D1_Float2_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16554,7 +15715,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00X10B70D(
+constexpr const TFunction textureGatherOffsets_00X10B70D(
     BuiltInId::textureGatherOffsets_USampler2D1_Float2_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16563,7 +15724,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00I10B70D00D(
+constexpr const TFunction textureGatherOffsets_00I10B70D00D(
     BuiltInId::textureGatherOffsets_Sampler2D1_Float2_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16572,7 +15733,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00R10B70D00D(
+constexpr const TFunction textureGatherOffsets_00R10B70D00D(
     BuiltInId::textureGatherOffsets_ISampler2D1_Float2_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16581,7 +15742,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00X10B70D00D(
+constexpr const TFunction textureGatherOffsets_00X10B70D00D(
     BuiltInId::textureGatherOffsets_USampler2D1_Float2_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16590,7 +15751,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00L20B70D(
+constexpr const TFunction textureGatherOffsets_00L20B70D(
     BuiltInId::textureGatherOffsets_Sampler2DArray1_Float3_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16599,7 +15760,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00U20B70D(
+constexpr const TFunction textureGatherOffsets_00U20B70D(
     BuiltInId::textureGatherOffsets_ISampler2DArray1_Float3_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16608,7 +15769,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00a20B70D(
+constexpr const TFunction textureGatherOffsets_00a20B70D(
     BuiltInId::textureGatherOffsets_USampler2DArray1_Float3_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16617,7 +15778,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00L20B70D00D(
+constexpr const TFunction textureGatherOffsets_00L20B70D00D(
     BuiltInId::textureGatherOffsets_Sampler2DArray1_Float3_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16626,7 +15787,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00U20B70D00D(
+constexpr const TFunction textureGatherOffsets_00U20B70D00D(
     BuiltInId::textureGatherOffsets_ISampler2DArray1_Float3_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16635,7 +15796,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00a20B70D00D(
+constexpr const TFunction textureGatherOffsets_00a20B70D00D(
     BuiltInId::textureGatherOffsets_USampler2DArray1_Float3_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16644,7 +15805,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00O10B70D(
+constexpr const TFunction textureGatherOffsets_00O10B70D(
     BuiltInId::textureGatherOffsets_Sampler2DRect1_Float2_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16653,7 +15814,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00q10B70D(
+constexpr const TFunction textureGatherOffsets_00q10B70D(
     BuiltInId::textureGatherOffsets_ISampler2DRect1_Float2_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16662,7 +15823,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00v10B70D(
+constexpr const TFunction textureGatherOffsets_00v10B70D(
     BuiltInId::textureGatherOffsets_USampler2DRect1_Float2_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16671,7 +15832,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00O10B70D00D(
+constexpr const TFunction textureGatherOffsets_00O10B70D00D(
     BuiltInId::textureGatherOffsets_Sampler2DRect1_Float2_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16680,7 +15841,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00q10B70D00D(
+constexpr const TFunction textureGatherOffsets_00q10B70D00D(
     BuiltInId::textureGatherOffsets_ISampler2DRect1_Float2_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16689,7 +15850,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00v10B70D00D(
+constexpr const TFunction textureGatherOffsets_00v10B70D00D(
     BuiltInId::textureGatherOffsets_USampler2DRect1_Float2_Int4x2_Int1,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16698,7 +15859,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00d10B00B70D(
+constexpr const TFunction textureGatherOffsets_00d10B00B70D(
     BuiltInId::textureGatherOffsets_Sampler2DShadow1_Float2_Float1_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16707,7 +15868,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00f20B00B70D(
+constexpr const TFunction textureGatherOffsets_00f20B00B70D(
     BuiltInId::textureGatherOffsets_Sampler2DArrayShadow1_Float3_Float1_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16716,7 +15877,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_textureGatherOffsets_00n10B00B70D(
+constexpr const TFunction textureGatherOffsets_00n10B00B70D(
     BuiltInId::textureGatherOffsets_Sampler2DRectShadow1_Float2_Float1_Int4x2,
     BuiltInName::textureGatherOffsets,
     TExtension::UNDEFINED,
@@ -16725,295 +15886,263 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_dFdx_00B(
-    BuiltInId::dFdx_Float1,
-    BuiltInName::dFdx,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdx_10B(
-    BuiltInId::dFdx_Float2,
-    BuiltInName::dFdx,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdx_20B(
-    BuiltInId::dFdx_Float3,
-    BuiltInName::dFdx,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdx_30B(
-    BuiltInId::dFdx_Float4,
-    BuiltInName::dFdx,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDFdx,
-    false);
-constexpr const TFunction function_dFdy_00B(
-    BuiltInId::dFdy_Float1,
-    BuiltInName::dFdy,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdy_10B(
-    BuiltInId::dFdy_Float2,
-    BuiltInName::dFdy,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdy_20B(
-    BuiltInId::dFdy_Float3,
-    BuiltInName::dFdy,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_dFdy_30B(
-    BuiltInId::dFdy_Float4,
-    BuiltInName::dFdy,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpDFdy,
-    false);
-constexpr const TFunction function_fwidth_00B(
-    BuiltInId::fwidth_Float1,
-    BuiltInName::fwidth,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidth_10B(
-    BuiltInId::fwidth_Float2,
-    BuiltInName::fwidth,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidth_20B(
-    BuiltInId::fwidth_Float3,
-    BuiltInName::fwidth,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_fwidth_30B(
-    BuiltInId::fwidth_Float4,
-    BuiltInName::fwidth,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpFwidth,
-    false);
-constexpr const TFunction function_dFdxFine_00B(
-    BuiltInId::dFdxFine_Float1,
-    BuiltInName::dFdxFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdxFine_10B(
-    BuiltInId::dFdxFine_Float2,
-    BuiltInName::dFdxFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdxFine_20B(
-    BuiltInId::dFdxFine_Float3,
-    BuiltInName::dFdxFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdxFine_30B(
-    BuiltInId::dFdxFine_Float4,
-    BuiltInName::dFdxFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdyFine_00B(
-    BuiltInId::dFdyFine_Float1,
-    BuiltInName::dFdyFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdyFine_10B(
-    BuiltInId::dFdyFine_Float2,
-    BuiltInName::dFdyFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdyFine_20B(
-    BuiltInId::dFdyFine_Float3,
-    BuiltInName::dFdyFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdyFine_30B(
-    BuiltInId::dFdyFine_Float4,
-    BuiltInName::dFdyFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdxCoarse_00B(
-    BuiltInId::dFdxCoarse_Float1,
-    BuiltInName::dFdxCoarse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdxCoarse_10B(
-    BuiltInId::dFdxCoarse_Float2,
-    BuiltInName::dFdxCoarse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdxCoarse_20B(
-    BuiltInId::dFdxCoarse_Float3,
-    BuiltInName::dFdxCoarse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdxCoarse_30B(
-    BuiltInId::dFdxCoarse_Float4,
-    BuiltInName::dFdxCoarse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdyCoarse_00B(
-    BuiltInId::dFdyCoarse_Float1,
-    BuiltInName::dFdyCoarse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdyCoarse_10B(
-    BuiltInId::dFdyCoarse_Float2,
-    BuiltInName::dFdyCoarse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdyCoarse_20B(
-    BuiltInId::dFdyCoarse_Float3,
-    BuiltInName::dFdyCoarse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_dFdyCoarse_30B(
-    BuiltInId::dFdyCoarse_Float4,
-    BuiltInName::dFdyCoarse,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_fwidthFine_00B(
-    BuiltInId::fwidthFine_Float1,
-    BuiltInName::fwidthFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_fwidthFine_10B(
-    BuiltInId::fwidthFine_Float2,
-    BuiltInName::fwidthFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_fwidthFine_20B(
-    BuiltInId::fwidthFine_Float3,
-    BuiltInName::fwidthFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_fwidthFine_30B(
-    BuiltInId::fwidthFine_Float4,
-    BuiltInName::fwidthFine,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_fwidthCoarse_00B(
+constexpr const TFunction dFdx_00B(BuiltInId::dFdx_Float1,
+                                   BuiltInName::dFdx,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpDFdx,
+                                   false);
+constexpr const TFunction dFdx_10B(BuiltInId::dFdx_Float2,
+                                   BuiltInName::dFdx,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpDFdx,
+                                   false);
+constexpr const TFunction dFdx_20B(BuiltInId::dFdx_Float3,
+                                   BuiltInName::dFdx,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpDFdx,
+                                   false);
+constexpr const TFunction dFdx_30B(BuiltInId::dFdx_Float4,
+                                   BuiltInName::dFdx,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpDFdx,
+                                   false);
+constexpr const TFunction dFdy_00B(BuiltInId::dFdy_Float1,
+                                   BuiltInName::dFdy,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p00B00B30B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpDFdy,
+                                   false);
+constexpr const TFunction dFdy_10B(BuiltInId::dFdy_Float2,
+                                   BuiltInName::dFdy,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p10B_o_10B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                   EOpDFdy,
+                                   false);
+constexpr const TFunction dFdy_20B(BuiltInId::dFdy_Float3,
+                                   BuiltInName::dFdy,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p20B20B00B,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                   EOpDFdy,
+                                   false);
+constexpr const TFunction dFdy_30B(BuiltInId::dFdy_Float4,
+                                   BuiltInName::dFdy,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::p30B30D,
+                                   1,
+                                   StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                   EOpDFdy,
+                                   false);
+constexpr const TFunction fwidth_00B(BuiltInId::fwidth_Float1,
+                                     BuiltInName::fwidth,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpFwidth,
+                                     false);
+constexpr const TFunction fwidth_10B(BuiltInId::fwidth_Float2,
+                                     BuiltInName::fwidth,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B_o_10B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpFwidth,
+                                     false);
+constexpr const TFunction fwidth_20B(BuiltInId::fwidth_Float3,
+                                     BuiltInName::fwidth,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpFwidth,
+                                     false);
+constexpr const TFunction fwidth_30B(BuiltInId::fwidth_Float4,
+                                     BuiltInName::fwidth,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30D,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpFwidth,
+                                     false);
+constexpr const TFunction dFdxFine_00B(BuiltInId::dFdxFine_Float1,
+                                       BuiltInName::dFdxFine,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00B00B30B,
+                                       1,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpCallBuiltInFunction,
+                                       false);
+constexpr const TFunction dFdxFine_10B(BuiltInId::dFdxFine_Float2,
+                                       BuiltInName::dFdxFine,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10B_o_10B,
+                                       1,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpCallBuiltInFunction,
+                                       false);
+constexpr const TFunction dFdxFine_20B(BuiltInId::dFdxFine_Float3,
+                                       BuiltInName::dFdxFine,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B20B00B,
+                                       1,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpCallBuiltInFunction,
+                                       false);
+constexpr const TFunction dFdxFine_30B(BuiltInId::dFdxFine_Float4,
+                                       BuiltInName::dFdxFine,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30B30D,
+                                       1,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpCallBuiltInFunction,
+                                       false);
+constexpr const TFunction dFdyFine_00B(BuiltInId::dFdyFine_Float1,
+                                       BuiltInName::dFdyFine,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p00B00B30B,
+                                       1,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                       EOpCallBuiltInFunction,
+                                       false);
+constexpr const TFunction dFdyFine_10B(BuiltInId::dFdyFine_Float2,
+                                       BuiltInName::dFdyFine,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p10B_o_10B,
+                                       1,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                       EOpCallBuiltInFunction,
+                                       false);
+constexpr const TFunction dFdyFine_20B(BuiltInId::dFdyFine_Float3,
+                                       BuiltInName::dFdyFine,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p20B20B00B,
+                                       1,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                       EOpCallBuiltInFunction,
+                                       false);
+constexpr const TFunction dFdyFine_30B(BuiltInId::dFdyFine_Float4,
+                                       BuiltInName::dFdyFine,
+                                       TExtension::UNDEFINED,
+                                       BuiltInParameters::p30B30D,
+                                       1,
+                                       StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                       EOpCallBuiltInFunction,
+                                       false);
+constexpr const TFunction dFdxCoarse_00B(BuiltInId::dFdxCoarse_Float1,
+                                         BuiltInName::dFdxCoarse,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00B00B30B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction dFdxCoarse_10B(BuiltInId::dFdxCoarse_Float2,
+                                         BuiltInName::dFdxCoarse,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p10B_o_10B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction dFdxCoarse_20B(BuiltInId::dFdxCoarse_Float3,
+                                         BuiltInName::dFdxCoarse,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p20B20B00B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction dFdxCoarse_30B(BuiltInId::dFdxCoarse_Float4,
+                                         BuiltInName::dFdxCoarse,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p30B30D,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction dFdyCoarse_00B(BuiltInId::dFdyCoarse_Float1,
+                                         BuiltInName::dFdyCoarse,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00B00B30B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction dFdyCoarse_10B(BuiltInId::dFdyCoarse_Float2,
+                                         BuiltInName::dFdyCoarse,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p10B_o_10B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction dFdyCoarse_20B(BuiltInId::dFdyCoarse_Float3,
+                                         BuiltInName::dFdyCoarse,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p20B20B00B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction dFdyCoarse_30B(BuiltInId::dFdyCoarse_Float4,
+                                         BuiltInName::dFdyCoarse,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p30B30D,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction fwidthFine_00B(BuiltInId::fwidthFine_Float1,
+                                         BuiltInName::fwidthFine,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p00B00B30B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction fwidthFine_10B(BuiltInId::fwidthFine_Float2,
+                                         BuiltInName::fwidthFine,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p10B_o_10B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction fwidthFine_20B(BuiltInId::fwidthFine_Float3,
+                                         BuiltInName::fwidthFine,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p20B20B00B,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction fwidthFine_30B(BuiltInId::fwidthFine_Float4,
+                                         BuiltInName::fwidthFine,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::p30B30D,
+                                         1,
+                                         StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                         EOpCallBuiltInFunction,
+                                         false);
+constexpr const TFunction fwidthCoarse_00B(
     BuiltInId::fwidthCoarse_Float1,
     BuiltInName::fwidthCoarse,
     TExtension::UNDEFINED,
@@ -17022,7 +16151,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_fwidthCoarse_10B(
+constexpr const TFunction fwidthCoarse_10B(
     BuiltInId::fwidthCoarse_Float2,
     BuiltInName::fwidthCoarse,
     TExtension::UNDEFINED,
@@ -17031,7 +16160,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_fwidthCoarse_20B(
+constexpr const TFunction fwidthCoarse_20B(
     BuiltInId::fwidthCoarse_Float3,
     BuiltInName::fwidthCoarse,
     TExtension::UNDEFINED,
@@ -17040,7 +16169,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_fwidthCoarse_30B(
+constexpr const TFunction fwidthCoarse_30B(
     BuiltInId::fwidthCoarse_Float4,
     BuiltInName::fwidthCoarse,
     TExtension::UNDEFINED,
@@ -17049,7 +16178,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtCentroid_00B(
+constexpr const TFunction interpolateAtCentroid_00B(
     BuiltInId::interpolateAtCentroid_Float1,
     BuiltInName::interpolateAtCentroid,
     TExtension::UNDEFINED,
@@ -17058,7 +16187,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtCentroid_10B(
+constexpr const TFunction interpolateAtCentroid_10B(
     BuiltInId::interpolateAtCentroid_Float2,
     BuiltInName::interpolateAtCentroid,
     TExtension::UNDEFINED,
@@ -17067,7 +16196,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtCentroid_20B(
+constexpr const TFunction interpolateAtCentroid_20B(
     BuiltInId::interpolateAtCentroid_Float3,
     BuiltInName::interpolateAtCentroid,
     TExtension::UNDEFINED,
@@ -17076,7 +16205,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtCentroid_30B(
+constexpr const TFunction interpolateAtCentroid_30B(
     BuiltInId::interpolateAtCentroid_Float4,
     BuiltInName::interpolateAtCentroid,
     TExtension::UNDEFINED,
@@ -17085,7 +16214,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtSample_00B00D(
+constexpr const TFunction interpolateAtSample_00B00D(
     BuiltInId::interpolateAtSample_Float1_Int1,
     BuiltInName::interpolateAtSample,
     TExtension::UNDEFINED,
@@ -17094,7 +16223,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtSample_10B00D(
+constexpr const TFunction interpolateAtSample_10B00D(
     BuiltInId::interpolateAtSample_Float2_Int1,
     BuiltInName::interpolateAtSample,
     TExtension::UNDEFINED,
@@ -17103,7 +16232,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtSample_20B00D(
+constexpr const TFunction interpolateAtSample_20B00D(
     BuiltInId::interpolateAtSample_Float3_Int1,
     BuiltInName::interpolateAtSample,
     TExtension::UNDEFINED,
@@ -17112,7 +16241,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtSample_30B00D(
+constexpr const TFunction interpolateAtSample_30B00D(
     BuiltInId::interpolateAtSample_Float4_Int1,
     BuiltInName::interpolateAtSample,
     TExtension::UNDEFINED,
@@ -17121,7 +16250,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtOffset_00B10B(
+constexpr const TFunction interpolateAtOffset_00B10B(
     BuiltInId::interpolateAtOffset_Float1_Float2,
     BuiltInName::interpolateAtOffset,
     TExtension::UNDEFINED,
@@ -17130,7 +16259,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtOffset_10B10B(
+constexpr const TFunction interpolateAtOffset_10B10B(
     BuiltInId::interpolateAtOffset_Float2_Float2,
     BuiltInName::interpolateAtOffset,
     TExtension::UNDEFINED,
@@ -17139,7 +16268,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtOffset_20B10B(
+constexpr const TFunction interpolateAtOffset_20B10B(
     BuiltInId::interpolateAtOffset_Float3_Float2,
     BuiltInName::interpolateAtOffset,
     TExtension::UNDEFINED,
@@ -17148,7 +16277,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_interpolateAtOffset_30B10B(
+constexpr const TFunction interpolateAtOffset_30B10B(
     BuiltInId::interpolateAtOffset_Float4_Float2,
     BuiltInName::interpolateAtOffset,
     TExtension::UNDEFINED,
@@ -17157,7 +16286,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounter_00G(
+constexpr const TFunction atomicCounter_00G(
     BuiltInId::atomicCounter_AtomicCounter1,
     BuiltInName::atomicCounter,
     TExtension::UNDEFINED,
@@ -17166,7 +16295,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterIncrement_00G(
+constexpr const TFunction atomicCounterIncrement_00G(
     BuiltInId::atomicCounterIncrement_AtomicCounter1,
     BuiltInName::atomicCounterIncrement,
     TExtension::UNDEFINED,
@@ -17175,7 +16304,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterDecrement_00G(
+constexpr const TFunction atomicCounterDecrement_00G(
     BuiltInId::atomicCounterDecrement_AtomicCounter1,
     BuiltInName::atomicCounterDecrement,
     TExtension::UNDEFINED,
@@ -17184,7 +16313,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterAdd_00G00E(
+constexpr const TFunction atomicCounterAdd_00G00E(
     BuiltInId::atomicCounterAdd_AtomicCounter1_UInt1,
     BuiltInName::atomicCounterAdd,
     TExtension::UNDEFINED,
@@ -17193,7 +16322,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterSubtract_00G00E(
+constexpr const TFunction atomicCounterSubtract_00G00E(
     BuiltInId::atomicCounterSubtract_AtomicCounter1_UInt1,
     BuiltInName::atomicCounterSubtract,
     TExtension::UNDEFINED,
@@ -17202,7 +16331,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterMin_00G00E(
+constexpr const TFunction atomicCounterMin_00G00E(
     BuiltInId::atomicCounterMin_AtomicCounter1_UInt1,
     BuiltInName::atomicCounterMin,
     TExtension::UNDEFINED,
@@ -17211,7 +16340,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterMax_00G00E(
+constexpr const TFunction atomicCounterMax_00G00E(
     BuiltInId::atomicCounterMax_AtomicCounter1_UInt1,
     BuiltInName::atomicCounterMax,
     TExtension::UNDEFINED,
@@ -17220,7 +16349,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterAnd_00G00E(
+constexpr const TFunction atomicCounterAnd_00G00E(
     BuiltInId::atomicCounterAnd_AtomicCounter1_UInt1,
     BuiltInName::atomicCounterAnd,
     TExtension::UNDEFINED,
@@ -17229,7 +16358,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterOr_00G00E(
+constexpr const TFunction atomicCounterOr_00G00E(
     BuiltInId::atomicCounterOr_AtomicCounter1_UInt1,
     BuiltInName::atomicCounterOr,
     TExtension::UNDEFINED,
@@ -17238,7 +16367,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterXor_00G00E(
+constexpr const TFunction atomicCounterXor_00G00E(
     BuiltInId::atomicCounterXor_AtomicCounter1_UInt1,
     BuiltInName::atomicCounterXor,
     TExtension::UNDEFINED,
@@ -17247,7 +16376,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterExchange_00G00E(
+constexpr const TFunction atomicCounterExchange_00G00E(
     BuiltInId::atomicCounterExchange_AtomicCounter1_UInt1,
     BuiltInName::atomicCounterExchange,
     TExtension::UNDEFINED,
@@ -17256,7 +16385,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicCounterCompSwap_00G00E00E(
+constexpr const TFunction atomicCounterCompSwap_00G00E00E(
     BuiltInId::atomicCounterCompSwap_AtomicCounter1_UInt1_UInt1,
     BuiltInName::atomicCounterCompSwap,
     TExtension::UNDEFINED,
@@ -17265,7 +16394,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_atomicAdd_00E00E(
+constexpr const TFunction atomicAdd_00E00E(
     BuiltInId::atomicAdd_UInt1_UInt1,
     BuiltInName::atomicAdd,
     TExtension::UNDEFINED,
@@ -17274,16 +16403,15 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicAdd,
     false);
-constexpr const TFunction function_atomicAdd_00D00D(
-    BuiltInId::atomicAdd_Int1_Int1,
-    BuiltInName::atomicAdd,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicAdd,
-    false);
-constexpr const TFunction function_atomicMin_00E00E(
+constexpr const TFunction atomicAdd_00D00D(BuiltInId::atomicAdd_Int1_Int1,
+                                           BuiltInName::atomicAdd,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicAdd,
+                                           false);
+constexpr const TFunction atomicMin_00E00E(
     BuiltInId::atomicMin_UInt1_UInt1,
     BuiltInName::atomicMin,
     TExtension::UNDEFINED,
@@ -17292,16 +16420,15 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicMin,
     false);
-constexpr const TFunction function_atomicMin_00D00D(
-    BuiltInId::atomicMin_Int1_Int1,
-    BuiltInName::atomicMin,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicMin,
-    false);
-constexpr const TFunction function_atomicMax_00E00E(
+constexpr const TFunction atomicMin_00D00D(BuiltInId::atomicMin_Int1_Int1,
+                                           BuiltInName::atomicMin,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicMin,
+                                           false);
+constexpr const TFunction atomicMax_00E00E(
     BuiltInId::atomicMax_UInt1_UInt1,
     BuiltInName::atomicMax,
     TExtension::UNDEFINED,
@@ -17310,16 +16437,15 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicMax,
     false);
-constexpr const TFunction function_atomicMax_00D00D(
-    BuiltInId::atomicMax_Int1_Int1,
-    BuiltInName::atomicMax,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicMax,
-    false);
-constexpr const TFunction function_atomicAnd_00E00E(
+constexpr const TFunction atomicMax_00D00D(BuiltInId::atomicMax_Int1_Int1,
+                                           BuiltInName::atomicMax,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicMax,
+                                           false);
+constexpr const TFunction atomicAnd_00E00E(
     BuiltInId::atomicAnd_UInt1_UInt1,
     BuiltInName::atomicAnd,
     TExtension::UNDEFINED,
@@ -17328,34 +16454,31 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicAnd,
     false);
-constexpr const TFunction function_atomicAnd_00D00D(
-    BuiltInId::atomicAnd_Int1_Int1,
-    BuiltInName::atomicAnd,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicAnd,
-    false);
-constexpr const TFunction function_atomicOr_00E00E(
-    BuiltInId::atomicOr_UInt1_UInt1,
-    BuiltInName::atomicOr,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00E00E00E,
-    2,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicOr,
-    false);
-constexpr const TFunction function_atomicOr_00D00D(
-    BuiltInId::atomicOr_Int1_Int1,
-    BuiltInName::atomicOr,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicOr,
-    false);
-constexpr const TFunction function_atomicXor_00E00E(
+constexpr const TFunction atomicAnd_00D00D(BuiltInId::atomicAnd_Int1_Int1,
+                                           BuiltInName::atomicAnd,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicAnd,
+                                           false);
+constexpr const TFunction atomicOr_00E00E(BuiltInId::atomicOr_UInt1_UInt1,
+                                          BuiltInName::atomicOr,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p_io_00E00E00E,
+                                          2,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpAtomicOr,
+                                          false);
+constexpr const TFunction atomicOr_00D00D(BuiltInId::atomicOr_Int1_Int1,
+                                          BuiltInName::atomicOr,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p_io_00D00D00D,
+                                          2,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                          EOpAtomicOr,
+                                          false);
+constexpr const TFunction atomicXor_00E00E(
     BuiltInId::atomicXor_UInt1_UInt1,
     BuiltInName::atomicXor,
     TExtension::UNDEFINED,
@@ -17364,16 +16487,15 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicXor,
     false);
-constexpr const TFunction function_atomicXor_00D00D(
-    BuiltInId::atomicXor_Int1_Int1,
-    BuiltInName::atomicXor,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p_io_00D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpAtomicXor,
-    false);
-constexpr const TFunction function_atomicExchange_00E00E(
+constexpr const TFunction atomicXor_00D00D(BuiltInId::atomicXor_Int1_Int1,
+                                           BuiltInName::atomicXor,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p_io_00D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpAtomicXor,
+                                           false);
+constexpr const TFunction atomicExchange_00E00E(
     BuiltInId::atomicExchange_UInt1_UInt1,
     BuiltInName::atomicExchange,
     TExtension::UNDEFINED,
@@ -17382,7 +16504,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicExchange,
     false);
-constexpr const TFunction function_atomicExchange_00D00D(
+constexpr const TFunction atomicExchange_00D00D(
     BuiltInId::atomicExchange_Int1_Int1,
     BuiltInName::atomicExchange,
     TExtension::UNDEFINED,
@@ -17391,7 +16513,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicExchange,
     false);
-constexpr const TFunction function_atomicCompSwap_00E00E00E(
+constexpr const TFunction atomicCompSwap_00E00E00E(
     BuiltInId::atomicCompSwap_UInt1_UInt1_UInt1,
     BuiltInName::atomicCompSwap,
     TExtension::UNDEFINED,
@@ -17400,7 +16522,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicCompSwap,
     false);
-constexpr const TFunction function_atomicCompSwap_00D00D00D(
+constexpr const TFunction atomicCompSwap_00D00D00D(
     BuiltInId::atomicCompSwap_Int1_Int1_Int1,
     BuiltInName::atomicCompSwap,
     TExtension::UNDEFINED,
@@ -17409,358 +16531,319 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpAtomicCompSwap,
     false);
-constexpr const TFunction function_imageSize_00y(
-    BuiltInId::imageSize_Image2D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00y10D30B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_00z(
-    BuiltInId::imageSize_IImage2D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00z10D00B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01A(
-    BuiltInId::imageSize_UImage2D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01A10D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01B(
-    BuiltInId::imageSize_Image3D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01B20D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01C(
-    BuiltInId::imageSize_IImage3D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01C20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01D(
-    BuiltInId::imageSize_UImage3D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01D20D00B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01E(
-    BuiltInId::imageSize_Image2DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01E20D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01F(
-    BuiltInId::imageSize_IImage2DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01F20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01G(
-    BuiltInId::imageSize_UImage2DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01G20D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01H(
-    BuiltInId::imageSize_ImageCube1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01H20D30B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01I(
-    BuiltInId::imageSize_IImageCube1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01I20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01J(
-    BuiltInId::imageSize_UImageCube1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01J20D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01K(
-    BuiltInId::imageSize_Image1D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01K00D00B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01L(
-    BuiltInId::imageSize_IImage1D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01L00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01M(
-    BuiltInId::imageSize_UImage1D1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01M00D30E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01Z(
-    BuiltInId::imageSize_ImageCubeArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01Z20D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01a(
-    BuiltInId::imageSize_IImageCubeArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01a20D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01b(
-    BuiltInId::imageSize_UImageCubeArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01b20D00D00D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01c(
-    BuiltInId::imageSize_ImageRect1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01c,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01d(
-    BuiltInId::imageSize_IImageRect1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01d,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01e(
-    BuiltInId::imageSize_UImageRect1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01e,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01N(
-    BuiltInId::imageSize_Image1DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01N10D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01O(
-    BuiltInId::imageSize_IImage1DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01O10D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01P(
-    BuiltInId::imageSize_UImage1DArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01P10D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01f(
-    BuiltInId::imageSize_ImageBuffer1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01f00D30B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01g(
-    BuiltInId::imageSize_IImageBuffer1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01g00D30D,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01h(
-    BuiltInId::imageSize_UImageBuffer1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01h00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01Q(
-    BuiltInId::imageSize_Image2DMS1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01Q10D00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01R(
-    BuiltInId::imageSize_IImage2DMS1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01R10D00D00B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01S(
-    BuiltInId::imageSize_UImage2DMS1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01S10D00D00B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01T(
-    BuiltInId::imageSize_Image2DMSArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01T20D00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01U(
-    BuiltInId::imageSize_IImage2DMSArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01U20D00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSize_01V(
-    BuiltInId::imageSize_UImage2DMSArray1,
-    BuiltInName::imageSize,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01V20D00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSamples_01Q(
-    BuiltInId::imageSamples_Image2DMS1,
-    BuiltInName::imageSamples,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01Q10D00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSamples_01R(
-    BuiltInId::imageSamples_IImage2DMS1,
-    BuiltInName::imageSamples,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01R10D00D00B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSamples_01S(
-    BuiltInId::imageSamples_UImage2DMS1,
-    BuiltInName::imageSamples,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01S10D00D00B,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSamples_01T(
-    BuiltInId::imageSamples_Image2DMSArray1,
-    BuiltInName::imageSamples,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01T20D00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSamples_01U(
-    BuiltInId::imageSamples_IImage2DMSArray1,
-    BuiltInName::imageSamples,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01U20D00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageSamples_01V(
-    BuiltInId::imageSamples_UImage2DMSArray1,
-    BuiltInName::imageSamples,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01V20D00D00E00E,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageAtomicAdd_00y10D00E(
+constexpr const TFunction imageSize_00y(BuiltInId::imageSize_Image2D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00y10D30B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_00z(BuiltInId::imageSize_IImage2D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p00z10D00B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01A(BuiltInId::imageSize_UImage2D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01A10D00D00D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01B(BuiltInId::imageSize_Image3D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01B20D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01C(BuiltInId::imageSize_IImage3D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01C20D00D00D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01D(BuiltInId::imageSize_UImage3D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01D20D00B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01E(BuiltInId::imageSize_Image2DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01E20D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01F(BuiltInId::imageSize_IImage2DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01F20D00D00D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01G(BuiltInId::imageSize_UImage2DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01G20D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01H(BuiltInId::imageSize_ImageCube1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01H20D30B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01I(BuiltInId::imageSize_IImageCube1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01I20D00D00D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01J(BuiltInId::imageSize_UImageCube1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01J20D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01K(BuiltInId::imageSize_Image1D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01K00D00B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01L(BuiltInId::imageSize_IImage1D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01L00D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01M(BuiltInId::imageSize_UImage1D1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01M00D30E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01Z(BuiltInId::imageSize_ImageCubeArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01Z20D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01a(BuiltInId::imageSize_IImageCubeArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01a20D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01b(BuiltInId::imageSize_UImageCubeArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01b20D00D00D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01c(BuiltInId::imageSize_ImageRect1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01c,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01d(BuiltInId::imageSize_IImageRect1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01d,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01e(BuiltInId::imageSize_UImageRect1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01e,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01N(BuiltInId::imageSize_Image1DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01N10D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01O(BuiltInId::imageSize_IImage1DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01O10D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01P(BuiltInId::imageSize_UImage1DArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01P10D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01f(BuiltInId::imageSize_ImageBuffer1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01f00D30B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01g(BuiltInId::imageSize_IImageBuffer1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01g00D30D,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01h(BuiltInId::imageSize_UImageBuffer1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01h00D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01Q(BuiltInId::imageSize_Image2DMS1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01Q10D00D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01R(BuiltInId::imageSize_IImage2DMS1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01R10D00D00B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01S(BuiltInId::imageSize_UImage2DMS1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01S10D00D00B,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 2, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01T(BuiltInId::imageSize_Image2DMSArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01T20D00D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01U(BuiltInId::imageSize_IImage2DMSArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01U20D00D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSize_01V(BuiltInId::imageSize_UImage2DMSArray1,
+                                        BuiltInName::imageSize,
+                                        TExtension::UNDEFINED,
+                                        BuiltInParameters::p01V20D00D00E00E,
+                                        1,
+                                        StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 3, 1>(),
+                                        EOpCallBuiltInFunction,
+                                        false);
+constexpr const TFunction imageSamples_01Q(BuiltInId::imageSamples_Image2DMS1,
+                                           BuiltInName::imageSamples,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01Q10D00D00E00E,
+                                           1,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageSamples_01R(BuiltInId::imageSamples_IImage2DMS1,
+                                           BuiltInName::imageSamples,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01R10D00D00B,
+                                           1,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageSamples_01S(BuiltInId::imageSamples_UImage2DMS1,
+                                           BuiltInName::imageSamples,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01S10D00D00B,
+                                           1,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageSamples_01T(BuiltInId::imageSamples_Image2DMSArray1,
+                                           BuiltInName::imageSamples,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01T20D00D00E00E,
+                                           1,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageSamples_01U(BuiltInId::imageSamples_IImage2DMSArray1,
+                                           BuiltInName::imageSamples,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01U20D00D00E00E,
+                                           1,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageSamples_01V(BuiltInId::imageSamples_UImage2DMSArray1,
+                                           BuiltInName::imageSamples,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01V20D00D00E00E,
+                                           1,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageAtomicAdd_00y10D00E(
     BuiltInId::imageAtomicAdd_Image2D1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17769,7 +16852,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_00z10D00E(
+constexpr const TFunction imageAtomicAdd_00z10D00E(
     BuiltInId::imageAtomicAdd_IImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17778,7 +16861,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01A10D00E(
+constexpr const TFunction imageAtomicAdd_01A10D00E(
     BuiltInId::imageAtomicAdd_UImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17787,7 +16870,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01B20D00E(
+constexpr const TFunction imageAtomicAdd_01B20D00E(
     BuiltInId::imageAtomicAdd_Image3D1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17796,7 +16879,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01C20D00E(
+constexpr const TFunction imageAtomicAdd_01C20D00E(
     BuiltInId::imageAtomicAdd_IImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17805,7 +16888,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01D20D00E(
+constexpr const TFunction imageAtomicAdd_01D20D00E(
     BuiltInId::imageAtomicAdd_UImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17814,7 +16897,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01H20D00E(
+constexpr const TFunction imageAtomicAdd_01H20D00E(
     BuiltInId::imageAtomicAdd_ImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17823,7 +16906,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01I20D00E(
+constexpr const TFunction imageAtomicAdd_01I20D00E(
     BuiltInId::imageAtomicAdd_IImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17832,7 +16915,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01J20D00E(
+constexpr const TFunction imageAtomicAdd_01J20D00E(
     BuiltInId::imageAtomicAdd_UImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17841,7 +16924,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01f00D00E(
+constexpr const TFunction imageAtomicAdd_01f00D00E(
     BuiltInId::imageAtomicAdd_ImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17850,7 +16933,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01g00D00E(
+constexpr const TFunction imageAtomicAdd_01g00D00E(
     BuiltInId::imageAtomicAdd_IImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17859,7 +16942,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01h00D00E(
+constexpr const TFunction imageAtomicAdd_01h00D00E(
     BuiltInId::imageAtomicAdd_UImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17868,7 +16951,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01E20D00E(
+constexpr const TFunction imageAtomicAdd_01E20D00E(
     BuiltInId::imageAtomicAdd_Image2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17877,7 +16960,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01F20D00E(
+constexpr const TFunction imageAtomicAdd_01F20D00E(
     BuiltInId::imageAtomicAdd_IImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17886,7 +16969,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01G20D00E(
+constexpr const TFunction imageAtomicAdd_01G20D00E(
     BuiltInId::imageAtomicAdd_UImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17895,7 +16978,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01Z20D00E(
+constexpr const TFunction imageAtomicAdd_01Z20D00E(
     BuiltInId::imageAtomicAdd_ImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17904,7 +16987,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01a20D00E(
+constexpr const TFunction imageAtomicAdd_01a20D00E(
     BuiltInId::imageAtomicAdd_IImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17913,7 +16996,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01b20D00E(
+constexpr const TFunction imageAtomicAdd_01b20D00E(
     BuiltInId::imageAtomicAdd_UImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17922,7 +17005,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01K00D00E(
+constexpr const TFunction imageAtomicAdd_01K00D00E(
     BuiltInId::imageAtomicAdd_Image1D1_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17931,7 +17014,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01L00D00E(
+constexpr const TFunction imageAtomicAdd_01L00D00E(
     BuiltInId::imageAtomicAdd_IImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17940,7 +17023,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01M00D00E(
+constexpr const TFunction imageAtomicAdd_01M00D00E(
     BuiltInId::imageAtomicAdd_UImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17949,7 +17032,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01N10D00E(
+constexpr const TFunction imageAtomicAdd_01N10D00E(
     BuiltInId::imageAtomicAdd_Image1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17958,7 +17041,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01O10D00E(
+constexpr const TFunction imageAtomicAdd_01O10D00E(
     BuiltInId::imageAtomicAdd_IImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17967,7 +17050,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01P10D00E(
+constexpr const TFunction imageAtomicAdd_01P10D00E(
     BuiltInId::imageAtomicAdd_UImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17976,7 +17059,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01W10D00E(
+constexpr const TFunction imageAtomicAdd_01W10D00E(
     BuiltInId::imageAtomicAdd_Image2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17985,7 +17068,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01X10D00E(
+constexpr const TFunction imageAtomicAdd_01X10D00E(
     BuiltInId::imageAtomicAdd_IImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -17994,7 +17077,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01Y10D00E(
+constexpr const TFunction imageAtomicAdd_01Y10D00E(
     BuiltInId::imageAtomicAdd_UImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18003,7 +17086,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01Q10D00D00E(
+constexpr const TFunction imageAtomicAdd_01Q10D00D00E(
     BuiltInId::imageAtomicAdd_Image2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18012,7 +17095,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01R10D00D00E(
+constexpr const TFunction imageAtomicAdd_01R10D00D00E(
     BuiltInId::imageAtomicAdd_IImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18021,7 +17104,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01S10D00D00E(
+constexpr const TFunction imageAtomicAdd_01S10D00D00E(
     BuiltInId::imageAtomicAdd_UImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18030,7 +17113,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01T20D00D00E(
+constexpr const TFunction imageAtomicAdd_01T20D00D00E(
     BuiltInId::imageAtomicAdd_Image2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18039,7 +17122,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01U20D00D00E(
+constexpr const TFunction imageAtomicAdd_01U20D00D00E(
     BuiltInId::imageAtomicAdd_IImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18048,7 +17131,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01V20D00D00E(
+constexpr const TFunction imageAtomicAdd_01V20D00D00E(
     BuiltInId::imageAtomicAdd_UImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18057,7 +17140,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_00y10D00D(
+constexpr const TFunction imageAtomicAdd_00y10D00D(
     BuiltInId::imageAtomicAdd_Image2D1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18066,7 +17149,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_00z10D00D(
+constexpr const TFunction imageAtomicAdd_00z10D00D(
     BuiltInId::imageAtomicAdd_IImage2D1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18075,7 +17158,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01A10D00D(
+constexpr const TFunction imageAtomicAdd_01A10D00D(
     BuiltInId::imageAtomicAdd_UImage2D1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18084,7 +17167,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01B20D00D(
+constexpr const TFunction imageAtomicAdd_01B20D00D(
     BuiltInId::imageAtomicAdd_Image3D1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18093,7 +17176,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01C20D00D(
+constexpr const TFunction imageAtomicAdd_01C20D00D(
     BuiltInId::imageAtomicAdd_IImage3D1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18102,7 +17185,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01D20D00D(
+constexpr const TFunction imageAtomicAdd_01D20D00D(
     BuiltInId::imageAtomicAdd_UImage3D1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18111,7 +17194,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01H20D00D(
+constexpr const TFunction imageAtomicAdd_01H20D00D(
     BuiltInId::imageAtomicAdd_ImageCube1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18120,7 +17203,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01I20D00D(
+constexpr const TFunction imageAtomicAdd_01I20D00D(
     BuiltInId::imageAtomicAdd_IImageCube1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18129,7 +17212,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01J20D00D(
+constexpr const TFunction imageAtomicAdd_01J20D00D(
     BuiltInId::imageAtomicAdd_UImageCube1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18138,7 +17221,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01f00D00D(
+constexpr const TFunction imageAtomicAdd_01f00D00D(
     BuiltInId::imageAtomicAdd_ImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18147,7 +17230,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01g00D00D(
+constexpr const TFunction imageAtomicAdd_01g00D00D(
     BuiltInId::imageAtomicAdd_IImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18156,7 +17239,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01h00D00D(
+constexpr const TFunction imageAtomicAdd_01h00D00D(
     BuiltInId::imageAtomicAdd_UImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18165,7 +17248,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01E20D00D(
+constexpr const TFunction imageAtomicAdd_01E20D00D(
     BuiltInId::imageAtomicAdd_Image2DArray1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18174,7 +17257,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01F20D00D(
+constexpr const TFunction imageAtomicAdd_01F20D00D(
     BuiltInId::imageAtomicAdd_IImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18183,7 +17266,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01G20D00D(
+constexpr const TFunction imageAtomicAdd_01G20D00D(
     BuiltInId::imageAtomicAdd_UImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18192,7 +17275,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01Z20D00D(
+constexpr const TFunction imageAtomicAdd_01Z20D00D(
     BuiltInId::imageAtomicAdd_ImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18201,7 +17284,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01a20D00D(
+constexpr const TFunction imageAtomicAdd_01a20D00D(
     BuiltInId::imageAtomicAdd_IImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18210,7 +17293,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01b20D00D(
+constexpr const TFunction imageAtomicAdd_01b20D00D(
     BuiltInId::imageAtomicAdd_UImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18219,7 +17302,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01K00D00D(
+constexpr const TFunction imageAtomicAdd_01K00D00D(
     BuiltInId::imageAtomicAdd_Image1D1_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18228,7 +17311,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01L00D00D(
+constexpr const TFunction imageAtomicAdd_01L00D00D(
     BuiltInId::imageAtomicAdd_IImage1D1_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18237,7 +17320,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01M00D00D(
+constexpr const TFunction imageAtomicAdd_01M00D00D(
     BuiltInId::imageAtomicAdd_UImage1D1_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18246,7 +17329,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01N10D00D(
+constexpr const TFunction imageAtomicAdd_01N10D00D(
     BuiltInId::imageAtomicAdd_Image1DArray1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18255,7 +17338,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01O10D00D(
+constexpr const TFunction imageAtomicAdd_01O10D00D(
     BuiltInId::imageAtomicAdd_IImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18264,7 +17347,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01P10D00D(
+constexpr const TFunction imageAtomicAdd_01P10D00D(
     BuiltInId::imageAtomicAdd_UImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18273,7 +17356,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01W10D00D(
+constexpr const TFunction imageAtomicAdd_01W10D00D(
     BuiltInId::imageAtomicAdd_Image2DRect1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18282,7 +17365,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01X10D00D(
+constexpr const TFunction imageAtomicAdd_01X10D00D(
     BuiltInId::imageAtomicAdd_IImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18291,7 +17374,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01Y10D00D(
+constexpr const TFunction imageAtomicAdd_01Y10D00D(
     BuiltInId::imageAtomicAdd_UImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18300,7 +17383,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01Q10D00D00D(
+constexpr const TFunction imageAtomicAdd_01Q10D00D00D(
     BuiltInId::imageAtomicAdd_Image2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18309,7 +17392,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01R10D00D00D(
+constexpr const TFunction imageAtomicAdd_01R10D00D00D(
     BuiltInId::imageAtomicAdd_IImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18318,7 +17401,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01S10D00D00D(
+constexpr const TFunction imageAtomicAdd_01S10D00D00D(
     BuiltInId::imageAtomicAdd_UImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18327,7 +17410,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01T20D00D00D(
+constexpr const TFunction imageAtomicAdd_01T20D00D00D(
     BuiltInId::imageAtomicAdd_Image2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18336,7 +17419,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01U20D00D00D(
+constexpr const TFunction imageAtomicAdd_01U20D00D00D(
     BuiltInId::imageAtomicAdd_IImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18345,7 +17428,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAdd_01V20D00D00D(
+constexpr const TFunction imageAtomicAdd_01V20D00D00D(
     BuiltInId::imageAtomicAdd_UImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicAdd,
     TExtension::UNDEFINED,
@@ -18354,7 +17437,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_00y10D00E(
+constexpr const TFunction imageAtomicMin_00y10D00E(
     BuiltInId::imageAtomicMin_Image2D1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18363,7 +17446,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_00z10D00E(
+constexpr const TFunction imageAtomicMin_00z10D00E(
     BuiltInId::imageAtomicMin_IImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18372,7 +17455,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01A10D00E(
+constexpr const TFunction imageAtomicMin_01A10D00E(
     BuiltInId::imageAtomicMin_UImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18381,7 +17464,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01B20D00E(
+constexpr const TFunction imageAtomicMin_01B20D00E(
     BuiltInId::imageAtomicMin_Image3D1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18390,7 +17473,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01C20D00E(
+constexpr const TFunction imageAtomicMin_01C20D00E(
     BuiltInId::imageAtomicMin_IImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18399,7 +17482,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01D20D00E(
+constexpr const TFunction imageAtomicMin_01D20D00E(
     BuiltInId::imageAtomicMin_UImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18408,7 +17491,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01H20D00E(
+constexpr const TFunction imageAtomicMin_01H20D00E(
     BuiltInId::imageAtomicMin_ImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18417,7 +17500,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01I20D00E(
+constexpr const TFunction imageAtomicMin_01I20D00E(
     BuiltInId::imageAtomicMin_IImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18426,7 +17509,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01J20D00E(
+constexpr const TFunction imageAtomicMin_01J20D00E(
     BuiltInId::imageAtomicMin_UImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18435,7 +17518,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01f00D00E(
+constexpr const TFunction imageAtomicMin_01f00D00E(
     BuiltInId::imageAtomicMin_ImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18444,7 +17527,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01g00D00E(
+constexpr const TFunction imageAtomicMin_01g00D00E(
     BuiltInId::imageAtomicMin_IImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18453,7 +17536,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01h00D00E(
+constexpr const TFunction imageAtomicMin_01h00D00E(
     BuiltInId::imageAtomicMin_UImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18462,7 +17545,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01E20D00E(
+constexpr const TFunction imageAtomicMin_01E20D00E(
     BuiltInId::imageAtomicMin_Image2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18471,7 +17554,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01F20D00E(
+constexpr const TFunction imageAtomicMin_01F20D00E(
     BuiltInId::imageAtomicMin_IImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18480,7 +17563,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01G20D00E(
+constexpr const TFunction imageAtomicMin_01G20D00E(
     BuiltInId::imageAtomicMin_UImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18489,7 +17572,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01Z20D00E(
+constexpr const TFunction imageAtomicMin_01Z20D00E(
     BuiltInId::imageAtomicMin_ImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18498,7 +17581,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01a20D00E(
+constexpr const TFunction imageAtomicMin_01a20D00E(
     BuiltInId::imageAtomicMin_IImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18507,7 +17590,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01b20D00E(
+constexpr const TFunction imageAtomicMin_01b20D00E(
     BuiltInId::imageAtomicMin_UImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18516,7 +17599,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01K00D00E(
+constexpr const TFunction imageAtomicMin_01K00D00E(
     BuiltInId::imageAtomicMin_Image1D1_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18525,7 +17608,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01L00D00E(
+constexpr const TFunction imageAtomicMin_01L00D00E(
     BuiltInId::imageAtomicMin_IImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18534,7 +17617,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01M00D00E(
+constexpr const TFunction imageAtomicMin_01M00D00E(
     BuiltInId::imageAtomicMin_UImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18543,7 +17626,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01N10D00E(
+constexpr const TFunction imageAtomicMin_01N10D00E(
     BuiltInId::imageAtomicMin_Image1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18552,7 +17635,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01O10D00E(
+constexpr const TFunction imageAtomicMin_01O10D00E(
     BuiltInId::imageAtomicMin_IImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18561,7 +17644,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01P10D00E(
+constexpr const TFunction imageAtomicMin_01P10D00E(
     BuiltInId::imageAtomicMin_UImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18570,7 +17653,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01W10D00E(
+constexpr const TFunction imageAtomicMin_01W10D00E(
     BuiltInId::imageAtomicMin_Image2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18579,7 +17662,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01X10D00E(
+constexpr const TFunction imageAtomicMin_01X10D00E(
     BuiltInId::imageAtomicMin_IImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18588,7 +17671,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01Y10D00E(
+constexpr const TFunction imageAtomicMin_01Y10D00E(
     BuiltInId::imageAtomicMin_UImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18597,7 +17680,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01Q10D00D00E(
+constexpr const TFunction imageAtomicMin_01Q10D00D00E(
     BuiltInId::imageAtomicMin_Image2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18606,7 +17689,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01R10D00D00E(
+constexpr const TFunction imageAtomicMin_01R10D00D00E(
     BuiltInId::imageAtomicMin_IImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18615,7 +17698,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01S10D00D00E(
+constexpr const TFunction imageAtomicMin_01S10D00D00E(
     BuiltInId::imageAtomicMin_UImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18624,7 +17707,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01T20D00D00E(
+constexpr const TFunction imageAtomicMin_01T20D00D00E(
     BuiltInId::imageAtomicMin_Image2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18633,7 +17716,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01U20D00D00E(
+constexpr const TFunction imageAtomicMin_01U20D00D00E(
     BuiltInId::imageAtomicMin_IImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18642,7 +17725,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01V20D00D00E(
+constexpr const TFunction imageAtomicMin_01V20D00D00E(
     BuiltInId::imageAtomicMin_UImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18651,7 +17734,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_00y10D00D(
+constexpr const TFunction imageAtomicMin_00y10D00D(
     BuiltInId::imageAtomicMin_Image2D1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18660,7 +17743,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_00z10D00D(
+constexpr const TFunction imageAtomicMin_00z10D00D(
     BuiltInId::imageAtomicMin_IImage2D1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18669,7 +17752,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01A10D00D(
+constexpr const TFunction imageAtomicMin_01A10D00D(
     BuiltInId::imageAtomicMin_UImage2D1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18678,7 +17761,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01B20D00D(
+constexpr const TFunction imageAtomicMin_01B20D00D(
     BuiltInId::imageAtomicMin_Image3D1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18687,7 +17770,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01C20D00D(
+constexpr const TFunction imageAtomicMin_01C20D00D(
     BuiltInId::imageAtomicMin_IImage3D1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18696,7 +17779,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01D20D00D(
+constexpr const TFunction imageAtomicMin_01D20D00D(
     BuiltInId::imageAtomicMin_UImage3D1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18705,7 +17788,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01H20D00D(
+constexpr const TFunction imageAtomicMin_01H20D00D(
     BuiltInId::imageAtomicMin_ImageCube1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18714,7 +17797,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01I20D00D(
+constexpr const TFunction imageAtomicMin_01I20D00D(
     BuiltInId::imageAtomicMin_IImageCube1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18723,7 +17806,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01J20D00D(
+constexpr const TFunction imageAtomicMin_01J20D00D(
     BuiltInId::imageAtomicMin_UImageCube1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18732,7 +17815,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01f00D00D(
+constexpr const TFunction imageAtomicMin_01f00D00D(
     BuiltInId::imageAtomicMin_ImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18741,7 +17824,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01g00D00D(
+constexpr const TFunction imageAtomicMin_01g00D00D(
     BuiltInId::imageAtomicMin_IImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18750,7 +17833,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01h00D00D(
+constexpr const TFunction imageAtomicMin_01h00D00D(
     BuiltInId::imageAtomicMin_UImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18759,7 +17842,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01E20D00D(
+constexpr const TFunction imageAtomicMin_01E20D00D(
     BuiltInId::imageAtomicMin_Image2DArray1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18768,7 +17851,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01F20D00D(
+constexpr const TFunction imageAtomicMin_01F20D00D(
     BuiltInId::imageAtomicMin_IImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18777,7 +17860,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01G20D00D(
+constexpr const TFunction imageAtomicMin_01G20D00D(
     BuiltInId::imageAtomicMin_UImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18786,7 +17869,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01Z20D00D(
+constexpr const TFunction imageAtomicMin_01Z20D00D(
     BuiltInId::imageAtomicMin_ImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18795,7 +17878,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01a20D00D(
+constexpr const TFunction imageAtomicMin_01a20D00D(
     BuiltInId::imageAtomicMin_IImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18804,7 +17887,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01b20D00D(
+constexpr const TFunction imageAtomicMin_01b20D00D(
     BuiltInId::imageAtomicMin_UImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18813,7 +17896,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01K00D00D(
+constexpr const TFunction imageAtomicMin_01K00D00D(
     BuiltInId::imageAtomicMin_Image1D1_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18822,7 +17905,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01L00D00D(
+constexpr const TFunction imageAtomicMin_01L00D00D(
     BuiltInId::imageAtomicMin_IImage1D1_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18831,7 +17914,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01M00D00D(
+constexpr const TFunction imageAtomicMin_01M00D00D(
     BuiltInId::imageAtomicMin_UImage1D1_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18840,7 +17923,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01N10D00D(
+constexpr const TFunction imageAtomicMin_01N10D00D(
     BuiltInId::imageAtomicMin_Image1DArray1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18849,7 +17932,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01O10D00D(
+constexpr const TFunction imageAtomicMin_01O10D00D(
     BuiltInId::imageAtomicMin_IImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18858,7 +17941,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01P10D00D(
+constexpr const TFunction imageAtomicMin_01P10D00D(
     BuiltInId::imageAtomicMin_UImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18867,7 +17950,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01W10D00D(
+constexpr const TFunction imageAtomicMin_01W10D00D(
     BuiltInId::imageAtomicMin_Image2DRect1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18876,7 +17959,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01X10D00D(
+constexpr const TFunction imageAtomicMin_01X10D00D(
     BuiltInId::imageAtomicMin_IImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18885,7 +17968,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01Y10D00D(
+constexpr const TFunction imageAtomicMin_01Y10D00D(
     BuiltInId::imageAtomicMin_UImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18894,7 +17977,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01Q10D00D00D(
+constexpr const TFunction imageAtomicMin_01Q10D00D00D(
     BuiltInId::imageAtomicMin_Image2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18903,7 +17986,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01R10D00D00D(
+constexpr const TFunction imageAtomicMin_01R10D00D00D(
     BuiltInId::imageAtomicMin_IImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18912,7 +17995,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01S10D00D00D(
+constexpr const TFunction imageAtomicMin_01S10D00D00D(
     BuiltInId::imageAtomicMin_UImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18921,7 +18004,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01T20D00D00D(
+constexpr const TFunction imageAtomicMin_01T20D00D00D(
     BuiltInId::imageAtomicMin_Image2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18930,7 +18013,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01U20D00D00D(
+constexpr const TFunction imageAtomicMin_01U20D00D00D(
     BuiltInId::imageAtomicMin_IImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18939,7 +18022,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMin_01V20D00D00D(
+constexpr const TFunction imageAtomicMin_01V20D00D00D(
     BuiltInId::imageAtomicMin_UImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicMin,
     TExtension::UNDEFINED,
@@ -18948,7 +18031,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_00y10D00E(
+constexpr const TFunction imageAtomicMax_00y10D00E(
     BuiltInId::imageAtomicMax_Image2D1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -18957,7 +18040,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_00z10D00E(
+constexpr const TFunction imageAtomicMax_00z10D00E(
     BuiltInId::imageAtomicMax_IImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -18966,7 +18049,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01A10D00E(
+constexpr const TFunction imageAtomicMax_01A10D00E(
     BuiltInId::imageAtomicMax_UImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -18975,7 +18058,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01B20D00E(
+constexpr const TFunction imageAtomicMax_01B20D00E(
     BuiltInId::imageAtomicMax_Image3D1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -18984,7 +18067,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01C20D00E(
+constexpr const TFunction imageAtomicMax_01C20D00E(
     BuiltInId::imageAtomicMax_IImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -18993,7 +18076,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01D20D00E(
+constexpr const TFunction imageAtomicMax_01D20D00E(
     BuiltInId::imageAtomicMax_UImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19002,7 +18085,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01H20D00E(
+constexpr const TFunction imageAtomicMax_01H20D00E(
     BuiltInId::imageAtomicMax_ImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19011,7 +18094,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01I20D00E(
+constexpr const TFunction imageAtomicMax_01I20D00E(
     BuiltInId::imageAtomicMax_IImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19020,7 +18103,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01J20D00E(
+constexpr const TFunction imageAtomicMax_01J20D00E(
     BuiltInId::imageAtomicMax_UImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19029,7 +18112,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01f00D00E(
+constexpr const TFunction imageAtomicMax_01f00D00E(
     BuiltInId::imageAtomicMax_ImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19038,7 +18121,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01g00D00E(
+constexpr const TFunction imageAtomicMax_01g00D00E(
     BuiltInId::imageAtomicMax_IImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19047,7 +18130,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01h00D00E(
+constexpr const TFunction imageAtomicMax_01h00D00E(
     BuiltInId::imageAtomicMax_UImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19056,7 +18139,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01E20D00E(
+constexpr const TFunction imageAtomicMax_01E20D00E(
     BuiltInId::imageAtomicMax_Image2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19065,7 +18148,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01F20D00E(
+constexpr const TFunction imageAtomicMax_01F20D00E(
     BuiltInId::imageAtomicMax_IImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19074,7 +18157,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01G20D00E(
+constexpr const TFunction imageAtomicMax_01G20D00E(
     BuiltInId::imageAtomicMax_UImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19083,7 +18166,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01Z20D00E(
+constexpr const TFunction imageAtomicMax_01Z20D00E(
     BuiltInId::imageAtomicMax_ImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19092,7 +18175,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01a20D00E(
+constexpr const TFunction imageAtomicMax_01a20D00E(
     BuiltInId::imageAtomicMax_IImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19101,7 +18184,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01b20D00E(
+constexpr const TFunction imageAtomicMax_01b20D00E(
     BuiltInId::imageAtomicMax_UImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19110,7 +18193,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01K00D00E(
+constexpr const TFunction imageAtomicMax_01K00D00E(
     BuiltInId::imageAtomicMax_Image1D1_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19119,7 +18202,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01L00D00E(
+constexpr const TFunction imageAtomicMax_01L00D00E(
     BuiltInId::imageAtomicMax_IImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19128,7 +18211,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01M00D00E(
+constexpr const TFunction imageAtomicMax_01M00D00E(
     BuiltInId::imageAtomicMax_UImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19137,7 +18220,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01N10D00E(
+constexpr const TFunction imageAtomicMax_01N10D00E(
     BuiltInId::imageAtomicMax_Image1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19146,7 +18229,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01O10D00E(
+constexpr const TFunction imageAtomicMax_01O10D00E(
     BuiltInId::imageAtomicMax_IImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19155,7 +18238,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01P10D00E(
+constexpr const TFunction imageAtomicMax_01P10D00E(
     BuiltInId::imageAtomicMax_UImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19164,7 +18247,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01W10D00E(
+constexpr const TFunction imageAtomicMax_01W10D00E(
     BuiltInId::imageAtomicMax_Image2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19173,7 +18256,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01X10D00E(
+constexpr const TFunction imageAtomicMax_01X10D00E(
     BuiltInId::imageAtomicMax_IImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19182,7 +18265,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01Y10D00E(
+constexpr const TFunction imageAtomicMax_01Y10D00E(
     BuiltInId::imageAtomicMax_UImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19191,7 +18274,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01Q10D00D00E(
+constexpr const TFunction imageAtomicMax_01Q10D00D00E(
     BuiltInId::imageAtomicMax_Image2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19200,7 +18283,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01R10D00D00E(
+constexpr const TFunction imageAtomicMax_01R10D00D00E(
     BuiltInId::imageAtomicMax_IImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19209,7 +18292,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01S10D00D00E(
+constexpr const TFunction imageAtomicMax_01S10D00D00E(
     BuiltInId::imageAtomicMax_UImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19218,7 +18301,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01T20D00D00E(
+constexpr const TFunction imageAtomicMax_01T20D00D00E(
     BuiltInId::imageAtomicMax_Image2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19227,7 +18310,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01U20D00D00E(
+constexpr const TFunction imageAtomicMax_01U20D00D00E(
     BuiltInId::imageAtomicMax_IImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19236,7 +18319,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01V20D00D00E(
+constexpr const TFunction imageAtomicMax_01V20D00D00E(
     BuiltInId::imageAtomicMax_UImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19245,7 +18328,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_00y10D00D(
+constexpr const TFunction imageAtomicMax_00y10D00D(
     BuiltInId::imageAtomicMax_Image2D1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19254,7 +18337,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_00z10D00D(
+constexpr const TFunction imageAtomicMax_00z10D00D(
     BuiltInId::imageAtomicMax_IImage2D1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19263,7 +18346,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01A10D00D(
+constexpr const TFunction imageAtomicMax_01A10D00D(
     BuiltInId::imageAtomicMax_UImage2D1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19272,7 +18355,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01B20D00D(
+constexpr const TFunction imageAtomicMax_01B20D00D(
     BuiltInId::imageAtomicMax_Image3D1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19281,7 +18364,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01C20D00D(
+constexpr const TFunction imageAtomicMax_01C20D00D(
     BuiltInId::imageAtomicMax_IImage3D1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19290,7 +18373,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01D20D00D(
+constexpr const TFunction imageAtomicMax_01D20D00D(
     BuiltInId::imageAtomicMax_UImage3D1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19299,7 +18382,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01H20D00D(
+constexpr const TFunction imageAtomicMax_01H20D00D(
     BuiltInId::imageAtomicMax_ImageCube1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19308,7 +18391,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01I20D00D(
+constexpr const TFunction imageAtomicMax_01I20D00D(
     BuiltInId::imageAtomicMax_IImageCube1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19317,7 +18400,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01J20D00D(
+constexpr const TFunction imageAtomicMax_01J20D00D(
     BuiltInId::imageAtomicMax_UImageCube1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19326,7 +18409,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01f00D00D(
+constexpr const TFunction imageAtomicMax_01f00D00D(
     BuiltInId::imageAtomicMax_ImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19335,7 +18418,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01g00D00D(
+constexpr const TFunction imageAtomicMax_01g00D00D(
     BuiltInId::imageAtomicMax_IImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19344,7 +18427,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01h00D00D(
+constexpr const TFunction imageAtomicMax_01h00D00D(
     BuiltInId::imageAtomicMax_UImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19353,7 +18436,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01E20D00D(
+constexpr const TFunction imageAtomicMax_01E20D00D(
     BuiltInId::imageAtomicMax_Image2DArray1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19362,7 +18445,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01F20D00D(
+constexpr const TFunction imageAtomicMax_01F20D00D(
     BuiltInId::imageAtomicMax_IImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19371,7 +18454,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01G20D00D(
+constexpr const TFunction imageAtomicMax_01G20D00D(
     BuiltInId::imageAtomicMax_UImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19380,7 +18463,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01Z20D00D(
+constexpr const TFunction imageAtomicMax_01Z20D00D(
     BuiltInId::imageAtomicMax_ImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19389,7 +18472,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01a20D00D(
+constexpr const TFunction imageAtomicMax_01a20D00D(
     BuiltInId::imageAtomicMax_IImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19398,7 +18481,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01b20D00D(
+constexpr const TFunction imageAtomicMax_01b20D00D(
     BuiltInId::imageAtomicMax_UImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19407,7 +18490,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01K00D00D(
+constexpr const TFunction imageAtomicMax_01K00D00D(
     BuiltInId::imageAtomicMax_Image1D1_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19416,7 +18499,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01L00D00D(
+constexpr const TFunction imageAtomicMax_01L00D00D(
     BuiltInId::imageAtomicMax_IImage1D1_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19425,7 +18508,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01M00D00D(
+constexpr const TFunction imageAtomicMax_01M00D00D(
     BuiltInId::imageAtomicMax_UImage1D1_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19434,7 +18517,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01N10D00D(
+constexpr const TFunction imageAtomicMax_01N10D00D(
     BuiltInId::imageAtomicMax_Image1DArray1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19443,7 +18526,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01O10D00D(
+constexpr const TFunction imageAtomicMax_01O10D00D(
     BuiltInId::imageAtomicMax_IImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19452,7 +18535,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01P10D00D(
+constexpr const TFunction imageAtomicMax_01P10D00D(
     BuiltInId::imageAtomicMax_UImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19461,7 +18544,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01W10D00D(
+constexpr const TFunction imageAtomicMax_01W10D00D(
     BuiltInId::imageAtomicMax_Image2DRect1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19470,7 +18553,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01X10D00D(
+constexpr const TFunction imageAtomicMax_01X10D00D(
     BuiltInId::imageAtomicMax_IImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19479,7 +18562,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01Y10D00D(
+constexpr const TFunction imageAtomicMax_01Y10D00D(
     BuiltInId::imageAtomicMax_UImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19488,7 +18571,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01Q10D00D00D(
+constexpr const TFunction imageAtomicMax_01Q10D00D00D(
     BuiltInId::imageAtomicMax_Image2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19497,7 +18580,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01R10D00D00D(
+constexpr const TFunction imageAtomicMax_01R10D00D00D(
     BuiltInId::imageAtomicMax_IImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19506,7 +18589,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01S10D00D00D(
+constexpr const TFunction imageAtomicMax_01S10D00D00D(
     BuiltInId::imageAtomicMax_UImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19515,7 +18598,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01T20D00D00D(
+constexpr const TFunction imageAtomicMax_01T20D00D00D(
     BuiltInId::imageAtomicMax_Image2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19524,7 +18607,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01U20D00D00D(
+constexpr const TFunction imageAtomicMax_01U20D00D00D(
     BuiltInId::imageAtomicMax_IImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19533,7 +18616,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicMax_01V20D00D00D(
+constexpr const TFunction imageAtomicMax_01V20D00D00D(
     BuiltInId::imageAtomicMax_UImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicMax,
     TExtension::UNDEFINED,
@@ -19542,7 +18625,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_00y10D00E(
+constexpr const TFunction imageAtomicAnd_00y10D00E(
     BuiltInId::imageAtomicAnd_Image2D1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19551,7 +18634,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_00z10D00E(
+constexpr const TFunction imageAtomicAnd_00z10D00E(
     BuiltInId::imageAtomicAnd_IImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19560,7 +18643,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01A10D00E(
+constexpr const TFunction imageAtomicAnd_01A10D00E(
     BuiltInId::imageAtomicAnd_UImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19569,7 +18652,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01B20D00E(
+constexpr const TFunction imageAtomicAnd_01B20D00E(
     BuiltInId::imageAtomicAnd_Image3D1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19578,7 +18661,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01C20D00E(
+constexpr const TFunction imageAtomicAnd_01C20D00E(
     BuiltInId::imageAtomicAnd_IImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19587,7 +18670,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01D20D00E(
+constexpr const TFunction imageAtomicAnd_01D20D00E(
     BuiltInId::imageAtomicAnd_UImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19596,7 +18679,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01H20D00E(
+constexpr const TFunction imageAtomicAnd_01H20D00E(
     BuiltInId::imageAtomicAnd_ImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19605,7 +18688,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01I20D00E(
+constexpr const TFunction imageAtomicAnd_01I20D00E(
     BuiltInId::imageAtomicAnd_IImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19614,7 +18697,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01J20D00E(
+constexpr const TFunction imageAtomicAnd_01J20D00E(
     BuiltInId::imageAtomicAnd_UImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19623,7 +18706,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01f00D00E(
+constexpr const TFunction imageAtomicAnd_01f00D00E(
     BuiltInId::imageAtomicAnd_ImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19632,7 +18715,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01g00D00E(
+constexpr const TFunction imageAtomicAnd_01g00D00E(
     BuiltInId::imageAtomicAnd_IImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19641,7 +18724,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01h00D00E(
+constexpr const TFunction imageAtomicAnd_01h00D00E(
     BuiltInId::imageAtomicAnd_UImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19650,7 +18733,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01E20D00E(
+constexpr const TFunction imageAtomicAnd_01E20D00E(
     BuiltInId::imageAtomicAnd_Image2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19659,7 +18742,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01F20D00E(
+constexpr const TFunction imageAtomicAnd_01F20D00E(
     BuiltInId::imageAtomicAnd_IImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19668,7 +18751,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01G20D00E(
+constexpr const TFunction imageAtomicAnd_01G20D00E(
     BuiltInId::imageAtomicAnd_UImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19677,7 +18760,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01Z20D00E(
+constexpr const TFunction imageAtomicAnd_01Z20D00E(
     BuiltInId::imageAtomicAnd_ImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19686,7 +18769,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01a20D00E(
+constexpr const TFunction imageAtomicAnd_01a20D00E(
     BuiltInId::imageAtomicAnd_IImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19695,7 +18778,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01b20D00E(
+constexpr const TFunction imageAtomicAnd_01b20D00E(
     BuiltInId::imageAtomicAnd_UImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19704,7 +18787,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01K00D00E(
+constexpr const TFunction imageAtomicAnd_01K00D00E(
     BuiltInId::imageAtomicAnd_Image1D1_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19713,7 +18796,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01L00D00E(
+constexpr const TFunction imageAtomicAnd_01L00D00E(
     BuiltInId::imageAtomicAnd_IImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19722,7 +18805,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01M00D00E(
+constexpr const TFunction imageAtomicAnd_01M00D00E(
     BuiltInId::imageAtomicAnd_UImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19731,7 +18814,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01N10D00E(
+constexpr const TFunction imageAtomicAnd_01N10D00E(
     BuiltInId::imageAtomicAnd_Image1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19740,7 +18823,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01O10D00E(
+constexpr const TFunction imageAtomicAnd_01O10D00E(
     BuiltInId::imageAtomicAnd_IImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19749,7 +18832,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01P10D00E(
+constexpr const TFunction imageAtomicAnd_01P10D00E(
     BuiltInId::imageAtomicAnd_UImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19758,7 +18841,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01W10D00E(
+constexpr const TFunction imageAtomicAnd_01W10D00E(
     BuiltInId::imageAtomicAnd_Image2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19767,7 +18850,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01X10D00E(
+constexpr const TFunction imageAtomicAnd_01X10D00E(
     BuiltInId::imageAtomicAnd_IImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19776,7 +18859,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01Y10D00E(
+constexpr const TFunction imageAtomicAnd_01Y10D00E(
     BuiltInId::imageAtomicAnd_UImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19785,7 +18868,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01Q10D00D00E(
+constexpr const TFunction imageAtomicAnd_01Q10D00D00E(
     BuiltInId::imageAtomicAnd_Image2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19794,7 +18877,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01R10D00D00E(
+constexpr const TFunction imageAtomicAnd_01R10D00D00E(
     BuiltInId::imageAtomicAnd_IImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19803,7 +18886,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01S10D00D00E(
+constexpr const TFunction imageAtomicAnd_01S10D00D00E(
     BuiltInId::imageAtomicAnd_UImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19812,7 +18895,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01T20D00D00E(
+constexpr const TFunction imageAtomicAnd_01T20D00D00E(
     BuiltInId::imageAtomicAnd_Image2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19821,7 +18904,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01U20D00D00E(
+constexpr const TFunction imageAtomicAnd_01U20D00D00E(
     BuiltInId::imageAtomicAnd_IImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19830,7 +18913,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01V20D00D00E(
+constexpr const TFunction imageAtomicAnd_01V20D00D00E(
     BuiltInId::imageAtomicAnd_UImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19839,7 +18922,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_00y10D00D(
+constexpr const TFunction imageAtomicAnd_00y10D00D(
     BuiltInId::imageAtomicAnd_Image2D1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19848,7 +18931,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_00z10D00D(
+constexpr const TFunction imageAtomicAnd_00z10D00D(
     BuiltInId::imageAtomicAnd_IImage2D1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19857,7 +18940,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01A10D00D(
+constexpr const TFunction imageAtomicAnd_01A10D00D(
     BuiltInId::imageAtomicAnd_UImage2D1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19866,7 +18949,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01B20D00D(
+constexpr const TFunction imageAtomicAnd_01B20D00D(
     BuiltInId::imageAtomicAnd_Image3D1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19875,7 +18958,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01C20D00D(
+constexpr const TFunction imageAtomicAnd_01C20D00D(
     BuiltInId::imageAtomicAnd_IImage3D1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19884,7 +18967,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01D20D00D(
+constexpr const TFunction imageAtomicAnd_01D20D00D(
     BuiltInId::imageAtomicAnd_UImage3D1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19893,7 +18976,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01H20D00D(
+constexpr const TFunction imageAtomicAnd_01H20D00D(
     BuiltInId::imageAtomicAnd_ImageCube1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19902,7 +18985,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01I20D00D(
+constexpr const TFunction imageAtomicAnd_01I20D00D(
     BuiltInId::imageAtomicAnd_IImageCube1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19911,7 +18994,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01J20D00D(
+constexpr const TFunction imageAtomicAnd_01J20D00D(
     BuiltInId::imageAtomicAnd_UImageCube1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19920,7 +19003,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01f00D00D(
+constexpr const TFunction imageAtomicAnd_01f00D00D(
     BuiltInId::imageAtomicAnd_ImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19929,7 +19012,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01g00D00D(
+constexpr const TFunction imageAtomicAnd_01g00D00D(
     BuiltInId::imageAtomicAnd_IImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19938,7 +19021,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01h00D00D(
+constexpr const TFunction imageAtomicAnd_01h00D00D(
     BuiltInId::imageAtomicAnd_UImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19947,7 +19030,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01E20D00D(
+constexpr const TFunction imageAtomicAnd_01E20D00D(
     BuiltInId::imageAtomicAnd_Image2DArray1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19956,7 +19039,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01F20D00D(
+constexpr const TFunction imageAtomicAnd_01F20D00D(
     BuiltInId::imageAtomicAnd_IImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19965,7 +19048,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01G20D00D(
+constexpr const TFunction imageAtomicAnd_01G20D00D(
     BuiltInId::imageAtomicAnd_UImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19974,7 +19057,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01Z20D00D(
+constexpr const TFunction imageAtomicAnd_01Z20D00D(
     BuiltInId::imageAtomicAnd_ImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19983,7 +19066,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01a20D00D(
+constexpr const TFunction imageAtomicAnd_01a20D00D(
     BuiltInId::imageAtomicAnd_IImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -19992,7 +19075,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01b20D00D(
+constexpr const TFunction imageAtomicAnd_01b20D00D(
     BuiltInId::imageAtomicAnd_UImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20001,7 +19084,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01K00D00D(
+constexpr const TFunction imageAtomicAnd_01K00D00D(
     BuiltInId::imageAtomicAnd_Image1D1_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20010,7 +19093,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01L00D00D(
+constexpr const TFunction imageAtomicAnd_01L00D00D(
     BuiltInId::imageAtomicAnd_IImage1D1_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20019,7 +19102,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01M00D00D(
+constexpr const TFunction imageAtomicAnd_01M00D00D(
     BuiltInId::imageAtomicAnd_UImage1D1_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20028,7 +19111,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01N10D00D(
+constexpr const TFunction imageAtomicAnd_01N10D00D(
     BuiltInId::imageAtomicAnd_Image1DArray1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20037,7 +19120,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01O10D00D(
+constexpr const TFunction imageAtomicAnd_01O10D00D(
     BuiltInId::imageAtomicAnd_IImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20046,7 +19129,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01P10D00D(
+constexpr const TFunction imageAtomicAnd_01P10D00D(
     BuiltInId::imageAtomicAnd_UImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20055,7 +19138,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01W10D00D(
+constexpr const TFunction imageAtomicAnd_01W10D00D(
     BuiltInId::imageAtomicAnd_Image2DRect1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20064,7 +19147,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01X10D00D(
+constexpr const TFunction imageAtomicAnd_01X10D00D(
     BuiltInId::imageAtomicAnd_IImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20073,7 +19156,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01Y10D00D(
+constexpr const TFunction imageAtomicAnd_01Y10D00D(
     BuiltInId::imageAtomicAnd_UImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20082,7 +19165,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01Q10D00D00D(
+constexpr const TFunction imageAtomicAnd_01Q10D00D00D(
     BuiltInId::imageAtomicAnd_Image2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20091,7 +19174,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01R10D00D00D(
+constexpr const TFunction imageAtomicAnd_01R10D00D00D(
     BuiltInId::imageAtomicAnd_IImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20100,7 +19183,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01S10D00D00D(
+constexpr const TFunction imageAtomicAnd_01S10D00D00D(
     BuiltInId::imageAtomicAnd_UImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20109,7 +19192,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01T20D00D00D(
+constexpr const TFunction imageAtomicAnd_01T20D00D00D(
     BuiltInId::imageAtomicAnd_Image2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20118,7 +19201,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01U20D00D00D(
+constexpr const TFunction imageAtomicAnd_01U20D00D00D(
     BuiltInId::imageAtomicAnd_IImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20127,7 +19210,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicAnd_01V20D00D00D(
+constexpr const TFunction imageAtomicAnd_01V20D00D00D(
     BuiltInId::imageAtomicAnd_UImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicAnd,
     TExtension::UNDEFINED,
@@ -20136,7 +19219,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_00y10D00E(
+constexpr const TFunction imageAtomicOr_00y10D00E(
     BuiltInId::imageAtomicOr_Image2D1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20145,7 +19228,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_00z10D00E(
+constexpr const TFunction imageAtomicOr_00z10D00E(
     BuiltInId::imageAtomicOr_IImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20154,7 +19237,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01A10D00E(
+constexpr const TFunction imageAtomicOr_01A10D00E(
     BuiltInId::imageAtomicOr_UImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20163,7 +19246,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01B20D00E(
+constexpr const TFunction imageAtomicOr_01B20D00E(
     BuiltInId::imageAtomicOr_Image3D1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20172,7 +19255,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01C20D00E(
+constexpr const TFunction imageAtomicOr_01C20D00E(
     BuiltInId::imageAtomicOr_IImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20181,7 +19264,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01D20D00E(
+constexpr const TFunction imageAtomicOr_01D20D00E(
     BuiltInId::imageAtomicOr_UImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20190,7 +19273,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01H20D00E(
+constexpr const TFunction imageAtomicOr_01H20D00E(
     BuiltInId::imageAtomicOr_ImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20199,7 +19282,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01I20D00E(
+constexpr const TFunction imageAtomicOr_01I20D00E(
     BuiltInId::imageAtomicOr_IImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20208,7 +19291,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01J20D00E(
+constexpr const TFunction imageAtomicOr_01J20D00E(
     BuiltInId::imageAtomicOr_UImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20217,7 +19300,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01f00D00E(
+constexpr const TFunction imageAtomicOr_01f00D00E(
     BuiltInId::imageAtomicOr_ImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20226,7 +19309,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01g00D00E(
+constexpr const TFunction imageAtomicOr_01g00D00E(
     BuiltInId::imageAtomicOr_IImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20235,7 +19318,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01h00D00E(
+constexpr const TFunction imageAtomicOr_01h00D00E(
     BuiltInId::imageAtomicOr_UImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20244,7 +19327,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01E20D00E(
+constexpr const TFunction imageAtomicOr_01E20D00E(
     BuiltInId::imageAtomicOr_Image2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20253,7 +19336,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01F20D00E(
+constexpr const TFunction imageAtomicOr_01F20D00E(
     BuiltInId::imageAtomicOr_IImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20262,7 +19345,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01G20D00E(
+constexpr const TFunction imageAtomicOr_01G20D00E(
     BuiltInId::imageAtomicOr_UImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20271,7 +19354,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01Z20D00E(
+constexpr const TFunction imageAtomicOr_01Z20D00E(
     BuiltInId::imageAtomicOr_ImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20280,7 +19363,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01a20D00E(
+constexpr const TFunction imageAtomicOr_01a20D00E(
     BuiltInId::imageAtomicOr_IImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20289,7 +19372,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01b20D00E(
+constexpr const TFunction imageAtomicOr_01b20D00E(
     BuiltInId::imageAtomicOr_UImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20298,7 +19381,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01K00D00E(
+constexpr const TFunction imageAtomicOr_01K00D00E(
     BuiltInId::imageAtomicOr_Image1D1_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20307,7 +19390,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01L00D00E(
+constexpr const TFunction imageAtomicOr_01L00D00E(
     BuiltInId::imageAtomicOr_IImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20316,7 +19399,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01M00D00E(
+constexpr const TFunction imageAtomicOr_01M00D00E(
     BuiltInId::imageAtomicOr_UImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20325,7 +19408,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01N10D00E(
+constexpr const TFunction imageAtomicOr_01N10D00E(
     BuiltInId::imageAtomicOr_Image1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20334,7 +19417,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01O10D00E(
+constexpr const TFunction imageAtomicOr_01O10D00E(
     BuiltInId::imageAtomicOr_IImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20343,7 +19426,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01P10D00E(
+constexpr const TFunction imageAtomicOr_01P10D00E(
     BuiltInId::imageAtomicOr_UImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20352,7 +19435,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01W10D00E(
+constexpr const TFunction imageAtomicOr_01W10D00E(
     BuiltInId::imageAtomicOr_Image2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20361,7 +19444,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01X10D00E(
+constexpr const TFunction imageAtomicOr_01X10D00E(
     BuiltInId::imageAtomicOr_IImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20370,7 +19453,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01Y10D00E(
+constexpr const TFunction imageAtomicOr_01Y10D00E(
     BuiltInId::imageAtomicOr_UImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20379,7 +19462,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01Q10D00D00E(
+constexpr const TFunction imageAtomicOr_01Q10D00D00E(
     BuiltInId::imageAtomicOr_Image2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20388,7 +19471,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01R10D00D00E(
+constexpr const TFunction imageAtomicOr_01R10D00D00E(
     BuiltInId::imageAtomicOr_IImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20397,7 +19480,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01S10D00D00E(
+constexpr const TFunction imageAtomicOr_01S10D00D00E(
     BuiltInId::imageAtomicOr_UImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20406,7 +19489,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01T20D00D00E(
+constexpr const TFunction imageAtomicOr_01T20D00D00E(
     BuiltInId::imageAtomicOr_Image2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20415,7 +19498,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01U20D00D00E(
+constexpr const TFunction imageAtomicOr_01U20D00D00E(
     BuiltInId::imageAtomicOr_IImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20424,7 +19507,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01V20D00D00E(
+constexpr const TFunction imageAtomicOr_01V20D00D00E(
     BuiltInId::imageAtomicOr_UImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20433,7 +19516,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_00y10D00D(
+constexpr const TFunction imageAtomicOr_00y10D00D(
     BuiltInId::imageAtomicOr_Image2D1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20442,7 +19525,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_00z10D00D(
+constexpr const TFunction imageAtomicOr_00z10D00D(
     BuiltInId::imageAtomicOr_IImage2D1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20451,7 +19534,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01A10D00D(
+constexpr const TFunction imageAtomicOr_01A10D00D(
     BuiltInId::imageAtomicOr_UImage2D1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20460,7 +19543,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01B20D00D(
+constexpr const TFunction imageAtomicOr_01B20D00D(
     BuiltInId::imageAtomicOr_Image3D1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20469,7 +19552,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01C20D00D(
+constexpr const TFunction imageAtomicOr_01C20D00D(
     BuiltInId::imageAtomicOr_IImage3D1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20478,7 +19561,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01D20D00D(
+constexpr const TFunction imageAtomicOr_01D20D00D(
     BuiltInId::imageAtomicOr_UImage3D1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20487,7 +19570,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01H20D00D(
+constexpr const TFunction imageAtomicOr_01H20D00D(
     BuiltInId::imageAtomicOr_ImageCube1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20496,7 +19579,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01I20D00D(
+constexpr const TFunction imageAtomicOr_01I20D00D(
     BuiltInId::imageAtomicOr_IImageCube1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20505,7 +19588,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01J20D00D(
+constexpr const TFunction imageAtomicOr_01J20D00D(
     BuiltInId::imageAtomicOr_UImageCube1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20514,7 +19597,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01f00D00D(
+constexpr const TFunction imageAtomicOr_01f00D00D(
     BuiltInId::imageAtomicOr_ImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20523,7 +19606,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01g00D00D(
+constexpr const TFunction imageAtomicOr_01g00D00D(
     BuiltInId::imageAtomicOr_IImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20532,7 +19615,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01h00D00D(
+constexpr const TFunction imageAtomicOr_01h00D00D(
     BuiltInId::imageAtomicOr_UImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20541,7 +19624,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01E20D00D(
+constexpr const TFunction imageAtomicOr_01E20D00D(
     BuiltInId::imageAtomicOr_Image2DArray1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20550,7 +19633,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01F20D00D(
+constexpr const TFunction imageAtomicOr_01F20D00D(
     BuiltInId::imageAtomicOr_IImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20559,7 +19642,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01G20D00D(
+constexpr const TFunction imageAtomicOr_01G20D00D(
     BuiltInId::imageAtomicOr_UImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20568,7 +19651,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01Z20D00D(
+constexpr const TFunction imageAtomicOr_01Z20D00D(
     BuiltInId::imageAtomicOr_ImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20577,7 +19660,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01a20D00D(
+constexpr const TFunction imageAtomicOr_01a20D00D(
     BuiltInId::imageAtomicOr_IImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20586,7 +19669,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01b20D00D(
+constexpr const TFunction imageAtomicOr_01b20D00D(
     BuiltInId::imageAtomicOr_UImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20595,7 +19678,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01K00D00D(
+constexpr const TFunction imageAtomicOr_01K00D00D(
     BuiltInId::imageAtomicOr_Image1D1_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20604,7 +19687,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01L00D00D(
+constexpr const TFunction imageAtomicOr_01L00D00D(
     BuiltInId::imageAtomicOr_IImage1D1_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20613,7 +19696,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01M00D00D(
+constexpr const TFunction imageAtomicOr_01M00D00D(
     BuiltInId::imageAtomicOr_UImage1D1_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20622,7 +19705,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01N10D00D(
+constexpr const TFunction imageAtomicOr_01N10D00D(
     BuiltInId::imageAtomicOr_Image1DArray1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20631,7 +19714,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01O10D00D(
+constexpr const TFunction imageAtomicOr_01O10D00D(
     BuiltInId::imageAtomicOr_IImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20640,7 +19723,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01P10D00D(
+constexpr const TFunction imageAtomicOr_01P10D00D(
     BuiltInId::imageAtomicOr_UImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20649,7 +19732,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01W10D00D(
+constexpr const TFunction imageAtomicOr_01W10D00D(
     BuiltInId::imageAtomicOr_Image2DRect1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20658,7 +19741,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01X10D00D(
+constexpr const TFunction imageAtomicOr_01X10D00D(
     BuiltInId::imageAtomicOr_IImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20667,7 +19750,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01Y10D00D(
+constexpr const TFunction imageAtomicOr_01Y10D00D(
     BuiltInId::imageAtomicOr_UImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20676,7 +19759,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01Q10D00D00D(
+constexpr const TFunction imageAtomicOr_01Q10D00D00D(
     BuiltInId::imageAtomicOr_Image2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20685,7 +19768,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01R10D00D00D(
+constexpr const TFunction imageAtomicOr_01R10D00D00D(
     BuiltInId::imageAtomicOr_IImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20694,7 +19777,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01S10D00D00D(
+constexpr const TFunction imageAtomicOr_01S10D00D00D(
     BuiltInId::imageAtomicOr_UImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20703,7 +19786,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01T20D00D00D(
+constexpr const TFunction imageAtomicOr_01T20D00D00D(
     BuiltInId::imageAtomicOr_Image2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20712,7 +19795,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01U20D00D00D(
+constexpr const TFunction imageAtomicOr_01U20D00D00D(
     BuiltInId::imageAtomicOr_IImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20721,7 +19804,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicOr_01V20D00D00D(
+constexpr const TFunction imageAtomicOr_01V20D00D00D(
     BuiltInId::imageAtomicOr_UImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicOr,
     TExtension::UNDEFINED,
@@ -20730,7 +19813,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_00y10D00E(
+constexpr const TFunction imageAtomicXor_00y10D00E(
     BuiltInId::imageAtomicXor_Image2D1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20739,7 +19822,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_00z10D00E(
+constexpr const TFunction imageAtomicXor_00z10D00E(
     BuiltInId::imageAtomicXor_IImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20748,7 +19831,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01A10D00E(
+constexpr const TFunction imageAtomicXor_01A10D00E(
     BuiltInId::imageAtomicXor_UImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20757,7 +19840,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01B20D00E(
+constexpr const TFunction imageAtomicXor_01B20D00E(
     BuiltInId::imageAtomicXor_Image3D1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20766,7 +19849,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01C20D00E(
+constexpr const TFunction imageAtomicXor_01C20D00E(
     BuiltInId::imageAtomicXor_IImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20775,7 +19858,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01D20D00E(
+constexpr const TFunction imageAtomicXor_01D20D00E(
     BuiltInId::imageAtomicXor_UImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20784,7 +19867,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01H20D00E(
+constexpr const TFunction imageAtomicXor_01H20D00E(
     BuiltInId::imageAtomicXor_ImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20793,7 +19876,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01I20D00E(
+constexpr const TFunction imageAtomicXor_01I20D00E(
     BuiltInId::imageAtomicXor_IImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20802,7 +19885,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01J20D00E(
+constexpr const TFunction imageAtomicXor_01J20D00E(
     BuiltInId::imageAtomicXor_UImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20811,7 +19894,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01f00D00E(
+constexpr const TFunction imageAtomicXor_01f00D00E(
     BuiltInId::imageAtomicXor_ImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20820,7 +19903,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01g00D00E(
+constexpr const TFunction imageAtomicXor_01g00D00E(
     BuiltInId::imageAtomicXor_IImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20829,7 +19912,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01h00D00E(
+constexpr const TFunction imageAtomicXor_01h00D00E(
     BuiltInId::imageAtomicXor_UImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20838,7 +19921,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01E20D00E(
+constexpr const TFunction imageAtomicXor_01E20D00E(
     BuiltInId::imageAtomicXor_Image2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20847,7 +19930,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01F20D00E(
+constexpr const TFunction imageAtomicXor_01F20D00E(
     BuiltInId::imageAtomicXor_IImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20856,7 +19939,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01G20D00E(
+constexpr const TFunction imageAtomicXor_01G20D00E(
     BuiltInId::imageAtomicXor_UImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20865,7 +19948,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01Z20D00E(
+constexpr const TFunction imageAtomicXor_01Z20D00E(
     BuiltInId::imageAtomicXor_ImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20874,7 +19957,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01a20D00E(
+constexpr const TFunction imageAtomicXor_01a20D00E(
     BuiltInId::imageAtomicXor_IImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20883,7 +19966,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01b20D00E(
+constexpr const TFunction imageAtomicXor_01b20D00E(
     BuiltInId::imageAtomicXor_UImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20892,7 +19975,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01K00D00E(
+constexpr const TFunction imageAtomicXor_01K00D00E(
     BuiltInId::imageAtomicXor_Image1D1_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20901,7 +19984,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01L00D00E(
+constexpr const TFunction imageAtomicXor_01L00D00E(
     BuiltInId::imageAtomicXor_IImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20910,7 +19993,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01M00D00E(
+constexpr const TFunction imageAtomicXor_01M00D00E(
     BuiltInId::imageAtomicXor_UImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20919,7 +20002,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01N10D00E(
+constexpr const TFunction imageAtomicXor_01N10D00E(
     BuiltInId::imageAtomicXor_Image1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20928,7 +20011,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01O10D00E(
+constexpr const TFunction imageAtomicXor_01O10D00E(
     BuiltInId::imageAtomicXor_IImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20937,7 +20020,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01P10D00E(
+constexpr const TFunction imageAtomicXor_01P10D00E(
     BuiltInId::imageAtomicXor_UImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20946,7 +20029,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01W10D00E(
+constexpr const TFunction imageAtomicXor_01W10D00E(
     BuiltInId::imageAtomicXor_Image2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20955,7 +20038,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01X10D00E(
+constexpr const TFunction imageAtomicXor_01X10D00E(
     BuiltInId::imageAtomicXor_IImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20964,7 +20047,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01Y10D00E(
+constexpr const TFunction imageAtomicXor_01Y10D00E(
     BuiltInId::imageAtomicXor_UImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20973,7 +20056,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01Q10D00D00E(
+constexpr const TFunction imageAtomicXor_01Q10D00D00E(
     BuiltInId::imageAtomicXor_Image2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20982,7 +20065,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01R10D00D00E(
+constexpr const TFunction imageAtomicXor_01R10D00D00E(
     BuiltInId::imageAtomicXor_IImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -20991,7 +20074,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01S10D00D00E(
+constexpr const TFunction imageAtomicXor_01S10D00D00E(
     BuiltInId::imageAtomicXor_UImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21000,7 +20083,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01T20D00D00E(
+constexpr const TFunction imageAtomicXor_01T20D00D00E(
     BuiltInId::imageAtomicXor_Image2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21009,7 +20092,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01U20D00D00E(
+constexpr const TFunction imageAtomicXor_01U20D00D00E(
     BuiltInId::imageAtomicXor_IImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21018,7 +20101,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01V20D00D00E(
+constexpr const TFunction imageAtomicXor_01V20D00D00E(
     BuiltInId::imageAtomicXor_UImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21027,7 +20110,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_00y10D00D(
+constexpr const TFunction imageAtomicXor_00y10D00D(
     BuiltInId::imageAtomicXor_Image2D1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21036,7 +20119,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_00z10D00D(
+constexpr const TFunction imageAtomicXor_00z10D00D(
     BuiltInId::imageAtomicXor_IImage2D1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21045,7 +20128,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01A10D00D(
+constexpr const TFunction imageAtomicXor_01A10D00D(
     BuiltInId::imageAtomicXor_UImage2D1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21054,7 +20137,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01B20D00D(
+constexpr const TFunction imageAtomicXor_01B20D00D(
     BuiltInId::imageAtomicXor_Image3D1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21063,7 +20146,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01C20D00D(
+constexpr const TFunction imageAtomicXor_01C20D00D(
     BuiltInId::imageAtomicXor_IImage3D1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21072,7 +20155,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01D20D00D(
+constexpr const TFunction imageAtomicXor_01D20D00D(
     BuiltInId::imageAtomicXor_UImage3D1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21081,7 +20164,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01H20D00D(
+constexpr const TFunction imageAtomicXor_01H20D00D(
     BuiltInId::imageAtomicXor_ImageCube1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21090,7 +20173,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01I20D00D(
+constexpr const TFunction imageAtomicXor_01I20D00D(
     BuiltInId::imageAtomicXor_IImageCube1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21099,7 +20182,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01J20D00D(
+constexpr const TFunction imageAtomicXor_01J20D00D(
     BuiltInId::imageAtomicXor_UImageCube1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21108,7 +20191,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01f00D00D(
+constexpr const TFunction imageAtomicXor_01f00D00D(
     BuiltInId::imageAtomicXor_ImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21117,7 +20200,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01g00D00D(
+constexpr const TFunction imageAtomicXor_01g00D00D(
     BuiltInId::imageAtomicXor_IImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21126,7 +20209,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01h00D00D(
+constexpr const TFunction imageAtomicXor_01h00D00D(
     BuiltInId::imageAtomicXor_UImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21135,7 +20218,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01E20D00D(
+constexpr const TFunction imageAtomicXor_01E20D00D(
     BuiltInId::imageAtomicXor_Image2DArray1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21144,7 +20227,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01F20D00D(
+constexpr const TFunction imageAtomicXor_01F20D00D(
     BuiltInId::imageAtomicXor_IImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21153,7 +20236,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01G20D00D(
+constexpr const TFunction imageAtomicXor_01G20D00D(
     BuiltInId::imageAtomicXor_UImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21162,7 +20245,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01Z20D00D(
+constexpr const TFunction imageAtomicXor_01Z20D00D(
     BuiltInId::imageAtomicXor_ImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21171,7 +20254,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01a20D00D(
+constexpr const TFunction imageAtomicXor_01a20D00D(
     BuiltInId::imageAtomicXor_IImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21180,7 +20263,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01b20D00D(
+constexpr const TFunction imageAtomicXor_01b20D00D(
     BuiltInId::imageAtomicXor_UImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21189,7 +20272,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01K00D00D(
+constexpr const TFunction imageAtomicXor_01K00D00D(
     BuiltInId::imageAtomicXor_Image1D1_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21198,7 +20281,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01L00D00D(
+constexpr const TFunction imageAtomicXor_01L00D00D(
     BuiltInId::imageAtomicXor_IImage1D1_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21207,7 +20290,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01M00D00D(
+constexpr const TFunction imageAtomicXor_01M00D00D(
     BuiltInId::imageAtomicXor_UImage1D1_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21216,7 +20299,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01N10D00D(
+constexpr const TFunction imageAtomicXor_01N10D00D(
     BuiltInId::imageAtomicXor_Image1DArray1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21225,7 +20308,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01O10D00D(
+constexpr const TFunction imageAtomicXor_01O10D00D(
     BuiltInId::imageAtomicXor_IImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21234,7 +20317,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01P10D00D(
+constexpr const TFunction imageAtomicXor_01P10D00D(
     BuiltInId::imageAtomicXor_UImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21243,7 +20326,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01W10D00D(
+constexpr const TFunction imageAtomicXor_01W10D00D(
     BuiltInId::imageAtomicXor_Image2DRect1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21252,7 +20335,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01X10D00D(
+constexpr const TFunction imageAtomicXor_01X10D00D(
     BuiltInId::imageAtomicXor_IImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21261,7 +20344,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01Y10D00D(
+constexpr const TFunction imageAtomicXor_01Y10D00D(
     BuiltInId::imageAtomicXor_UImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21270,7 +20353,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01Q10D00D00D(
+constexpr const TFunction imageAtomicXor_01Q10D00D00D(
     BuiltInId::imageAtomicXor_Image2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21279,7 +20362,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01R10D00D00D(
+constexpr const TFunction imageAtomicXor_01R10D00D00D(
     BuiltInId::imageAtomicXor_IImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21288,7 +20371,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01S10D00D00D(
+constexpr const TFunction imageAtomicXor_01S10D00D00D(
     BuiltInId::imageAtomicXor_UImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21297,7 +20380,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01T20D00D00D(
+constexpr const TFunction imageAtomicXor_01T20D00D00D(
     BuiltInId::imageAtomicXor_Image2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21306,7 +20389,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01U20D00D00D(
+constexpr const TFunction imageAtomicXor_01U20D00D00D(
     BuiltInId::imageAtomicXor_IImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21315,7 +20398,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicXor_01V20D00D00D(
+constexpr const TFunction imageAtomicXor_01V20D00D00D(
     BuiltInId::imageAtomicXor_UImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicXor,
     TExtension::UNDEFINED,
@@ -21324,7 +20407,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_00y10D00E(
+constexpr const TFunction imageAtomicExchange_00y10D00E(
     BuiltInId::imageAtomicExchange_Image2D1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21333,7 +20416,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_00z10D00E(
+constexpr const TFunction imageAtomicExchange_00z10D00E(
     BuiltInId::imageAtomicExchange_IImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21342,7 +20425,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01A10D00E(
+constexpr const TFunction imageAtomicExchange_01A10D00E(
     BuiltInId::imageAtomicExchange_UImage2D1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21351,7 +20434,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01B20D00E(
+constexpr const TFunction imageAtomicExchange_01B20D00E(
     BuiltInId::imageAtomicExchange_Image3D1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21360,7 +20443,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01C20D00E(
+constexpr const TFunction imageAtomicExchange_01C20D00E(
     BuiltInId::imageAtomicExchange_IImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21369,7 +20452,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01D20D00E(
+constexpr const TFunction imageAtomicExchange_01D20D00E(
     BuiltInId::imageAtomicExchange_UImage3D1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21378,7 +20461,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01H20D00E(
+constexpr const TFunction imageAtomicExchange_01H20D00E(
     BuiltInId::imageAtomicExchange_ImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21387,7 +20470,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01I20D00E(
+constexpr const TFunction imageAtomicExchange_01I20D00E(
     BuiltInId::imageAtomicExchange_IImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21396,7 +20479,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01J20D00E(
+constexpr const TFunction imageAtomicExchange_01J20D00E(
     BuiltInId::imageAtomicExchange_UImageCube1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21405,7 +20488,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01f00D00E(
+constexpr const TFunction imageAtomicExchange_01f00D00E(
     BuiltInId::imageAtomicExchange_ImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21414,7 +20497,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01g00D00E(
+constexpr const TFunction imageAtomicExchange_01g00D00E(
     BuiltInId::imageAtomicExchange_IImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21423,7 +20506,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01h00D00E(
+constexpr const TFunction imageAtomicExchange_01h00D00E(
     BuiltInId::imageAtomicExchange_UImageBuffer1_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21432,7 +20515,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01E20D00E(
+constexpr const TFunction imageAtomicExchange_01E20D00E(
     BuiltInId::imageAtomicExchange_Image2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21441,7 +20524,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01F20D00E(
+constexpr const TFunction imageAtomicExchange_01F20D00E(
     BuiltInId::imageAtomicExchange_IImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21450,7 +20533,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01G20D00E(
+constexpr const TFunction imageAtomicExchange_01G20D00E(
     BuiltInId::imageAtomicExchange_UImage2DArray1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21459,7 +20542,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Z20D00E(
+constexpr const TFunction imageAtomicExchange_01Z20D00E(
     BuiltInId::imageAtomicExchange_ImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21468,7 +20551,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01a20D00E(
+constexpr const TFunction imageAtomicExchange_01a20D00E(
     BuiltInId::imageAtomicExchange_IImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21477,7 +20560,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01b20D00E(
+constexpr const TFunction imageAtomicExchange_01b20D00E(
     BuiltInId::imageAtomicExchange_UImageCubeArray1_Int3_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21486,7 +20569,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01K00D00E(
+constexpr const TFunction imageAtomicExchange_01K00D00E(
     BuiltInId::imageAtomicExchange_Image1D1_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21495,7 +20578,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01L00D00E(
+constexpr const TFunction imageAtomicExchange_01L00D00E(
     BuiltInId::imageAtomicExchange_IImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21504,7 +20587,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01M00D00E(
+constexpr const TFunction imageAtomicExchange_01M00D00E(
     BuiltInId::imageAtomicExchange_UImage1D1_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21513,7 +20596,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01N10D00E(
+constexpr const TFunction imageAtomicExchange_01N10D00E(
     BuiltInId::imageAtomicExchange_Image1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21522,7 +20605,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01O10D00E(
+constexpr const TFunction imageAtomicExchange_01O10D00E(
     BuiltInId::imageAtomicExchange_IImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21531,7 +20614,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01P10D00E(
+constexpr const TFunction imageAtomicExchange_01P10D00E(
     BuiltInId::imageAtomicExchange_UImage1DArray1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21540,7 +20623,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01W10D00E(
+constexpr const TFunction imageAtomicExchange_01W10D00E(
     BuiltInId::imageAtomicExchange_Image2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21549,7 +20632,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01X10D00E(
+constexpr const TFunction imageAtomicExchange_01X10D00E(
     BuiltInId::imageAtomicExchange_IImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21558,7 +20641,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Y10D00E(
+constexpr const TFunction imageAtomicExchange_01Y10D00E(
     BuiltInId::imageAtomicExchange_UImage2DRect1_Int2_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21567,7 +20650,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Q10D00D00E(
+constexpr const TFunction imageAtomicExchange_01Q10D00D00E(
     BuiltInId::imageAtomicExchange_Image2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21576,7 +20659,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01R10D00D00E(
+constexpr const TFunction imageAtomicExchange_01R10D00D00E(
     BuiltInId::imageAtomicExchange_IImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21585,7 +20668,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01S10D00D00E(
+constexpr const TFunction imageAtomicExchange_01S10D00D00E(
     BuiltInId::imageAtomicExchange_UImage2DMS1_Int2_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21594,7 +20677,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01T20D00D00E(
+constexpr const TFunction imageAtomicExchange_01T20D00D00E(
     BuiltInId::imageAtomicExchange_Image2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21603,7 +20686,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01U20D00D00E(
+constexpr const TFunction imageAtomicExchange_01U20D00D00E(
     BuiltInId::imageAtomicExchange_IImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21612,7 +20695,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01V20D00D00E(
+constexpr const TFunction imageAtomicExchange_01V20D00D00E(
     BuiltInId::imageAtomicExchange_UImage2DMSArray1_Int3_Int1_UInt1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21621,7 +20704,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_00y10D00D(
+constexpr const TFunction imageAtomicExchange_00y10D00D(
     BuiltInId::imageAtomicExchange_Image2D1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21630,7 +20713,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_00z10D00D(
+constexpr const TFunction imageAtomicExchange_00z10D00D(
     BuiltInId::imageAtomicExchange_IImage2D1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21639,7 +20722,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01A10D00D(
+constexpr const TFunction imageAtomicExchange_01A10D00D(
     BuiltInId::imageAtomicExchange_UImage2D1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21648,7 +20731,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01B20D00D(
+constexpr const TFunction imageAtomicExchange_01B20D00D(
     BuiltInId::imageAtomicExchange_Image3D1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21657,7 +20740,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01C20D00D(
+constexpr const TFunction imageAtomicExchange_01C20D00D(
     BuiltInId::imageAtomicExchange_IImage3D1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21666,7 +20749,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01D20D00D(
+constexpr const TFunction imageAtomicExchange_01D20D00D(
     BuiltInId::imageAtomicExchange_UImage3D1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21675,7 +20758,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01H20D00D(
+constexpr const TFunction imageAtomicExchange_01H20D00D(
     BuiltInId::imageAtomicExchange_ImageCube1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21684,7 +20767,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01I20D00D(
+constexpr const TFunction imageAtomicExchange_01I20D00D(
     BuiltInId::imageAtomicExchange_IImageCube1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21693,7 +20776,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01J20D00D(
+constexpr const TFunction imageAtomicExchange_01J20D00D(
     BuiltInId::imageAtomicExchange_UImageCube1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21702,7 +20785,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01f00D00D(
+constexpr const TFunction imageAtomicExchange_01f00D00D(
     BuiltInId::imageAtomicExchange_ImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21711,7 +20794,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01g00D00D(
+constexpr const TFunction imageAtomicExchange_01g00D00D(
     BuiltInId::imageAtomicExchange_IImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21720,7 +20803,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01h00D00D(
+constexpr const TFunction imageAtomicExchange_01h00D00D(
     BuiltInId::imageAtomicExchange_UImageBuffer1_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21729,7 +20812,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01E20D00D(
+constexpr const TFunction imageAtomicExchange_01E20D00D(
     BuiltInId::imageAtomicExchange_Image2DArray1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21738,7 +20821,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01F20D00D(
+constexpr const TFunction imageAtomicExchange_01F20D00D(
     BuiltInId::imageAtomicExchange_IImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21747,7 +20830,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01G20D00D(
+constexpr const TFunction imageAtomicExchange_01G20D00D(
     BuiltInId::imageAtomicExchange_UImage2DArray1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21756,7 +20839,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Z20D00D(
+constexpr const TFunction imageAtomicExchange_01Z20D00D(
     BuiltInId::imageAtomicExchange_ImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21765,7 +20848,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01a20D00D(
+constexpr const TFunction imageAtomicExchange_01a20D00D(
     BuiltInId::imageAtomicExchange_IImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21774,7 +20857,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01b20D00D(
+constexpr const TFunction imageAtomicExchange_01b20D00D(
     BuiltInId::imageAtomicExchange_UImageCubeArray1_Int3_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21783,7 +20866,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01K00D00D(
+constexpr const TFunction imageAtomicExchange_01K00D00D(
     BuiltInId::imageAtomicExchange_Image1D1_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21792,7 +20875,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01L00D00D(
+constexpr const TFunction imageAtomicExchange_01L00D00D(
     BuiltInId::imageAtomicExchange_IImage1D1_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21801,7 +20884,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01M00D00D(
+constexpr const TFunction imageAtomicExchange_01M00D00D(
     BuiltInId::imageAtomicExchange_UImage1D1_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21810,7 +20893,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01N10D00D(
+constexpr const TFunction imageAtomicExchange_01N10D00D(
     BuiltInId::imageAtomicExchange_Image1DArray1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21819,7 +20902,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01O10D00D(
+constexpr const TFunction imageAtomicExchange_01O10D00D(
     BuiltInId::imageAtomicExchange_IImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21828,7 +20911,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01P10D00D(
+constexpr const TFunction imageAtomicExchange_01P10D00D(
     BuiltInId::imageAtomicExchange_UImage1DArray1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21837,7 +20920,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01W10D00D(
+constexpr const TFunction imageAtomicExchange_01W10D00D(
     BuiltInId::imageAtomicExchange_Image2DRect1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21846,7 +20929,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01X10D00D(
+constexpr const TFunction imageAtomicExchange_01X10D00D(
     BuiltInId::imageAtomicExchange_IImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21855,7 +20938,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Y10D00D(
+constexpr const TFunction imageAtomicExchange_01Y10D00D(
     BuiltInId::imageAtomicExchange_UImage2DRect1_Int2_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21864,7 +20947,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Q10D00D00D(
+constexpr const TFunction imageAtomicExchange_01Q10D00D00D(
     BuiltInId::imageAtomicExchange_Image2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21873,7 +20956,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01R10D00D00D(
+constexpr const TFunction imageAtomicExchange_01R10D00D00D(
     BuiltInId::imageAtomicExchange_IImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21882,7 +20965,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01S10D00D00D(
+constexpr const TFunction imageAtomicExchange_01S10D00D00D(
     BuiltInId::imageAtomicExchange_UImage2DMS1_Int2_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21891,7 +20974,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01T20D00D00D(
+constexpr const TFunction imageAtomicExchange_01T20D00D00D(
     BuiltInId::imageAtomicExchange_Image2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21900,7 +20983,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01U20D00D00D(
+constexpr const TFunction imageAtomicExchange_01U20D00D00D(
     BuiltInId::imageAtomicExchange_IImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21909,7 +20992,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01V20D00D00D(
+constexpr const TFunction imageAtomicExchange_01V20D00D00D(
     BuiltInId::imageAtomicExchange_UImage2DMSArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21918,7 +21001,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_00y10D00B(
+constexpr const TFunction imageAtomicExchange_00y10D00B(
     BuiltInId::imageAtomicExchange_Image2D1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21927,7 +21010,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_00z10D00B(
+constexpr const TFunction imageAtomicExchange_00z10D00B(
     BuiltInId::imageAtomicExchange_IImage2D1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21936,7 +21019,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01A10D00B(
+constexpr const TFunction imageAtomicExchange_01A10D00B(
     BuiltInId::imageAtomicExchange_UImage2D1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21945,7 +21028,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01B20D00B(
+constexpr const TFunction imageAtomicExchange_01B20D00B(
     BuiltInId::imageAtomicExchange_Image3D1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21954,7 +21037,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01C20D00B(
+constexpr const TFunction imageAtomicExchange_01C20D00B(
     BuiltInId::imageAtomicExchange_IImage3D1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21963,7 +21046,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01D20D00B(
+constexpr const TFunction imageAtomicExchange_01D20D00B(
     BuiltInId::imageAtomicExchange_UImage3D1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21972,7 +21055,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01H20D00B(
+constexpr const TFunction imageAtomicExchange_01H20D00B(
     BuiltInId::imageAtomicExchange_ImageCube1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21981,7 +21064,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01I20D00B(
+constexpr const TFunction imageAtomicExchange_01I20D00B(
     BuiltInId::imageAtomicExchange_IImageCube1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21990,7 +21073,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01J20D00B(
+constexpr const TFunction imageAtomicExchange_01J20D00B(
     BuiltInId::imageAtomicExchange_UImageCube1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -21999,7 +21082,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01f00D00B(
+constexpr const TFunction imageAtomicExchange_01f00D00B(
     BuiltInId::imageAtomicExchange_ImageBuffer1_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22008,7 +21091,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01g00D00B(
+constexpr const TFunction imageAtomicExchange_01g00D00B(
     BuiltInId::imageAtomicExchange_IImageBuffer1_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22017,7 +21100,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01h00D00B(
+constexpr const TFunction imageAtomicExchange_01h00D00B(
     BuiltInId::imageAtomicExchange_UImageBuffer1_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22026,7 +21109,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01E20D00B(
+constexpr const TFunction imageAtomicExchange_01E20D00B(
     BuiltInId::imageAtomicExchange_Image2DArray1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22035,7 +21118,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01F20D00B(
+constexpr const TFunction imageAtomicExchange_01F20D00B(
     BuiltInId::imageAtomicExchange_IImage2DArray1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22044,7 +21127,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01G20D00B(
+constexpr const TFunction imageAtomicExchange_01G20D00B(
     BuiltInId::imageAtomicExchange_UImage2DArray1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22053,7 +21136,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Z20D00B(
+constexpr const TFunction imageAtomicExchange_01Z20D00B(
     BuiltInId::imageAtomicExchange_ImageCubeArray1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22062,7 +21145,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01a20D00B(
+constexpr const TFunction imageAtomicExchange_01a20D00B(
     BuiltInId::imageAtomicExchange_IImageCubeArray1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22071,7 +21154,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01b20D00B(
+constexpr const TFunction imageAtomicExchange_01b20D00B(
     BuiltInId::imageAtomicExchange_UImageCubeArray1_Int3_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22080,7 +21163,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01K00D00B(
+constexpr const TFunction imageAtomicExchange_01K00D00B(
     BuiltInId::imageAtomicExchange_Image1D1_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22089,7 +21172,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01L00D00B(
+constexpr const TFunction imageAtomicExchange_01L00D00B(
     BuiltInId::imageAtomicExchange_IImage1D1_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22098,7 +21181,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01M00D00B(
+constexpr const TFunction imageAtomicExchange_01M00D00B(
     BuiltInId::imageAtomicExchange_UImage1D1_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22107,7 +21190,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01N10D00B(
+constexpr const TFunction imageAtomicExchange_01N10D00B(
     BuiltInId::imageAtomicExchange_Image1DArray1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22116,7 +21199,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01O10D00B(
+constexpr const TFunction imageAtomicExchange_01O10D00B(
     BuiltInId::imageAtomicExchange_IImage1DArray1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22125,7 +21208,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01P10D00B(
+constexpr const TFunction imageAtomicExchange_01P10D00B(
     BuiltInId::imageAtomicExchange_UImage1DArray1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22134,7 +21217,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01W10D00B(
+constexpr const TFunction imageAtomicExchange_01W10D00B(
     BuiltInId::imageAtomicExchange_Image2DRect1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22143,7 +21226,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01X10D00B(
+constexpr const TFunction imageAtomicExchange_01X10D00B(
     BuiltInId::imageAtomicExchange_IImage2DRect1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22152,7 +21235,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Y10D00B(
+constexpr const TFunction imageAtomicExchange_01Y10D00B(
     BuiltInId::imageAtomicExchange_UImage2DRect1_Int2_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22161,7 +21244,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01Q10D00D00B(
+constexpr const TFunction imageAtomicExchange_01Q10D00D00B(
     BuiltInId::imageAtomicExchange_Image2DMS1_Int2_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22170,7 +21253,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01R10D00D00B(
+constexpr const TFunction imageAtomicExchange_01R10D00D00B(
     BuiltInId::imageAtomicExchange_IImage2DMS1_Int2_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22179,7 +21262,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01S10D00D00B(
+constexpr const TFunction imageAtomicExchange_01S10D00D00B(
     BuiltInId::imageAtomicExchange_UImage2DMS1_Int2_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22188,7 +21271,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01T20D00D00B(
+constexpr const TFunction imageAtomicExchange_01T20D00D00B(
     BuiltInId::imageAtomicExchange_Image2DMSArray1_Int3_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22197,7 +21280,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01U20D00D00B(
+constexpr const TFunction imageAtomicExchange_01U20D00D00B(
     BuiltInId::imageAtomicExchange_IImage2DMSArray1_Int3_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22206,7 +21289,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicExchange_01V20D00D00B(
+constexpr const TFunction imageAtomicExchange_01V20D00D00B(
     BuiltInId::imageAtomicExchange_UImage2DMSArray1_Int3_Int1_Float1,
     BuiltInName::imageAtomicExchange,
     TExtension::UNDEFINED,
@@ -22215,7 +21298,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_00y10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_00y10D00E00E(
     BuiltInId::imageAtomicCompSwap_Image2D1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22224,7 +21307,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_00z10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_00z10D00E00E(
     BuiltInId::imageAtomicCompSwap_IImage2D1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22233,7 +21316,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01A10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01A10D00E00E(
     BuiltInId::imageAtomicCompSwap_UImage2D1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22242,7 +21325,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01B20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01B20D00E00E(
     BuiltInId::imageAtomicCompSwap_Image3D1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22251,7 +21334,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01C20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01C20D00E00E(
     BuiltInId::imageAtomicCompSwap_IImage3D1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22260,7 +21343,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01D20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01D20D00E00E(
     BuiltInId::imageAtomicCompSwap_UImage3D1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22269,7 +21352,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01H20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01H20D00E00E(
     BuiltInId::imageAtomicCompSwap_ImageCube1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22278,7 +21361,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01I20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01I20D00E00E(
     BuiltInId::imageAtomicCompSwap_IImageCube1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22287,7 +21370,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01J20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01J20D00E00E(
     BuiltInId::imageAtomicCompSwap_UImageCube1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22296,7 +21379,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01f00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01f00D00E00E(
     BuiltInId::imageAtomicCompSwap_ImageBuffer1_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22305,7 +21388,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01g00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01g00D00E00E(
     BuiltInId::imageAtomicCompSwap_IImageBuffer1_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22314,7 +21397,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01h00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01h00D00E00E(
     BuiltInId::imageAtomicCompSwap_UImageBuffer1_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22323,7 +21406,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01E20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01E20D00E00E(
     BuiltInId::imageAtomicCompSwap_Image2DArray1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22332,7 +21415,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01F20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01F20D00E00E(
     BuiltInId::imageAtomicCompSwap_IImage2DArray1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22341,7 +21424,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01G20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01G20D00E00E(
     BuiltInId::imageAtomicCompSwap_UImage2DArray1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22350,7 +21433,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01Z20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01Z20D00E00E(
     BuiltInId::imageAtomicCompSwap_ImageCubeArray1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22359,7 +21442,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01a20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01a20D00E00E(
     BuiltInId::imageAtomicCompSwap_IImageCubeArray1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22368,7 +21451,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01b20D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01b20D00E00E(
     BuiltInId::imageAtomicCompSwap_UImageCubeArray1_Int3_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22377,7 +21460,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01K00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01K00D00E00E(
     BuiltInId::imageAtomicCompSwap_Image1D1_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22386,7 +21469,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01L00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01L00D00E00E(
     BuiltInId::imageAtomicCompSwap_IImage1D1_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22395,7 +21478,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01M00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01M00D00E00E(
     BuiltInId::imageAtomicCompSwap_UImage1D1_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22404,7 +21487,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01N10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01N10D00E00E(
     BuiltInId::imageAtomicCompSwap_Image1DArray1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22413,7 +21496,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01O10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01O10D00E00E(
     BuiltInId::imageAtomicCompSwap_IImage1DArray1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22422,7 +21505,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01P10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01P10D00E00E(
     BuiltInId::imageAtomicCompSwap_UImage1DArray1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22431,7 +21514,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01W10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01W10D00E00E(
     BuiltInId::imageAtomicCompSwap_Image2DRect1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22440,7 +21523,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01X10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01X10D00E00E(
     BuiltInId::imageAtomicCompSwap_IImage2DRect1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22449,7 +21532,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01Y10D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01Y10D00E00E(
     BuiltInId::imageAtomicCompSwap_UImage2DRect1_Int2_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22458,7 +21541,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01Q10D00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01Q10D00D00E00E(
     BuiltInId::imageAtomicCompSwap_Image2DMS1_Int2_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22467,7 +21550,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01R10D00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01R10D00D00E00E(
     BuiltInId::imageAtomicCompSwap_IImage2DMS1_Int2_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22476,7 +21559,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01S10D00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01S10D00D00E00E(
     BuiltInId::imageAtomicCompSwap_UImage2DMS1_Int2_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22485,7 +21568,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01T20D00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01T20D00D00E00E(
     BuiltInId::imageAtomicCompSwap_Image2DMSArray1_Int3_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22494,7 +21577,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01U20D00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01U20D00D00E00E(
     BuiltInId::imageAtomicCompSwap_IImage2DMSArray1_Int3_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22503,7 +21586,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01V20D00D00E00E(
+constexpr const TFunction imageAtomicCompSwap_01V20D00D00E00E(
     BuiltInId::imageAtomicCompSwap_UImage2DMSArray1_Int3_Int1_UInt1_UInt1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22512,7 +21595,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_00y10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_00y10D00D00D(
     BuiltInId::imageAtomicCompSwap_Image2D1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22521,7 +21604,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_00z10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_00z10D00D00D(
     BuiltInId::imageAtomicCompSwap_IImage2D1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22530,7 +21613,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01A10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01A10D00D00D(
     BuiltInId::imageAtomicCompSwap_UImage2D1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22539,7 +21622,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01B20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01B20D00D00D(
     BuiltInId::imageAtomicCompSwap_Image3D1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22548,7 +21631,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01C20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01C20D00D00D(
     BuiltInId::imageAtomicCompSwap_IImage3D1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22557,7 +21640,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01D20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01D20D00D00D(
     BuiltInId::imageAtomicCompSwap_UImage3D1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22566,7 +21649,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01H20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01H20D00D00D(
     BuiltInId::imageAtomicCompSwap_ImageCube1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22575,7 +21658,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01I20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01I20D00D00D(
     BuiltInId::imageAtomicCompSwap_IImageCube1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22584,7 +21667,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01J20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01J20D00D00D(
     BuiltInId::imageAtomicCompSwap_UImageCube1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22593,7 +21676,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01f00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01f00D00D00D(
     BuiltInId::imageAtomicCompSwap_ImageBuffer1_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22602,7 +21685,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01g00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01g00D00D00D(
     BuiltInId::imageAtomicCompSwap_IImageBuffer1_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22611,7 +21694,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01h00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01h00D00D00D(
     BuiltInId::imageAtomicCompSwap_UImageBuffer1_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22620,7 +21703,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01E20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01E20D00D00D(
     BuiltInId::imageAtomicCompSwap_Image2DArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22629,7 +21712,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01F20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01F20D00D00D(
     BuiltInId::imageAtomicCompSwap_IImage2DArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22638,7 +21721,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01G20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01G20D00D00D(
     BuiltInId::imageAtomicCompSwap_UImage2DArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22647,7 +21730,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01Z20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01Z20D00D00D(
     BuiltInId::imageAtomicCompSwap_ImageCubeArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22656,7 +21739,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01a20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01a20D00D00D(
     BuiltInId::imageAtomicCompSwap_IImageCubeArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22665,7 +21748,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01b20D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01b20D00D00D(
     BuiltInId::imageAtomicCompSwap_UImageCubeArray1_Int3_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22674,7 +21757,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01K00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01K00D00D00D(
     BuiltInId::imageAtomicCompSwap_Image1D1_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22683,7 +21766,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01L00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01L00D00D00D(
     BuiltInId::imageAtomicCompSwap_IImage1D1_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22692,7 +21775,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01M00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01M00D00D00D(
     BuiltInId::imageAtomicCompSwap_UImage1D1_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22701,7 +21784,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01N10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01N10D00D00D(
     BuiltInId::imageAtomicCompSwap_Image1DArray1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22710,7 +21793,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01O10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01O10D00D00D(
     BuiltInId::imageAtomicCompSwap_IImage1DArray1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22719,7 +21802,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01P10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01P10D00D00D(
     BuiltInId::imageAtomicCompSwap_UImage1DArray1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22728,7 +21811,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01W10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01W10D00D00D(
     BuiltInId::imageAtomicCompSwap_Image2DRect1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22737,7 +21820,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01X10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01X10D00D00D(
     BuiltInId::imageAtomicCompSwap_IImage2DRect1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22746,7 +21829,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01Y10D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01Y10D00D00D(
     BuiltInId::imageAtomicCompSwap_UImage2DRect1_Int2_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22755,7 +21838,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01Q10D00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01Q10D00D00D00D(
     BuiltInId::imageAtomicCompSwap_Image2DMS1_Int2_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22764,7 +21847,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01R10D00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01R10D00D00D00D(
     BuiltInId::imageAtomicCompSwap_IImage2DMS1_Int2_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22773,7 +21856,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01S10D00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01S10D00D00D00D(
     BuiltInId::imageAtomicCompSwap_UImage2DMS1_Int2_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22782,7 +21865,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01T20D00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01T20D00D00D00D(
     BuiltInId::imageAtomicCompSwap_Image2DMSArray1_Int3_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22791,7 +21874,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01U20D00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01U20D00D00D00D(
     BuiltInId::imageAtomicCompSwap_IImage2DMSArray1_Int3_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22800,7 +21883,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageAtomicCompSwap_01V20D00D00D00D(
+constexpr const TFunction imageAtomicCompSwap_01V20D00D00D00D(
     BuiltInId::imageAtomicCompSwap_UImage2DMSArray1_Int3_Int1_Int1_Int1,
     BuiltInName::imageAtomicCompSwap,
     TExtension::UNDEFINED,
@@ -22809,7 +21892,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_00y10D(
+constexpr const TFunction imageLoad_00y10D(
     BuiltInId::imageLoad_Image2D1_Int2,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22818,16 +21901,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_00z10D(
-    BuiltInId::imageLoad_IImage2D1_Int2,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00z10D00B,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01A10D(
+constexpr const TFunction imageLoad_00z10D(BuiltInId::imageLoad_IImage2D1_Int2,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p00z10D00B,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01A10D(
     BuiltInId::imageLoad_UImage2D1_Int2,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22836,7 +21918,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01B20D(
+constexpr const TFunction imageLoad_01B20D(
     BuiltInId::imageLoad_Image3D1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22845,16 +21927,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01C20D(
-    BuiltInId::imageLoad_IImage3D1_Int3,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01C20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01D20D(
+constexpr const TFunction imageLoad_01C20D(BuiltInId::imageLoad_IImage3D1_Int3,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01C20D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01D20D(
     BuiltInId::imageLoad_UImage3D1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22863,7 +21944,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01E20D(
+constexpr const TFunction imageLoad_01E20D(
     BuiltInId::imageLoad_Image2DArray1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22872,16 +21953,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01F20D(
-    BuiltInId::imageLoad_IImage2DArray1_Int3,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01F20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01G20D(
+constexpr const TFunction imageLoad_01F20D(BuiltInId::imageLoad_IImage2DArray1_Int3,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01F20D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01G20D(
     BuiltInId::imageLoad_UImage2DArray1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22890,7 +21970,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01H20D(
+constexpr const TFunction imageLoad_01H20D(
     BuiltInId::imageLoad_ImageCube1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22899,16 +21979,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01I20D(
-    BuiltInId::imageLoad_IImageCube1_Int3,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01I20D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01J20D(
+constexpr const TFunction imageLoad_01I20D(BuiltInId::imageLoad_IImageCube1_Int3,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01I20D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01J20D(
     BuiltInId::imageLoad_UImageCube1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22917,7 +21996,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01f00D(
+constexpr const TFunction imageLoad_01f00D(
     BuiltInId::imageLoad_ImageBuffer1_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22926,16 +22005,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01g00D(
-    BuiltInId::imageLoad_IImageBuffer1_Int1,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01g00D30D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01h00D(
+constexpr const TFunction imageLoad_01g00D(BuiltInId::imageLoad_IImageBuffer1_Int1,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01g00D30D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01h00D(
     BuiltInId::imageLoad_UImageBuffer1_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22944,7 +22022,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01Z20D(
+constexpr const TFunction imageLoad_01Z20D(
     BuiltInId::imageLoad_ImageCubeArray1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22953,16 +22031,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01a20D(
-    BuiltInId::imageLoad_IImageCubeArray1_Int3,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01a20D00E00E,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01b20D(
+constexpr const TFunction imageLoad_01a20D(BuiltInId::imageLoad_IImageCubeArray1_Int3,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01a20D00E00E,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01b20D(
     BuiltInId::imageLoad_UImageCubeArray1_Int3,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22971,7 +22048,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01K00D(
+constexpr const TFunction imageLoad_01K00D(
     BuiltInId::imageLoad_Image1D1_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22980,16 +22057,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01L00D(
-    BuiltInId::imageLoad_IImage1D1_Int1,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01L00D00E00E,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01M00D(
+constexpr const TFunction imageLoad_01L00D(BuiltInId::imageLoad_IImage1D1_Int1,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01L00D00E00E,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01M00D(
     BuiltInId::imageLoad_UImage1D1_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -22998,7 +22074,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01N10D(
+constexpr const TFunction imageLoad_01N10D(
     BuiltInId::imageLoad_Image1DArray1_Int2,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23007,16 +22083,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01O10D(
-    BuiltInId::imageLoad_IImage1DArray1_Int2,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01O10D00E00E,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01P10D(
+constexpr const TFunction imageLoad_01O10D(BuiltInId::imageLoad_IImage1DArray1_Int2,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01O10D00E00E,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01P10D(
     BuiltInId::imageLoad_UImage1DArray1_Int2,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23025,7 +22100,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01W10D(
+constexpr const TFunction imageLoad_01W10D(
     BuiltInId::imageLoad_Image2DRect1_Int2,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23034,16 +22109,15 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01X10D(
-    BuiltInId::imageLoad_IImage2DRect1_Int2,
-    BuiltInName::imageLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01X10D00D00D,
-    2,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_imageLoad_01Y10D(
+constexpr const TFunction imageLoad_01X10D(BuiltInId::imageLoad_IImage2DRect1_Int2,
+                                           BuiltInName::imageLoad,
+                                           TExtension::UNDEFINED,
+                                           BuiltInParameters::p01X10D00D00D,
+                                           2,
+                                           StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                           EOpCallBuiltInFunction,
+                                           false);
+constexpr const TFunction imageLoad_01Y10D(
     BuiltInId::imageLoad_UImage2DRect1_Int2,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23052,7 +22126,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01Q10D00D(
+constexpr const TFunction imageLoad_01Q10D00D(
     BuiltInId::imageLoad_Image2DMS1_Int2_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23061,7 +22135,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01R10D00D(
+constexpr const TFunction imageLoad_01R10D00D(
     BuiltInId::imageLoad_IImage2DMS1_Int2_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23070,7 +22144,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01S10D00D(
+constexpr const TFunction imageLoad_01S10D00D(
     BuiltInId::imageLoad_UImage2DMS1_Int2_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23079,7 +22153,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01T20D00D(
+constexpr const TFunction imageLoad_01T20D00D(
     BuiltInId::imageLoad_Image2DMSArray1_Int3_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23088,7 +22162,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01U20D00D(
+constexpr const TFunction imageLoad_01U20D00D(
     BuiltInId::imageLoad_IImage2DMSArray1_Int3_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23097,7 +22171,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageLoad_01V20D00D(
+constexpr const TFunction imageLoad_01V20D00D(
     BuiltInId::imageLoad_UImage2DMSArray1_Int3_Int1,
     BuiltInName::imageLoad,
     TExtension::UNDEFINED,
@@ -23106,7 +22180,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_00y10D30B(
+constexpr const TFunction imageStore_00y10D30B(
     BuiltInId::imageStore_Image2D1_Int2_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23115,7 +22189,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_00z10D30D(
+constexpr const TFunction imageStore_00z10D30D(
     BuiltInId::imageStore_IImage2D1_Int2_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23124,7 +22198,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01A10D30E(
+constexpr const TFunction imageStore_01A10D30E(
     BuiltInId::imageStore_UImage2D1_Int2_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23133,7 +22207,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01B20D30B(
+constexpr const TFunction imageStore_01B20D30B(
     BuiltInId::imageStore_Image3D1_Int3_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23142,7 +22216,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01C20D30D(
+constexpr const TFunction imageStore_01C20D30D(
     BuiltInId::imageStore_IImage3D1_Int3_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23151,7 +22225,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01D20D30E(
+constexpr const TFunction imageStore_01D20D30E(
     BuiltInId::imageStore_UImage3D1_Int3_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23160,7 +22234,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01E20D30B(
+constexpr const TFunction imageStore_01E20D30B(
     BuiltInId::imageStore_Image2DArray1_Int3_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23169,7 +22243,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01F20D30D(
+constexpr const TFunction imageStore_01F20D30D(
     BuiltInId::imageStore_IImage2DArray1_Int3_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23178,7 +22252,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01G20D30E(
+constexpr const TFunction imageStore_01G20D30E(
     BuiltInId::imageStore_UImage2DArray1_Int3_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23187,7 +22261,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01H20D30B(
+constexpr const TFunction imageStore_01H20D30B(
     BuiltInId::imageStore_ImageCube1_Int3_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23196,7 +22270,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01I20D30D(
+constexpr const TFunction imageStore_01I20D30D(
     BuiltInId::imageStore_IImageCube1_Int3_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23205,7 +22279,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01J20D30E(
+constexpr const TFunction imageStore_01J20D30E(
     BuiltInId::imageStore_UImageCube1_Int3_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23214,7 +22288,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01f00D30B(
+constexpr const TFunction imageStore_01f00D30B(
     BuiltInId::imageStore_ImageBuffer1_Int1_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23223,7 +22297,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01g00D30D(
+constexpr const TFunction imageStore_01g00D30D(
     BuiltInId::imageStore_IImageBuffer1_Int1_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23232,7 +22306,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01h00D30E(
+constexpr const TFunction imageStore_01h00D30E(
     BuiltInId::imageStore_UImageBuffer1_Int1_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23241,7 +22315,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01Z20D30B(
+constexpr const TFunction imageStore_01Z20D30B(
     BuiltInId::imageStore_ImageCubeArray1_Int3_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23250,7 +22324,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01a20D30D(
+constexpr const TFunction imageStore_01a20D30D(
     BuiltInId::imageStore_IImageCubeArray1_Int3_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23259,7 +22333,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01b20D30E(
+constexpr const TFunction imageStore_01b20D30E(
     BuiltInId::imageStore_UImageCubeArray1_Int3_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23268,7 +22342,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01K00D30B(
+constexpr const TFunction imageStore_01K00D30B(
     BuiltInId::imageStore_Image1D1_Int1_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23277,7 +22351,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01L00D30D(
+constexpr const TFunction imageStore_01L00D30D(
     BuiltInId::imageStore_IImage1D1_Int1_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23286,7 +22360,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01M00D30E(
+constexpr const TFunction imageStore_01M00D30E(
     BuiltInId::imageStore_UImage1D1_Int1_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23295,7 +22369,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01N10D30B(
+constexpr const TFunction imageStore_01N10D30B(
     BuiltInId::imageStore_Image1DArray1_Int2_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23304,7 +22378,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01O10D30D(
+constexpr const TFunction imageStore_01O10D30D(
     BuiltInId::imageStore_IImage1DArray1_Int2_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23313,7 +22387,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01P10D30E(
+constexpr const TFunction imageStore_01P10D30E(
     BuiltInId::imageStore_UImage1DArray1_Int2_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23322,7 +22396,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01W10D30B(
+constexpr const TFunction imageStore_01W10D30B(
     BuiltInId::imageStore_Image2DRect1_Int2_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23331,7 +22405,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01X10D30D(
+constexpr const TFunction imageStore_01X10D30D(
     BuiltInId::imageStore_IImage2DRect1_Int2_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23340,7 +22414,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01Y10D30E(
+constexpr const TFunction imageStore_01Y10D30E(
     BuiltInId::imageStore_UImage2DRect1_Int2_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23349,7 +22423,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01Q10D00D30B(
+constexpr const TFunction imageStore_01Q10D00D30B(
     BuiltInId::imageStore_Image2DMS1_Int2_Int1_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23358,7 +22432,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01R10D00D30D(
+constexpr const TFunction imageStore_01R10D00D30D(
     BuiltInId::imageStore_IImage2DMS1_Int2_Int1_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23367,7 +22441,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01S10D00D30E(
+constexpr const TFunction imageStore_01S10D00D30E(
     BuiltInId::imageStore_UImage2DMS1_Int2_Int1_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23376,7 +22450,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01T20D00D30B(
+constexpr const TFunction imageStore_01T20D00D30B(
     BuiltInId::imageStore_Image2DMSArray1_Int3_Int1_Float4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23385,7 +22459,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01U20D00D30D(
+constexpr const TFunction imageStore_01U20D00D30D(
     BuiltInId::imageStore_IImage2DMSArray1_Int3_Int1_Int4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23394,7 +22468,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_imageStore_01V20D00D30E(
+constexpr const TFunction imageStore_01V20D00D30E(
     BuiltInId::imageStore_UImage2DMSArray1_Int3_Int1_UInt4,
     BuiltInName::imageStore,
     TExtension::UNDEFINED,
@@ -23403,160 +22477,143 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_noise1_00B(
-    BuiltInId::noise1_Float1,
-    BuiltInName::noise1,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise1_10B(
-    BuiltInId::noise1_Float2,
-    BuiltInName::noise1,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise1_20B(
-    BuiltInId::noise1_Float3,
-    BuiltInName::noise1,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise1_30B(
-    BuiltInId::noise1_Float4,
-    BuiltInName::noise1,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise2_00B(
-    BuiltInId::noise2_Float1,
-    BuiltInName::noise2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise2_10B(
-    BuiltInId::noise2_Float2,
-    BuiltInName::noise2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise2_20B(
-    BuiltInId::noise2_Float3,
-    BuiltInName::noise2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise2_30B(
-    BuiltInId::noise2_Float4,
-    BuiltInName::noise2,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise3_00B(
-    BuiltInId::noise3_Float1,
-    BuiltInName::noise3,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise3_10B(
-    BuiltInId::noise3_Float2,
-    BuiltInName::noise3,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise3_20B(
-    BuiltInId::noise3_Float3,
-    BuiltInName::noise3,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise3_30B(
-    BuiltInId::noise3_Float4,
-    BuiltInName::noise3,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise4_00B(
-    BuiltInId::noise4_Float1,
-    BuiltInName::noise4,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p00B00B30B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise4_10B(
-    BuiltInId::noise4_Float2,
-    BuiltInName::noise4,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p10B_o_10B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise4_20B(
-    BuiltInId::noise4_Float3,
-    BuiltInName::noise4,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p20B20B00B,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_noise4_30B(
-    BuiltInId::noise4_Float4,
-    BuiltInName::noise4,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p30B30D,
-    1,
-    StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_memoryBarrier_(
-    BuiltInId::memoryBarrier,
-    BuiltInName::memoryBarrier,
-    TExtension::UNDEFINED,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpMemoryBarrier,
-    false);
-constexpr const TFunction function_memoryBarrierAtomicCounter_(
+constexpr const TFunction noise1_00B(BuiltInId::noise1_Float1,
+                                     BuiltInName::noise1,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise1_10B(BuiltInId::noise1_Float2,
+                                     BuiltInName::noise1,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B_o_10B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise1_20B(BuiltInId::noise1_Float3,
+                                     BuiltInName::noise1,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise1_30B(BuiltInId::noise1_Float4,
+                                     BuiltInName::noise1,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30D,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 1, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise2_00B(BuiltInId::noise2_Float1,
+                                     BuiltInName::noise2,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise2_10B(BuiltInId::noise2_Float2,
+                                     BuiltInName::noise2,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B_o_10B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise2_20B(BuiltInId::noise2_Float3,
+                                     BuiltInName::noise2,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise2_30B(BuiltInId::noise2_Float4,
+                                     BuiltInName::noise2,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30D,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 2, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise3_00B(BuiltInId::noise3_Float1,
+                                     BuiltInName::noise3,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise3_10B(BuiltInId::noise3_Float2,
+                                     BuiltInName::noise3,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B_o_10B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise3_20B(BuiltInId::noise3_Float3,
+                                     BuiltInName::noise3,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise3_30B(BuiltInId::noise3_Float4,
+                                     BuiltInName::noise3,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30D,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 3, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise4_00B(BuiltInId::noise4_Float1,
+                                     BuiltInName::noise4,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p00B00B30B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise4_10B(BuiltInId::noise4_Float2,
+                                     BuiltInName::noise4,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p10B_o_10B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise4_20B(BuiltInId::noise4_Float3,
+                                     BuiltInName::noise4,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p20B20B00B,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction noise4_30B(BuiltInId::noise4_Float4,
+                                     BuiltInName::noise4,
+                                     TExtension::UNDEFINED,
+                                     BuiltInParameters::p30B30D,
+                                     1,
+                                     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
+                                     EOpCallBuiltInFunction,
+                                     false);
+constexpr const TFunction memoryBarrier_(BuiltInId::memoryBarrier,
+                                         BuiltInName::memoryBarrier,
+                                         TExtension::UNDEFINED,
+                                         BuiltInParameters::empty,
+                                         0,
+                                         StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
+                                         EOpMemoryBarrier,
+                                         false);
+constexpr const TFunction memoryBarrierAtomicCounter_(
     BuiltInId::memoryBarrierAtomicCounter,
     BuiltInName::memoryBarrierAtomicCounter,
     TExtension::UNDEFINED,
@@ -23565,7 +22622,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpMemoryBarrierAtomicCounter,
     false);
-constexpr const TFunction function_memoryBarrierBuffer_(
+constexpr const TFunction memoryBarrierBuffer_(
     BuiltInId::memoryBarrierBuffer,
     BuiltInName::memoryBarrierBuffer,
     TExtension::UNDEFINED,
@@ -23574,7 +22631,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpMemoryBarrierBuffer,
     false);
-constexpr const TFunction function_memoryBarrierImage_(
+constexpr const TFunction memoryBarrierImage_(
     BuiltInId::memoryBarrierImage,
     BuiltInName::memoryBarrierImage,
     TExtension::UNDEFINED,
@@ -23583,16 +22640,15 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpMemoryBarrierImage,
     false);
-constexpr const TFunction function_barrier_(
-    BuiltInId::barrier,
-    BuiltInName::barrier,
-    TExtension::UNDEFINED,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpBarrier,
-    false);
-constexpr const TFunction function_memoryBarrierShared_(
+constexpr const TFunction barrier_(BuiltInId::barrier,
+                                   BuiltInName::barrier,
+                                   TExtension::UNDEFINED,
+                                   BuiltInParameters::empty,
+                                   0,
+                                   StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
+                                   EOpBarrier,
+                                   false);
+constexpr const TFunction memoryBarrierShared_(
     BuiltInId::memoryBarrierShared,
     BuiltInName::memoryBarrierShared,
     TExtension::UNDEFINED,
@@ -23601,7 +22657,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpMemoryBarrierShared,
     false);
-constexpr const TFunction function_groupMemoryBarrier_(
+constexpr const TFunction groupMemoryBarrier_(
     BuiltInId::groupMemoryBarrier,
     BuiltInName::groupMemoryBarrier,
     TExtension::UNDEFINED,
@@ -23610,25 +22666,23 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpGroupMemoryBarrier,
     false);
-constexpr const TFunction function_EmitVertex_(
-    BuiltInId::EmitVertex,
-    BuiltInName::EmitVertex,
-    TExtension::EXT_geometry_shader,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpEmitVertex,
-    false);
-constexpr const TFunction function_EndPrimitive_(
-    BuiltInId::EndPrimitive,
-    BuiltInName::EndPrimitive,
-    TExtension::EXT_geometry_shader,
-    BuiltInParameters::empty,
-    0,
-    StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
-    EOpEndPrimitive,
-    false);
-constexpr const TFunction function_EmitStreamVertex_00D(
+constexpr const TFunction EmitVertex_(BuiltInId::EmitVertex,
+                                      BuiltInName::EmitVertex,
+                                      TExtension::EXT_geometry_shader,
+                                      BuiltInParameters::empty,
+                                      0,
+                                      StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
+                                      EOpEmitVertex,
+                                      false);
+constexpr const TFunction EndPrimitive_(BuiltInId::EndPrimitive,
+                                        BuiltInName::EndPrimitive,
+                                        TExtension::EXT_geometry_shader,
+                                        BuiltInParameters::empty,
+                                        0,
+                                        StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
+                                        EOpEndPrimitive,
+                                        false);
+constexpr const TFunction EmitStreamVertex_00D(
     BuiltInId::EmitStreamVertex_Int1,
     BuiltInName::EmitStreamVertex,
     TExtension::UNDEFINED,
@@ -23637,7 +22691,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_EndStreamPrimitive_00D(
+constexpr const TFunction EndStreamPrimitive_00D(
     BuiltInId::EndStreamPrimitive_Int1,
     BuiltInName::EndStreamPrimitive,
     TExtension::UNDEFINED,
@@ -23646,7 +22700,7 @@
     StaticType::Get<EbtVoid, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_subpassLoad_01i(
+constexpr const TFunction subpassLoad_01i(
     BuiltInId::subpassLoad_SubpassInput1,
     BuiltInName::subpassLoad,
     TExtension::UNDEFINED,
@@ -23655,25 +22709,23 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_subpassLoad_01j(
-    BuiltInId::subpassLoad_ISubpassInput1,
-    BuiltInName::subpassLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01j,
-    1,
-    StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_subpassLoad_01k(
-    BuiltInId::subpassLoad_USubpassInput1,
-    BuiltInName::subpassLoad,
-    TExtension::UNDEFINED,
-    BuiltInParameters::p01k,
-    1,
-    StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
-    EOpCallBuiltInFunction,
-    false);
-constexpr const TFunction function_subpassLoad_01l00D(
+constexpr const TFunction subpassLoad_01j(BuiltInId::subpassLoad_ISubpassInput1,
+                                          BuiltInName::subpassLoad,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p01j,
+                                          1,
+                                          StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction subpassLoad_01k(BuiltInId::subpassLoad_USubpassInput1,
+                                          BuiltInName::subpassLoad,
+                                          TExtension::UNDEFINED,
+                                          BuiltInParameters::p01k,
+                                          1,
+                                          StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
+                                          EOpCallBuiltInFunction,
+                                          false);
+constexpr const TFunction subpassLoad_01l00D(
     BuiltInId::subpassLoad_SubpassInputMS1_Int1,
     BuiltInName::subpassLoad,
     TExtension::UNDEFINED,
@@ -23682,7 +22734,7 @@
     StaticType::Get<EbtFloat, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_subpassLoad_01m00D(
+constexpr const TFunction subpassLoad_01m00D(
     BuiltInId::subpassLoad_ISubpassInputMS1_Int1,
     BuiltInName::subpassLoad,
     TExtension::UNDEFINED,
@@ -23691,7 +22743,7 @@
     StaticType::Get<EbtInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_subpassLoad_01n00D(
+constexpr const TFunction subpassLoad_01n00D(
     BuiltInId::subpassLoad_USubpassInputMS1_Int1,
     BuiltInName::subpassLoad,
     TExtension::UNDEFINED,
@@ -23700,7 +22752,7 @@
     StaticType::Get<EbtUInt, EbpUndefined, EvqGlobal, 4, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_anyInvocation_00F(
+constexpr const TFunction anyInvocation_00F(
     BuiltInId::anyInvocation_Bool1,
     BuiltInName::anyInvocation,
     TExtension::UNDEFINED,
@@ -23709,7 +22761,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_allInvocations_00F(
+constexpr const TFunction allInvocations_00F(
     BuiltInId::allInvocations_Bool1,
     BuiltInName::allInvocations,
     TExtension::UNDEFINED,
@@ -23718,7 +22770,7 @@
     StaticType::Get<EbtBool, EbpUndefined, EvqGlobal, 1, 1>(),
     EOpCallBuiltInFunction,
     false);
-constexpr const TFunction function_allInvocationsEqual_00F(
+constexpr const TFunction allInvocationsEqual_00F(
     BuiltInId::allInvocationsEqual_Bool1,
     BuiltInName::allInvocationsEqual,
     TExtension::UNDEFINED,
@@ -23728,35431 +22780,7588 @@
     EOpCallBuiltInFunction,
     false);
 
-}  // namespace BuiltInFunction
+}  // namespace Func
 
 namespace BuiltInArray
 {
+using namespace Func;
+using Rule = SymbolRule;
 
-constexpr SymbolEntry mangled[] = {
-    SymbolEntry(ImmutableString("textureProj(00R30B00B"),
-                &BuiltInFunction::function_textureProj_00R30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtOffset(30B10B"),
-                &BuiltInFunction::function_interpolateAtOffset_30B10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00g10B00D"),
-                &BuiltInFunction::function_textureProjOffset_00g10B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(00z10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_00z10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00I20B"),
-                &BuiltInFunction::function_texture2DProj_00I20B,
-                nullptr,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00v30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00v30B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00o00D00D"),
-                &BuiltInFunction::function_texelFetch_00o00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01g00D"),
-                &BuiltInFunction::function_imageLoad_01g00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01I20D"),
-                &BuiltInFunction::function_imageLoad_01I20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tanh(30B"),
-                &BuiltInFunction::function_tanh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01E20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01E20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00m00B"),
-                &BuiltInFunction::function_textureQueryLod_00m00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01f00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01f00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("not(10F"),
-                &BuiltInFunction::function_notFunc_10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(20E"),
-                &BuiltInFunction::function_findMSB_20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(30B30B"),
-                &BuiltInFunction::function_lessThanEqual_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(00z10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_00z10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00t00B00B"),
-                &BuiltInFunction::function_textureLod_00t00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00O30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00O30B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(20B30B"),
-                &BuiltInFunction::function_outerProduct_20B30B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(00z10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_00z10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01f00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01f00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01f00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01f00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSamples(01V"),
-                &BuiltInFunction::function_imageSamples_01V,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSamples(01U"),
-                &BuiltInFunction::function_imageSamples_01U,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSamples(01T"),
-                &BuiltInFunction::function_imageSamples_01T,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSamples(01S"),
-                &BuiltInFunction::function_imageSamples_01S,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20B20B00B"),
-                &BuiltInFunction::function_mix_20B20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSamples(01Q"),
-                &BuiltInFunction::function_imageSamples_01Q,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00o00B00B00D"),
-                &BuiltInFunction::function_textureLodOffset_00o00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uintBitsToFloat(30E"),
-                &BuiltInFunction::function_uintBitsToFloat_30E,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01R10D00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01R10D00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00K00D"),
-                &BuiltInFunction::function_textureSize_00K00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00h00D"),
-                &BuiltInFunction::function_textureSize_00h00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxAtomicCounterBindings"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxAtomicCounterBindings,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00q10D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00q10D10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(10E10E"),
-                &BuiltInFunction::function_greaterThanEqual_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00d20B"),
-                &BuiltInFunction::function_texture_00d20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(10B10B"),
-                &BuiltInFunction::function_atan_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30B30B30B"),
-                &BuiltInFunction::function_clamp_30B30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01a20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01a20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01R10D00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01R10D00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00a20B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00a20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01K00D30B"),
-                &BuiltInFunction::function_imageStore_01K00D30B,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(20B20B"),
-                &BuiltInFunction::function_greaterThanEqual_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01F20D"),
-                &BuiltInFunction::function_imageLoad_01F20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(10C"),
-                &BuiltInFunction::function_ceil_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01b20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01b20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01A10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01A10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01D20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01D20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicAdd(00D00D"),
-                &BuiltInFunction::function_atomicAdd_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00p00D"),
-                &BuiltInFunction::function_textureSize_00p00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToUint(20B"),
-                &BuiltInFunction::function_floatBitsToUint_20B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00t30B00D00B"),
-                &BuiltInFunction::function_textureProjOffset_00t30B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01Q10D00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01Q10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01Q10D00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01Q10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20D20D20F"),
-                &BuiltInFunction::function_mix_20D20D20F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("degrees(20B"),
-                &BuiltInFunction::function_degrees_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01Y10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01Y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01Z20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01Z20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01D20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01D20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(00C00C"),
-                &BuiltInFunction::function_min_00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01S10D00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01S10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01R10D00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01R10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01Q10D00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01Q10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(00C"),
-                &BuiltInFunction::function_inversesqrt_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(00B"),
-                &BuiltInFunction::function_inversesqrt_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01Q10D00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01Q10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00J20D00D20D"),
-                &BuiltInFunction::function_texelFetchOffset_00J20D00D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00S30B20B20B"),
-                &BuiltInFunction::function_textureProjGrad_00S30B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(10D10D"),
-                &BuiltInFunction::function_equal_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30D00D"),
-                &BuiltInFunction::function_max_30D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("groupMemoryBarrier("),
-                &BuiltInFunction::function_groupMemoryBarrier_,
-                nullptr,
-                310,
-                430,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01N10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01N10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01N10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01N10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01b20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01b20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01b20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01b20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(20C20C"),
-                &BuiltInFunction::function_step_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00I10D00D"),
-                &BuiltInFunction::function_texelFetch_00I10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(00C00C"),
-                &BuiltInFunction::function_mod_00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(E0B"),
-                &BuiltInFunction::function_transpose_E0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01R10D00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01R10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01R10D00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01R10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00f20B00B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00f20B00B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00O20B"),
-                &BuiltInFunction::function_textureGather_00O20B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00Y30B20D00B"),
-                &BuiltInFunction::function_textureProjOffset_00Y30B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(10B10B"),
-                &BuiltInFunction::function_modf_10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01K00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01K00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01K00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01K00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("determinant(50B"),
-                &BuiltInFunction::function_determinant_50B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01J20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01J20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00g10B00B"),
-                &BuiltInFunction::function_textureProj_00g10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(20B20B"),
-                &BuiltInFunction::function_lessThan_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentInputVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentInputVectors,
-                300,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(20C"),
-                &BuiltInFunction::function_sign_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cosh(20B"),
-                &BuiltInFunction::function_cosh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(20D"),
-                &BuiltInFunction::function_sign_20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atanh(00B"),
-                &BuiltInFunction::function_atanh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01V20D00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01V20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01V20D00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01V20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00t10B"),
-                &BuiltInFunction::function_textureProj_00t10B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00p20B00B"),
-                &BuiltInFunction::function_texture_00p20B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fma(10C10C10C"),
-                &BuiltInFunction::function_fma_10C10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01Y10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01Y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01Y10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01Y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01N10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01N10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01C20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01C20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00d20B10D00B"),
-                &BuiltInFunction::function_textureOffset_00d20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00m20B00D"),
-                &BuiltInFunction::function_textureOffset_00m20B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01C20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01C20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(10E10E"),
-                &BuiltInFunction::function_lessThan_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01A10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01A10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00X00B00B00B"),
-                &BuiltInFunction::function_textureGrad_00X00B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00t30B00B00D"),
-                &BuiltInFunction::function_textureProjLodOffset_00t30B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fma(30C30C30C"),
-                &BuiltInFunction::function_fma_30C30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00v10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00v10B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00N30B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00N30B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00C00C"),
-                &BuiltInFunction::function_step_00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedShaderOutputResources"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedShaderOutputResources,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00I10B00B"),
-                &BuiltInFunction::function_texture_00I10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00j00D"),
-                &BuiltInFunction::function_texelFetch_00j00D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(20D20D"),
-                &BuiltInFunction::function_lessThan_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20C20C20C"),
-                &BuiltInFunction::function_clamp_20C20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(00z10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_00z10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("all(10F"),
-                &BuiltInFunction::function_all_10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdyCoarse(00B"),
-                &BuiltInFunction::function_dFdyCoarse_00B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(30B"),
-                &BuiltInFunction::function_isinf_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00a20B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00a20B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00I10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00I10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00q30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00q30B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00L20B10D"),
-                &BuiltInFunction::function_textureOffset_00L20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(30E30E"),
-                &BuiltInFunction::function_lessThanEqual_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10E00E"),
-                &BuiltInFunction::function_min_10E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01a20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01a20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01a20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01a20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00S30B20D"),
-                &BuiltInFunction::function_textureProjOffset_00S30B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(00C"),
-                &BuiltInFunction::function_round_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(00B"),
-                &BuiltInFunction::function_round_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(30D30D"),
-                &BuiltInFunction::function_greaterThan_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00U20B"),
-                &BuiltInFunction::function_texture_00U20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01P10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01P10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00C00C20C"),
-                &BuiltInFunction::function_smoothstep_00C00C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DRect(00O10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DRect_00O10B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01K00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01K00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01K00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01K00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise2(20B"),
-                &BuiltInFunction::function_noise2_20B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryOutputVertices"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryOutputVertices,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(20B20B"),
-                &BuiltInFunction::function_step_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01b20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01b20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(10E"),
-                &BuiltInFunction::function_findMSB_10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(10D"),
-                &BuiltInFunction::function_findMSB_10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtOffset(00B10B"),
-                &BuiltInFunction::function_interpolateAtOffset_00B10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00t00B"),
-                &BuiltInFunction::function_texture_00t00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00S20B00B20D"),
-                &BuiltInFunction::function_textureLodOffset_00S20B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00p00B"),
-                &BuiltInFunction::function_textureQueryLod_00p00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(00z10D30D"),
-                &BuiltInFunction::function_imageStore_00z10D30D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(10B20B"),
-                &BuiltInFunction::function_outerProduct_10B20B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidthFine(10B"),
-                &BuiltInFunction::function_fwidthFine_10B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cos(30B"),
-                &BuiltInFunction::function_cos_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackHalf2x16(00E"),
-                &BuiltInFunction::function_unpackHalf2x16_00E,
-                nullptr,
-                300,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01J20D30E"),
-                &BuiltInFunction::function_imageStore_01J20D30E,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(10B10B"),
-                &BuiltInFunction::function_outerProduct_10B10B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01M00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01M00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeTextureImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeTextureImageUnits,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01Y10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01Y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01Y10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01Y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sin(30B"),
-                &BuiltInFunction::function_sin_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01O10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01O10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01Q10D00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01Q10D00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00L20B00D"),
-                &BuiltInFunction::function_textureGather_00L20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01A10D30E"),
-                &BuiltInFunction::function_imageStore_01A10D30E,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01H20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01H20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01H20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01H20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow1D(00m20B00B"),
-                &BuiltInFunction::function_shadow1D_00m20B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10E10E"),
-                &BuiltInFunction::function_max_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30B30B"),
-                &BuiltInFunction::function_max_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10E10E10E"),
-                &BuiltInFunction::function_clamp_10E10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00N10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00N10B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00t30B00B00B"),
-                &BuiltInFunction::function_textureProjGrad_00t30B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01E20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01E20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01E20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01E20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00a20D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00a20D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01V20D00D"),
-                &BuiltInFunction::function_imageLoad_01V20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("not(20F"),
-                &BuiltInFunction::function_notFunc_20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01F20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01F20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01Q10D00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01Q10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01Q10D00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01Q10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01F20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01F20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01L00D30D"),
-                &BuiltInFunction::function_imageStore_01L00D30D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(20B20B"),
-                &BuiltInFunction::function_outerProduct_20B20B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00R20B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00R20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00p10B00D"),
-                &BuiltInFunction::function_textureOffset_00p10B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00h20B"),
-                &BuiltInFunction::function_texture_00h20B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01B20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01B20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01B20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01B20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00J30B20B20B"),
-                &BuiltInFunction::function_textureProjGrad_00J30B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01R10D00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01R10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01R10D00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01R10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00X10B00B"),
-                &BuiltInFunction::function_textureLod_00X10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_InvocationID"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_InvocationID,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01R10D00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01R10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01E20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01E20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("radians(10B"),
-                &BuiltInFunction::function_radians_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00n10B00B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00n10B00B10D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise2(10B"),
-                &BuiltInFunction::function_noise2_10B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00a10B"),
-                &BuiltInFunction::function_textureQueryLod_00a10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00e20B00B"),
-                &BuiltInFunction::function_textureGather_00e20B00B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(10B10B"),
-                &BuiltInFunction::function_distance_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00Z20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00Z20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(00B"),
-                &BuiltInFunction::function_sign_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(00D"),
-                &BuiltInFunction::function_bitfieldReverse_00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(00E"),
-                &BuiltInFunction::function_bitfieldReverse_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(30E00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_30E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00I10B00B"),
-                &BuiltInFunction::function_textureLod_00I10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(10D10D"),
-                &BuiltInFunction::function_greaterThanEqual_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01f00D30B"),
-                &BuiltInFunction::function_imageStore_01f00D30B,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01I20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01I20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("degrees(30B"),
-                &BuiltInFunction::function_degrees_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(30B"),
-                &BuiltInFunction::function_inversesqrt_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(30C"),
-                &BuiltInFunction::function_inversesqrt_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01I20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01I20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00v20B00D"),
-                &BuiltInFunction::function_textureGather_00v20B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("intBitsToFloat(20D"),
-                &BuiltInFunction::function_intBitsToFloat_20D,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp(20B"),
-                &BuiltInFunction::function_exp_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01A10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01A10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01A10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01A10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acosh(00B"),
-                &BuiltInFunction::function_acosh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log(10B"),
-                &BuiltInFunction::function_log_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00S30B00B20D"),
-                &BuiltInFunction::function_textureProjLodOffset_00S30B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00L20B"),
-                &BuiltInFunction::function_textureGather_00L20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00n30B"),
-                &BuiltInFunction::function_textureProj_00n30B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00i00B"),
-                &BuiltInFunction::function_textureQueryLod_00i00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00p20B"),
-                &BuiltInFunction::function_texture_00p20B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(30B20B"),
-                &BuiltInFunction::function_outerProduct_30B20B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00S20B"),
-                &BuiltInFunction::function_texture_00S20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicXor(00D00D"),
-                &BuiltInFunction::function_atomicXor_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00Y20D00D"),
-                &BuiltInFunction::function_texelFetch_00Y20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01P10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01P10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01P10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01P10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01N10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01N10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01N10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01N10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(10D00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_10D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(30B"),
-                &BuiltInFunction::function_sign_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(30C"),
-                &BuiltInFunction::function_sign_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(30D"),
-                &BuiltInFunction::function_sign_30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00Y20B00B"),
-                &BuiltInFunction::function_texture_00Y20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdy(20B"),
-                &BuiltInFunction::function_dFdy_20B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdyExt_20B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00Y30B"),
-                &BuiltInFunction::function_textureProj_00Y30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00X10B10D00B"),
-                &BuiltInFunction::function_textureOffset_00X10B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrierBuffer("),
-                &BuiltInFunction::function_memoryBarrierBuffer_,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(00B"),
-                &BuiltInFunction::function_isinf_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(00C"),
-                &BuiltInFunction::function_isinf_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20D00D00D"),
-                &BuiltInFunction::function_clamp_20D00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00I20B00B"),
-                &BuiltInFunction::function_texture2DProj_00I20B00B,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(30B00B"),
-                &BuiltInFunction::function_mod_30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01A10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01A10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00O10B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00O10B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00f20B00B"),
-                &BuiltInFunction::function_textureGather_00f20B00B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00m30B"),
-                &BuiltInFunction::function_textureProj_00m30B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(20E20E"),
-                &BuiltInFunction::function_greaterThan_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00I30B00B"),
-                &BuiltInFunction::function_textureProjLod_00I30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(00B00B00B"),
-                &BuiltInFunction::function_refract_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryImageUniforms"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryImageUniforms,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(00y10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_00y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(00y10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_00y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01X10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01X10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01X10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01X10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00e00D"),
-                &BuiltInFunction::function_textureSize_00e00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00a20D00D"),
-                &BuiltInFunction::function_texelFetch_00a20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00C10C"),
-                &BuiltInFunction::function_step_00C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(30B30D"),
-                &BuiltInFunction::function_frexp_30B30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01Y10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01Y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00t00B00B"),
-                &BuiltInFunction::function_texture_00t00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30C00C"),
-                &BuiltInFunction::function_min_30C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01X10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01X10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00I10B"),
-                &BuiltInFunction::function_texture_00I10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_InstanceID"),
-                &BuiltInVariable::kVar_gl_InstanceID,
-                nullptr,
-                300,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(20B"),
-                &BuiltInFunction::function_normalize_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(20C"),
-                &BuiltInFunction::function_normalize_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01H20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01H20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inverse(F0B"),
-                &BuiltInFunction::function_inverse_F0B,
-                nullptr,
-                300,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01K00D"),
-                &BuiltInFunction::function_imageLoad_01K00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(20C20D"),
-                &BuiltInFunction::function_frexp_20C20D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(00B"),
-                &BuiltInFunction::function_atan_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00R10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00R10B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01h00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01h00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01h00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01h00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(30E30E"),
-                &BuiltInFunction::function_greaterThan_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01U20D00D30D"),
-                &BuiltInFunction::function_imageStore_01U20D00D30D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00p10D00D00D"),
-                &BuiltInFunction::function_texelFetchOffset_00p10D00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01J20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01J20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01J20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01J20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_DepthRange"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_DepthRange,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01S10D00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01S10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01K00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01K00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00o30B"),
-                &BuiltInFunction::function_textureProj_00o30B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01I20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01I20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(20D00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_20D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00L20B00B"),
-                &BuiltInFunction::function_texture_00L20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01L00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01L00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01L00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01L00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30D30D30F"),
-                &BuiltInFunction::function_mix_30D30D30F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Z20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01Z20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Z20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01Z20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Z20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01Z20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01f00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01f00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01f00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01f00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01h00D"),
-                &BuiltInFunction::function_imageLoad_01h00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01E20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01E20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00O30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00O30B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(10B"),
-                &BuiltInFunction::function_floor_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(10C"),
-                &BuiltInFunction::function_floor_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01R10D00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01R10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01R10D00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01R10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00o10B00B00D"),
-                &BuiltInFunction::function_textureProjLodOffset_00o10B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00x30B00D"),
-                &BuiltInFunction::function_textureGather_00x30B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtSample(10B00D"),
-                &BuiltInFunction::function_interpolateAtSample_10B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01F20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01F20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01F20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01F20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(10B30B"),
-                &BuiltInFunction::function_outerProduct_10B30B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01O10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01O10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cos(00B"),
-                &BuiltInFunction::function_cos_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01F20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01F20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(00C00D"),
-                &BuiltInFunction::function_frexp_00C00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterCompSwap(00G00E00E"),
-                &BuiltInFunction::function_atomicCounterCompSwap_00G00E00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00a20B10D00B"),
-                &BuiltInFunction::function_textureOffset_00a20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00X10B"),
-                &BuiltInFunction::function_textureGather_00X10B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00R10B10D00B"),
-                &BuiltInFunction::function_textureOffset_00R10B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00d10B00B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00d10B00B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentImageUniforms"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentImageUniforms,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00i00D"),
-                &BuiltInFunction::function_textureSize_00i00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(20E20E"),
-                &BuiltInFunction::function_equal_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uaddCarry(00E00E00E"),
-                &BuiltInFunction::function_uaddCarry_00E00E00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00T20B"),
-                &BuiltInFunction::function_textureQueryLod_00T20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCube(00K20B"),
-                &BuiltInFunction::function_textureCube_00K20B,
-                nullptr,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01U20D00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01U20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01U20D00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01U20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(90B90B"),
-                &BuiltInFunction::function_matrixCompMult_90B90B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01T20D00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01T20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01T20D00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01T20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00p10B00B00B00D"),
-                &BuiltInFunction::function_textureGradOffset_00p10B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00g30B00B00D"),
-                &BuiltInFunction::function_textureProjLodOffset_00g30B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30E00E00E"),
-                &BuiltInFunction::function_clamp_30E00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asin(00B"),
-                &BuiltInFunction::function_asin_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00J30B20D00B"),
-                &BuiltInFunction::function_textureProjOffset_00J30B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01W10D"),
-                &BuiltInFunction::function_imageLoad_01W10D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00w00D"),
-                &BuiltInFunction::function_texelFetch_00w00D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01b20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01b20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(30E30E"),
-                &BuiltInFunction::function_notEqual_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(10E10E"),
-                &BuiltInFunction::function_lessThanEqual_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(20C"),
-                &BuiltInFunction::function_inversesqrt_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(20B"),
-                &BuiltInFunction::function_inversesqrt_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00i20B00B"),
-                &BuiltInFunction::function_textureLod_00i20B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00u10B00D00B"),
-                &BuiltInFunction::function_textureOffset_00u10B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(00C00C"),
-                &BuiltInFunction::function_reflect_00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicAdd(00E00E"),
-                &BuiltInFunction::function_atomicAdd_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("intBitsToFloat(30D"),
-                &BuiltInFunction::function_intBitsToFloat_30D,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00v20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00v20B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00X10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00X10B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(30E30E"),
-                &BuiltInFunction::function_greaterThanEqual_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20B20B20F"),
-                &BuiltInFunction::function_mix_20B20B20F,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexAtomicCounters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexAtomicCounters,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00X20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00X20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("any(10F"),
-                &BuiltInFunction::function_any_10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00d30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00d30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01X10D"),
-                &BuiltInFunction::function_imageLoad_01X10D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00I30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00I30B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01W10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01W10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01W10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01W10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01W10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01W10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00X10B10D"),
-                &BuiltInFunction::function_textureOffset_00X10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01K00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01K00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00R10B"),
-                &BuiltInFunction::function_texture_00R10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01Z20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01Z20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01M00D30E"),
-                &BuiltInFunction::function_imageStore_01M00D30E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("radians(00B"),
-                &BuiltInFunction::function_radians_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01Y10D30E"),
-                &BuiltInFunction::function_imageStore_01Y10D30E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(10B10B"),
-                &BuiltInFunction::function_step_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxDualSourceDrawBuffersEXT"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxDualSourceDrawBuffersEXT,
-                0,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_blend_func_extended,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01Y10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01Y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01Y10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01Y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(10E"),
-                &BuiltInFunction::function_bitfieldReverse_10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(10D"),
-                &BuiltInFunction::function_bitfieldReverse_10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01g00D30D"),
-                &BuiltInFunction::function_imageStore_01g00D30D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00q20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00q20B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01S10D00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01S10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicXor(00E00E"),
-                &BuiltInFunction::function_atomicXor_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00C00C00F"),
-                &BuiltInFunction::function_mix_00C00C00F,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00g00B00B00D"),
-                &BuiltInFunction::function_textureLodOffset_00g00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(30B30B"),
-                &BuiltInFunction::function_greaterThan_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentAtomicCounters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentAtomicCounters,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(20B20B20B"),
-                &BuiltInFunction::function_faceforward_20B20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00x00D"),
-                &BuiltInFunction::function_textureSize_00x00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00S30B00B"),
-                &BuiltInFunction::function_textureProj_00S30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fma(20B20B20B"),
-                &BuiltInFunction::function_fma_20B20B20B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00o10B00B"),
-                &BuiltInFunction::function_textureProjLod_00o10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01J20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01J20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(30B30B"),
-                &BuiltInFunction::function_outerProduct_30B30B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp(30B"),
-                &BuiltInFunction::function_exp_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(10E"),
-                &BuiltInFunction::function_bitCount_10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(10D"),
-                &BuiltInFunction::function_bitCount_10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log(00B"),
-                &BuiltInFunction::function_log_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00F00F00F"),
-                &BuiltInFunction::function_mix_00F00F00F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01M00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01M00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01T20D00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01T20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01T20D00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01T20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("subpassLoad(01l00D"),
-                &BuiltInFunction::function_subpassLoad_01l00D,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01N10D30B"),
-                &BuiltInFunction::function_imageStore_01N10D30B,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acosh(30B"),
-                &BuiltInFunction::function_acosh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01Y10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01Y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01Y10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01Y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00X10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00X10B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00X10D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00X10D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packUnorm2x16(10B"),
-                &BuiltInFunction::function_packUnorm2x16_10B,
-                nullptr,
-                300,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00h20B00B"),
-                &BuiltInFunction::function_texture_00h20B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("umulExtended(20E20E20E20E"),
-                &BuiltInFunction::function_umulExtended_20E20E20E20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00m20B00B"),
-                &BuiltInFunction::function_texture_00m20B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00g30B00B00B00D"),
-                &BuiltInFunction::function_textureProjGradOffset_00g30B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00o30B00B"),
-                &BuiltInFunction::function_textureProj_00o30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCubeLod(00K20B00B"),
-                &BuiltInFunction::function_textureCubeLod_00K20B00B,
-                nullptr,
-                100,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00L00D"),
-                &BuiltInFunction::function_textureSize_00L00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01L00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01L00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20E00E"),
-                &BuiltInFunction::function_max_20E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00S30B"),
-                &BuiltInFunction::function_textureProj_00S30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdy(30B"),
-                &BuiltInFunction::function_dFdy_30B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdyExt_30B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01W10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01W10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(10C"),
-                &BuiltInFunction::function_isinf_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(10B"),
-                &BuiltInFunction::function_isinf_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00a20B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00a20B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexTextureImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexTextureImageUnits,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(30B30B"),
-                &BuiltInFunction::function_greaterThanEqual_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjLodEXT(00I20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DProjLodEXT_00I20B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FrontFacing"),
-                &BuiltInVariable::kVar_gl_FrontFacing,
-                nullptr,
-                0,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01C20D30D"),
-                &BuiltInFunction::function_imageStore_01C20D30D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00t10B00D00B"),
-                &BuiltInFunction::function_textureProjOffset_00t10B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01Z20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01Z20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acos(10B"),
-                &BuiltInFunction::function_acos_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCube(00K20B00B"),
-                &BuiltInFunction::function_textureCube_00K20B00B,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(10B10B"),
-                &BuiltInFunction::function_lessThan_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeAtomicCounterBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeAtomicCounterBuffers,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00f00D"),
-                &BuiltInFunction::function_textureSize_00f00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01B20D"),
-                &BuiltInFunction::function_imageLoad_01B20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00h10D00D00D"),
-                &BuiltInFunction::function_texelFetchOffset_00h10D00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(20C00C"),
-                &BuiltInFunction::function_mod_20C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01g00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01g00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LastFragColorARM"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_LastFragColorARM,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::ARM_shader_framebuffer_fetch,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(20D20D"),
-                &BuiltInFunction::function_lessThanEqual_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00k20B"),
-                &BuiltInFunction::function_textureQueryLod_00k20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00Y30B00B"),
-                &BuiltInFunction::function_textureProjLod_00Y30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_SecondaryFragColorEXT"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_SecondaryFragColorEXT,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_blend_func_extended,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01U20D00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01U20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01U20D00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01U20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_BaseInstance"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_BaseInstance,
-                nullptr,
-                300,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_base_vertex_base_instance,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(B0B"),
-                &BuiltInFunction::function_transpose_B0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01b20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01b20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20F20F20F"),
-                &BuiltInFunction::function_mix_20F20F20F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00B00B30B"),
-                &BuiltInFunction::function_smoothstep_00B00B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01M00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01M00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01F20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01F20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01M00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01M00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01M00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01M00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01F20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01F20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00N10D00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetch_00N10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00a00D"),
-                &BuiltInFunction::function_textureSize_00a00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01T20D00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01T20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00Y30B20D"),
-                &BuiltInFunction::function_textureProjOffset_00Y30B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(30E"),
-                &BuiltInFunction::function_bitCount_30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(30B"),
-                &BuiltInFunction::function_atan_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00R10B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00R10B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01b20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01b20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(10B"),
-                &BuiltInFunction::function_ceil_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00S00D"),
-                &BuiltInFunction::function_textureSize_00S00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01S10D00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01S10D00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterDecrement(00G"),
-                &BuiltInFunction::function_atomicCounterDecrement_00G,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(30B"),
-                &BuiltInFunction::function_ceil_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00t00D"),
-                &BuiltInFunction::function_textureSize_00t00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrier("),
-                &BuiltInFunction::function_memoryBarrier_,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00f30B"),
-                &BuiltInFunction::function_texture_00f30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSamples(01R"),
-                &BuiltInFunction::function_imageSamples_01R,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00R10D00D"),
-                &BuiltInFunction::function_texelFetch_00R10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(20B"),
-                &BuiltInFunction::function_sign_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(30B30B30B"),
-                &BuiltInFunction::function_smoothstep_30B30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00R10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00R10B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(00D00D"),
-                &BuiltInFunction::function_min_00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00t10B00B"),
-                &BuiltInFunction::function_textureProj_00t10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01W10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01W10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01V20D00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01V20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(20B20D"),
-                &BuiltInFunction::function_ldexp_20B20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(30D30D"),
-                &BuiltInFunction::function_greaterThanEqual_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01D20D"),
-                &BuiltInFunction::function_imageLoad_01D20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(10E"),
-                &BuiltInFunction::function_findLSB_10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00Z20B00B"),
-                &BuiltInFunction::function_texture_00Z20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01S10D00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01S10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01S10D00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01S10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cos(10B"),
-                &BuiltInFunction::function_cos_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00v10D"),
-                &BuiltInFunction::function_texelFetch_00v10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00e30B"),
-                &BuiltInFunction::function_texture_00e30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01W10D30B"),
-                &BuiltInFunction::function_imageStore_01W10D30B,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00T00D"),
-                &BuiltInFunction::function_textureSize_00T00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01g00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01g00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00u00D"),
-                &BuiltInFunction::function_textureSize_00u00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00Y30B20B20B20D"),
-                &BuiltInFunction::function_textureProjGradOffset_00Y30B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise3(30B"),
-                &BuiltInFunction::function_noise3_30B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00T20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00T20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1DProj(00g10B00B"),
-                &BuiltInFunction::function_texture1DProj_00g10B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00d30B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00d30B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00X10B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00X10B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01U20D00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01U20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01U20D00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01U20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01h00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01h00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01h00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01h00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(50B50B"),
-                &BuiltInFunction::function_matrixCompMult_50B50B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(30B30B"),
-                &BuiltInFunction::function_equal_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01E20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01E20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00U20B00B"),
-                &BuiltInFunction::function_textureLod_00U20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01I20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01I20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01I20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01I20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00h10B00D"),
-                &BuiltInFunction::function_textureOffset_00h10B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00p10B00B"),
-                &BuiltInFunction::function_textureLod_00p10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20C20C"),
-                &BuiltInFunction::function_max_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10B10B"),
-                &BuiltInFunction::function_max_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PointSize"),
-                &BuiltInVariable::kVar_gl_PointSize,
-                nullptr,
-                0,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01B20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01B20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asin(10B"),
-                &BuiltInFunction::function_asin_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sinh(00B"),
-                &BuiltInFunction::function_sinh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01g00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01g00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01h00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01h00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00S20B20D"),
-                &BuiltInFunction::function_textureOffset_00S20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fma(20C20C20C"),
-                &BuiltInFunction::function_fma_20C20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01N10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01N10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00R20B"),
-                &BuiltInFunction::function_textureProj_00R20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(10E10E"),
-                &BuiltInFunction::function_greaterThan_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01M00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01M00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01M00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01M00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("EmitVertex("),
-                &BuiltInFunction::function_EmitVertex_,
-                nullptr,
-                -1,
-                150,
-                Shader::GEOMETRY,
-                &BuiltInFunction::function_EmitVertex_,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(20B20B20B"),
-                &BuiltInFunction::function_smoothstep_20B20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSamples(00b"),
-                &BuiltInFunction::function_textureSamples_00b,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00J20B20D"),
-                &BuiltInFunction::function_textureOffset_00J20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00J20D00D"),
-                &BuiltInFunction::function_texelFetch_00J20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01V20D00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01V20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01V20D00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01V20D00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01Y10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01Y10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(00y10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_00y10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(00y10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_00y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(00y10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_00y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_ViewID_OVR"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_ViewID_OVR,
-                nullptr,
-                300,
-                Shader::NOT_COMPUTE,
-                &ShBuiltInResources::OVR_multiview,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("radians(30B"),
-                &BuiltInFunction::function_radians_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(30B"),
-                &BuiltInFunction::function_fract_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01B20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01B20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01B20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01B20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01H20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01H20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uaddCarry(20E20E20E"),
-                &BuiltInFunction::function_uaddCarry_20E20E20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00X30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00X30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSamples(00P"),
-                &BuiltInFunction::function_textureSamples_00P,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00v20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00v20B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow2D(00d20B00B"),
-                &BuiltInFunction::function_shadow2D_00d20B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00o00D00D00D"),
-                &BuiltInFunction::function_texelFetchOffset_00o00D00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSamples(00V"),
-                &BuiltInFunction::function_textureSamples_00V,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSamples(00W"),
-                &BuiltInFunction::function_textureSamples_00W,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00q30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00q30B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00O10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00O10B10D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10D00D00D"),
-                &BuiltInFunction::function_clamp_10D00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeImageUniforms"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeImageUniforms,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00L20B00B"),
-                &BuiltInFunction::function_textureLod_00L20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01A10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01A10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01V20D00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01V20D00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01A10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01A10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01A10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01A10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01b20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01b20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00n20B"),
-                &BuiltInFunction::function_texture_00n20B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(20C20D"),
-                &BuiltInFunction::function_ldexp_20C20D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(00E00E00E"),
-                &BuiltInFunction::function_clamp_00E00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(20B"),
-                &BuiltInFunction::function_length_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(00B00D"),
-                &BuiltInFunction::function_ldexp_00B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01N10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01N10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(00D00D00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_00D00D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00Y30B20B20B"),
-                &BuiltInFunction::function_textureProjGrad_00Y30B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(30B"),
-                &BuiltInFunction::function_roundEven_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(30C"),
-                &BuiltInFunction::function_roundEven_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acosh(20B"),
-                &BuiltInFunction::function_acosh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atanh(10B"),
-                &BuiltInFunction::function_atanh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(20C"),
-                &BuiltInFunction::function_length_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10B10B10B"),
-                &BuiltInFunction::function_clamp_10B10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00L20B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00L20B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(00D"),
-                &BuiltInFunction::function_bitCount_00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(00E"),
-                &BuiltInFunction::function_bitCount_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01N10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01N10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToInt(30B"),
-                &BuiltInFunction::function_floatBitsToInt_30B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20B00B"),
-                &BuiltInFunction::function_max_20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(00z10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_00z10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00Y20D00D20D"),
-                &BuiltInFunction::function_texelFetchOffset_00Y20D00D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicExchange(00E00E"),
-                &BuiltInFunction::function_atomicExchange_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01h00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01h00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01h00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01h00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(30C30D"),
-                &BuiltInFunction::function_ldexp_30C30D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00o00B"),
-                &BuiltInFunction::function_texture_00o00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00X10B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00X10B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(20B20B"),
-                &BuiltInFunction::function_lessThanEqual_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10B00B"),
-                &BuiltInFunction::function_min_10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00f10B"),
-                &BuiltInFunction::function_textureQueryLod_00f10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(10C10C10C"),
-                &BuiltInFunction::function_smoothstep_10C10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00U20B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00U20B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01L00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01L00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01L00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01L00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30F30F30F"),
-                &BuiltInFunction::function_mix_30F30F30F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(20D"),
-                &BuiltInFunction::function_abs_20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(20C"),
-                &BuiltInFunction::function_abs_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(20B"),
-                &BuiltInFunction::function_abs_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(10B10B"),
-                &BuiltInFunction::function_lessThanEqual_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01f00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01f00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01f00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01f00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01a20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01a20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00B00B00B"),
-                &BuiltInFunction::function_mix_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00B00B00F"),
-                &BuiltInFunction::function_mix_00B00B00F,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00s30B00D"),
-                &BuiltInFunction::function_textureGather_00s30B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00I20B"),
-                &BuiltInFunction::function_textureProj_00I20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01B20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01B20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00p10B00B00D"),
-                &BuiltInFunction::function_textureLodOffset_00p10B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexAtomicCounterBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexAtomicCounterBuffers,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackDouble2x32(00C"),
-                &BuiltInFunction::function_unpackDouble2x32_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acos(00B"),
-                &BuiltInFunction::function_acos_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00J20B20B20B20D"),
-                &BuiltInFunction::function_textureGradOffset_00J20B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fma(00C00C00C"),
-                &BuiltInFunction::function_fma_00C00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DGradEXT(00I10B10B10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DGradEXT_00I10B10B10B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01G20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01G20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01I20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01I20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjGradEXT(00I30B10B10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DProjGradEXT_00I30B10B10B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fma(30B30B30B"),
-                &BuiltInFunction::function_fma_30B30B30B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01L00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01L00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00i20B00B"),
-                &BuiltInFunction::function_texture_00i20B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeWorkGroupCount"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeWorkGroupCount,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20C00C00C"),
-                &BuiltInFunction::function_clamp_20C00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01X10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01X10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(00y10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_00y10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30E30E30F"),
-                &BuiltInFunction::function_mix_30E30E30F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01b20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01b20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01G20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01G20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01G20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01G20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00I10B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00I10B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01S10D00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01S10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(20B"),
-                &BuiltInFunction::function_atan_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01Z20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01Z20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtSample(30B00D"),
-                &BuiltInFunction::function_interpolateAtSample_30B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdxCoarse(30B"),
-                &BuiltInFunction::function_dFdxCoarse_30B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00M10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00M10B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10B10B"),
-                &BuiltInFunction::function_min_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00h10B00B00D"),
-                &BuiltInFunction::function_textureLodOffset_00h10B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("EndStreamPrimitive(00D"),
-                &BuiltInFunction::function_EndStreamPrimitive_00D,
-                nullptr,
-                -1,
-                400,
-                Shader::GEOMETRY,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("pow(10B10B"),
-                &BuiltInFunction::function_pow_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00Y20B"),
-                &BuiltInFunction::function_texture_00Y20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01P10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01P10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00X10B00B"),
-                &BuiltInFunction::function_texture_00X10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(00B00D"),
-                &BuiltInFunction::function_frexp_00B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2D(00I10B"),
-                &BuiltInFunction::function_texture2D_00I10B,
-                nullptr,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01O10D"),
-                &BuiltInFunction::function_imageLoad_01O10D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(20C"),
-                &BuiltInFunction::function_ceil_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(20B"),
-                &BuiltInFunction::function_ceil_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01b20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01b20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01b20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01b20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01P10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01P10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01P10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01P10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01P10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01P10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00R20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00R20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01V20D00D30E"),
-                &BuiltInFunction::function_imageStore_01V20D00D30E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01T20D00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01T20D00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("subpassLoad(01m00D"),
-                &BuiltInFunction::function_subpassLoad_01m00D,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00I10B10D"),
-                &BuiltInFunction::function_textureOffset_00I10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20B00B"),
-                &BuiltInFunction::function_min_20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(00B00B"),
-                &BuiltInFunction::function_reflect_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise4(10B"),
-                &BuiltInFunction::function_noise4_10B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(10C"),
-                &BuiltInFunction::function_sqrt_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(10B"),
-                &BuiltInFunction::function_sqrt_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01Z20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01Z20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01Z20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01Z20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20E20E20E"),
-                &BuiltInFunction::function_clamp_20E20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00g00B00B00B00D"),
-                &BuiltInFunction::function_textureGradOffset_00g00B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00q20B"),
-                &BuiltInFunction::function_textureGather_00q20B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise3(00B"),
-                &BuiltInFunction::function_noise3_00B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01G20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01G20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01G20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01G20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01C20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01C20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01C20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01C20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01F20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01F20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00d30B00B"),
-                &BuiltInFunction::function_textureProjLod_00d30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01a20D30D"),
-                &BuiltInFunction::function_imageStore_01a20D30D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01H20D"),
-                &BuiltInFunction::function_imageLoad_01H20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00I20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00I20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtSample(20B00D"),
-                &BuiltInFunction::function_interpolateAtSample_20B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(10B10B"),
-                &BuiltInFunction::function_reflect_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(10B10B00B"),
-                &BuiltInFunction::function_refract_10B10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01h00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01h00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20C20C20F"),
-                &BuiltInFunction::function_mix_20C20C20F,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01X10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01X10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01X10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01X10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20C20C20C"),
-                &BuiltInFunction::function_mix_20C20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00v10B10D"),
-                &BuiltInFunction::function_textureOffset_00v10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01P10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01P10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sinh(30B"),
-                &BuiltInFunction::function_sinh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00m00D"),
-                &BuiltInFunction::function_textureSize_00m00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00e20B"),
-                &BuiltInFunction::function_textureQueryLod_00e20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asinh(20B"),
-                &BuiltInFunction::function_asinh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01C20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01C20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01I20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01I20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00O20B"),
-                &BuiltInFunction::function_textureProj_00O20B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00O20B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01M00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01M00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(10B10D"),
-                &BuiltInFunction::function_frexp_10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inverse(50B"),
-                &BuiltInFunction::function_inverse_50B,
-                nullptr,
-                300,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(10B10B"),
-                &BuiltInFunction::function_dot_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01T20D00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01T20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01T20D00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01T20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise2(00B"),
-                &BuiltInFunction::function_noise2_00B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00o10B00B00B00D"),
-                &BuiltInFunction::function_textureProjGradOffset_00o10B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("radians(20B"),
-                &BuiltInFunction::function_radians_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCompSwap(00E00E00E"),
-                &BuiltInFunction::function_atomicCompSwap_00E00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00I00B00B00B"),
-                &BuiltInFunction::function_textureGrad_00I00B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00Y20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00Y20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexUniformVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexUniformVectors,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00o00B00D00B"),
-                &BuiltInFunction::function_textureOffset_00o00B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ftransform("),
-                &BuiltInFunction::function_ftransform_,
-                nullptr,
-                -1,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00X20B"),
-                &BuiltInFunction::function_textureProj_00X20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00n30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00n30B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryUniformComponents"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryUniformComponents,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(20E20E"),
-                &BuiltInFunction::function_greaterThanEqual_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00M20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00M20B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3DProjLod(00J30B00B"),
-                &BuiltInFunction::function_texture3DProjLod_00J30B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_texture3DProjLod_00J30B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(30C"),
-                &BuiltInFunction::function_isinf_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01S10D00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01S10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10D10D10F"),
-                &BuiltInFunction::function_mix_10D10D10F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00g10B00B00B"),
-                &BuiltInFunction::function_textureProjGrad_00g10B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log(20B"),
-                &BuiltInFunction::function_log_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01D20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01D20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01D20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01D20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00h10B00D00B"),
-                &BuiltInFunction::function_textureOffset_00h10B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(30B30B"),
-                &BuiltInFunction::function_modf_30B30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(20C"),
-                &BuiltInFunction::function_roundEven_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(20B"),
-                &BuiltInFunction::function_roundEven_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(30B10B"),
-                &BuiltInFunction::function_outerProduct_30B10B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00J30B"),
-                &BuiltInFunction::function_textureProj_00J30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(00y10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_00y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(00y10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_00y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01F20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01F20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01F20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01F20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00t00B00B00D"),
-                &BuiltInFunction::function_textureLodOffset_00t00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToInt(20B"),
-                &BuiltInFunction::function_floatBitsToInt_20B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00U20D00D"),
-                &BuiltInFunction::function_texelFetch_00U20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(00D00D"),
-                &BuiltInFunction::function_max_00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicMin(00E00E"),
-                &BuiltInFunction::function_atomicMin_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01Q10D00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01Q10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01Q10D00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01Q10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00v10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00v10B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00n20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00n20B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01S10D00D"),
-                &BuiltInFunction::function_imageLoad_01S10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20E20E"),
-                &BuiltInFunction::function_max_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01F20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01F20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(10D"),
-                &BuiltInFunction::function_abs_10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(10B"),
-                &BuiltInFunction::function_abs_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(10C"),
-                &BuiltInFunction::function_abs_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragDepthEXT"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_FragDepthEXT,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_frag_depth,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01V20D00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01V20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(30C30C"),
-                &BuiltInFunction::function_modf_30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01g00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01g00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00i20B00B00B"),
-                &BuiltInFunction::function_textureGrad_00i20B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00g10B"),
-                &BuiltInFunction::function_textureProj_00g10B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(20B20B"),
-                &BuiltInFunction::function_equal_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00X20B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00X20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30C00C"),
-                &BuiltInFunction::function_max_30C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01W10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01W10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00a20B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00a20B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00U20B00B"),
-                &BuiltInFunction::function_texture_00U20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00I30B"),
-                &BuiltInFunction::function_textureProj_00I30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00E00E00F"),
-                &BuiltInFunction::function_mix_00E00E00F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01h00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01h00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00D00D00F"),
-                &BuiltInFunction::function_mix_00D00D00F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidthFine(00B"),
-                &BuiltInFunction::function_fwidthFine_00B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00i20B"),
-                &BuiltInFunction::function_texture_00i20B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00a20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00a20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00B00B20B"),
-                &BuiltInFunction::function_smoothstep_00B00B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00s30B00B"),
-                &BuiltInFunction::function_textureLod_00s30B00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01C20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01C20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01C20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01C20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01g00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01g00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(30B30B"),
-                &BuiltInFunction::function_notEqual_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01W10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01W10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00f20B00B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00f20B00B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01T20D00D"),
-                &BuiltInFunction::function_imageLoad_01T20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(00y"),
-                &BuiltInFunction::function_imageSize_00y,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01W10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01W10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(00z"),
-                &BuiltInFunction::function_imageSize_00z,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(10C10C"),
-                &BuiltInFunction::function_mod_10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01g00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01g00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(00C00C00C"),
-                &BuiltInFunction::function_faceforward_00C00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00a20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00a20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01R10D00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01R10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01T20D00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01T20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdxCoarse(00B"),
-                &BuiltInFunction::function_dFdxCoarse_00B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01a20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01a20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00J20B00B"),
-                &BuiltInFunction::function_texture_00J20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(20B20B00B"),
-                &BuiltInFunction::function_refract_20B20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(30C"),
-                &BuiltInFunction::function_ceil_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryOutputComponents"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryOutputComponents,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise1(30B"),
-                &BuiltInFunction::function_noise1_30B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log2(30B"),
-                &BuiltInFunction::function_log2_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00d30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00d30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(20C20C"),
-                &BuiltInFunction::function_mod_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(30C"),
-                &BuiltInFunction::function_fract_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00t00D00D"),
-                &BuiltInFunction::function_texelFetch_00t00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01L00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01L00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30E30E"),
-                &BuiltInFunction::function_max_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentAtomicCounterBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentAtomicCounterBuffers,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_in"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_in,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise4(00B"),
-                &BuiltInFunction::function_noise4_00B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(10C10C"),
-                &BuiltInFunction::function_distance_10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00J30B00B20D"),
-                &BuiltInFunction::function_textureProjLodOffset_00J30B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01H20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01H20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01H20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01H20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01h00D30E"),
-                &BuiltInFunction::function_imageStore_01h00D30E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00d10B00B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00d10B00B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00c20D00D"),
-                &BuiltInFunction::function_texelFetch_00c20D00D,
-                nullptr,
-                -1,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00c20D00D,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(00B"),
-                &BuiltInFunction::function_sqrt_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(00C"),
-                &BuiltInFunction::function_sqrt_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00R30B00B"),
-                &BuiltInFunction::function_textureProjLod_00R30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise3(10B"),
-                &BuiltInFunction::function_noise3_10B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00q10D"),
-                &BuiltInFunction::function_texelFetch_00q10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01F20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01F20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00m20B00B"),
-                &BuiltInFunction::function_textureLod_00m20B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00m30B00D00B"),
-                &BuiltInFunction::function_textureProjOffset_00m30B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00v30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00v30B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20D20D20D"),
-                &BuiltInFunction::function_clamp_20D20D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01P10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01P10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01C20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01C20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(00C00C00C"),
-                &BuiltInFunction::function_clamp_00C00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01b20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01b20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10E00E"),
-                &BuiltInFunction::function_max_10E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00U20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00U20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01B20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01B20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(00z10D"),
-                &BuiltInFunction::function_imageLoad_00z10D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30C00C00C"),
-                &BuiltInFunction::function_clamp_30C00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sinh(20B"),
-                &BuiltInFunction::function_sinh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(E0BE0B"),
-                &BuiltInFunction::function_matrixCompMult_E0BE0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00q20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00q20B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PerVertex"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_PerVertex,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00m20B00B00B00D"),
-                &BuiltInFunction::function_textureGradOffset_00m20B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00p"),
-                &BuiltInFunction::function_textureQueryLevels_00p,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_WorkGroupSize"),
-                &BuiltInVariable::kVar_gl_WorkGroupSize,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asinh(30B"),
-                &BuiltInFunction::function_asinh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cross(20C20C"),
-                &BuiltInFunction::function_cross_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00a20B"),
-                &BuiltInFunction::function_textureGather_00a20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00O20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00O20B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("pow(30B30B"),
-                &BuiltInFunction::function_pow_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01G20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01G20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(10B10B10B"),
-                &BuiltInFunction::function_smoothstep_10B10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00O30B"),
-                &BuiltInFunction::function_textureProj_00O30B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00O30B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01Q10D00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01Q10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00R10B"),
-                &BuiltInFunction::function_textureQueryLod_00R10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01T20D00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01T20D00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01R10D00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01R10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01R10D00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01R10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01E20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01E20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01E20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01E20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(00B"),
-                &BuiltInFunction::function_isnan_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(00C"),
-                &BuiltInFunction::function_isnan_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imulExtended(10D10D10D10D"),
-                &BuiltInFunction::function_imulExtended_10D10D10D10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00o10B00B00B"),
-                &BuiltInFunction::function_textureProjGrad_00o10B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(10C10C00B"),
-                &BuiltInFunction::function_refract_10C10C00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(00E00E"),
-                &BuiltInFunction::function_min_00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00I30B"),
-                &BuiltInFunction::function_texture2DProj_00I30B,
-                nullptr,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00I10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00I10B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00J20B00B20D"),
-                &BuiltInFunction::function_textureLodOffset_00J20B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(20B20B"),
-                &BuiltInFunction::function_notEqual_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCompSwap(00D00D00D"),
-                &BuiltInFunction::function_atomicCompSwap_00D00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01W10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01W10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01W10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01W10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00i20B00D"),
-                &BuiltInFunction::function_textureOffset_00i20B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdyFine(00B"),
-                &BuiltInFunction::function_dFdyFine_00B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00a20B00B"),
-                &BuiltInFunction::function_textureLod_00a20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00N30B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00N30B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(30C30C00B"),
-                &BuiltInFunction::function_refract_30C30C00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(30D30D"),
-                &BuiltInFunction::function_equal_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packSnorm2x16(10B"),
-                &BuiltInFunction::function_packSnorm2x16_10B,
-                nullptr,
-                300,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToUint(30B"),
-                &BuiltInFunction::function_floatBitsToUint_30B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(00y10D"),
-                &BuiltInFunction::function_imageLoad_00y10D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00R10B10D"),
-                &BuiltInFunction::function_textureOffset_00R10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00q20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00q20B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00R20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00R20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(30B30D"),
-                &BuiltInFunction::function_ldexp_30B30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30B00B"),
-                &BuiltInFunction::function_max_30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01Q10D00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01Q10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterOr(00G00E"),
-                &BuiltInFunction::function_atomicCounterOr_00G00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(30B30B"),
-                &BuiltInFunction::function_step_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01T20D00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01T20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01T20D00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01T20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00I30B00B"),
-                &BuiltInFunction::function_textureProj_00I30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01D20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01D20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00g00B00D00B"),
-                &BuiltInFunction::function_textureOffset_00g00B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01D20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01D20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01g00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01g00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(00D"),
-                &BuiltInFunction::function_abs_00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(00C"),
-                &BuiltInFunction::function_abs_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(00B"),
-                &BuiltInFunction::function_abs_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00R10B00B"),
-                &BuiltInFunction::function_textureLod_00R10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdxCoarse(10B"),
-                &BuiltInFunction::function_dFdxCoarse_10B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1D(00g00B"),
-                &BuiltInFunction::function_texture1D_00g00B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(10C10D"),
-                &BuiltInFunction::function_frexp_10C10D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01B20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01B20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01g00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01g00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DLod(00I10B00B"),
-                &BuiltInFunction::function_texture2DLod_00I10B00B,
-                nullptr,
-                100,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00X20B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00X20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(20C"),
-                &BuiltInFunction::function_round_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("EndPrimitive("),
-                &BuiltInFunction::function_EndPrimitive_,
-                nullptr,
-                -1,
-                150,
-                Shader::GEOMETRY,
-                &BuiltInFunction::function_EndPrimitive_,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00B30B"),
-                &BuiltInFunction::function_step_00B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(20B"),
-                &BuiltInFunction::function_round_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(30E30E"),
-                &BuiltInFunction::function_equal_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01R10D00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01R10D00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00C20C"),
-                &BuiltInFunction::function_step_00C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(00C00C"),
-                &BuiltInFunction::function_dot_00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30C30C"),
-                &BuiltInFunction::function_max_30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicOr(00D00D"),
-                &BuiltInFunction::function_atomicOr_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00M20B"),
-                &BuiltInFunction::function_texture2DProj_00M20B,
-                nullptr,
-                100,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(10D10D"),
-                &BuiltInFunction::function_notEqual_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00V"),
-                &BuiltInFunction::function_textureSize_00V,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00V,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01h00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01h00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20C00C"),
-                &BuiltInFunction::function_min_20C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01G20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01G20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01G20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01G20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(30D"),
-                &BuiltInFunction::function_findLSB_30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(30E"),
-                &BuiltInFunction::function_findLSB_30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00X20B00B"),
-                &BuiltInFunction::function_textureProj_00X20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow2D(00d20B"),
-                &BuiltInFunction::function_shadow2D_00d20B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01N10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01N10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01N10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01N10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00U20B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00U20B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(10B10B10B"),
-                &BuiltInFunction::function_faceforward_10B10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01h00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01h00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10D00D"),
-                &BuiltInFunction::function_min_10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01B20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01B20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01B20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01B20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("EmitStreamVertex(00D"),
-                &BuiltInFunction::function_EmitStreamVertex_00D,
-                nullptr,
-                -1,
-                400,
-                Shader::GEOMETRY,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01J20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01J20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("all(20F"),
-                &BuiltInFunction::function_all_20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01J"),
-                &BuiltInFunction::function_imageSize_01J,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01K"),
-                &BuiltInFunction::function_imageSize_01K,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01H"),
-                &BuiltInFunction::function_imageSize_01H,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01I"),
-                &BuiltInFunction::function_imageSize_01I,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packHalf2x16(10B"),
-                &BuiltInFunction::function_packHalf2x16_10B,
-                nullptr,
-                300,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00I20B00B"),
-                &BuiltInFunction::function_textureProj_00I20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01L"),
-                &BuiltInFunction::function_imageSize_01L,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01M"),
-                &BuiltInFunction::function_imageSize_01M,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01B"),
-                &BuiltInFunction::function_imageSize_01B,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01C"),
-                &BuiltInFunction::function_imageSize_01C,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00r00D"),
-                &BuiltInFunction::function_texelFetch_00r00D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01F"),
-                &BuiltInFunction::function_imageSize_01F,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01G"),
-                &BuiltInFunction::function_imageSize_01G,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01D"),
-                &BuiltInFunction::function_imageSize_01D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01E"),
-                &BuiltInFunction::function_imageSize_01E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01Z"),
-                &BuiltInFunction::function_imageSize_01Z,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01L00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01L00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01Z20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01Z20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00X10D00D"),
-                &BuiltInFunction::function_texelFetch_00X10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(30F30F"),
-                &BuiltInFunction::function_notEqual_30F30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01R"),
-                &BuiltInFunction::function_imageSize_01R,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01S"),
-                &BuiltInFunction::function_imageSize_01S,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01P"),
-                &BuiltInFunction::function_imageSize_01P,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01Q"),
-                &BuiltInFunction::function_imageSize_01Q,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01V"),
-                &BuiltInFunction::function_imageSize_01V,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00g00B"),
-                &BuiltInFunction::function_textureQueryLod_00g00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01T"),
-                &BuiltInFunction::function_imageSize_01T,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01U"),
-                &BuiltInFunction::function_imageSize_01U,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01h"),
-                &BuiltInFunction::function_imageSize_01h,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(20C"),
-                &BuiltInFunction::function_fract_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(20B"),
-                &BuiltInFunction::function_fract_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00X10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00X10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01c"),
-                &BuiltInFunction::function_imageSize_01c,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01a"),
-                &BuiltInFunction::function_imageSize_01a,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01f"),
-                &BuiltInFunction::function_imageSize_01f,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjGradEXT(00I20B10B10B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DProjGradEXT_00I20B10B10B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01d"),
-                &BuiltInFunction::function_imageSize_01d,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00S20B00B"),
-                &BuiltInFunction::function_textureLod_00S20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(30C30C"),
-                &BuiltInFunction::function_step_30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01J20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01J20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragDepth"),
-                &BuiltInVariable::kVar_gl_FragDepth,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00x30B"),
-                &BuiltInFunction::function_textureGather_00x30B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30B30B30F"),
-                &BuiltInFunction::function_mix_30B30B30F,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30B30B30B"),
-                &BuiltInFunction::function_mix_30B30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00Z20B00D"),
-                &BuiltInFunction::function_textureGather_00Z20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise4(30B"),
-                &BuiltInFunction::function_noise4_30B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(30C"),
-                &BuiltInFunction::function_sqrt_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(30B"),
-                &BuiltInFunction::function_sqrt_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01E20D30B"),
-                &BuiltInFunction::function_imageStore_01E20D30B,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp(00B"),
-                &BuiltInFunction::function_exp_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30D30D"),
-                &BuiltInFunction::function_max_30D30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryTextureImageUnits"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryTextureImageUnits,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtCentroid(10B"),
-                &BuiltInFunction::function_interpolateAtCentroid_10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00q10B"),
-                &BuiltInFunction::function_texture_00q10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00M00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSize_00M00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSamples(00c"),
-                &BuiltInFunction::function_textureSamples_00c,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("angle_BaseInstance"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_angle_BaseInstance,
-                nullptr,
-                0,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_base_vertex_base_instance,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10F10F10F"),
-                &BuiltInFunction::function_mix_10F10F10F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00U20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00U20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_Position"),
-                &BuiltInVariable::kVar_gl_Position,
-                nullptr,
-                0,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_PositionGS,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00O10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00O10B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00M30B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00M30B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00L20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00L20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01V20D00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01V20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01J20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01J20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01J20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01J20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01J20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01J20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00l20B"),
-                &BuiltInFunction::function_textureQueryLod_00l20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01M00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01M00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(20B20B"),
-                &BuiltInFunction::function_dot_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00v20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00v20B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00S30B00B"),
-                &BuiltInFunction::function_textureProjLod_00S30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00R20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00R20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(00z10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_00z10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(00z10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_00z10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(30C"),
-                &BuiltInFunction::function_normalize_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(30B"),
-                &BuiltInFunction::function_normalize_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00O10B10D"),
-                &BuiltInFunction::function_textureOffset_00O10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00I20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00I20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00e20B"),
-                &BuiltInFunction::function_textureGather_00e20B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01V20D00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01V20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2D(00M10B"),
-                &BuiltInFunction::function_texture2D_00M10B,
-                nullptr,
-                100,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01a20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01a20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidthFine(30B"),
-                &BuiltInFunction::function_fwidthFine_30B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00K20B00D"),
-                &BuiltInFunction::function_textureGather_00K20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCubeLodEXT(00K20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureCubeLodEXT_00K20B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00T20B00D"),
-                &BuiltInFunction::function_textureGather_00T20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00N20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00N20B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00I10B"),
-                &BuiltInFunction::function_textureQueryLod_00I10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01A10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01A10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdyFine(10B"),
-                &BuiltInFunction::function_dFdyFine_10B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(10C10C"),
-                &BuiltInFunction::function_modf_10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01E20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01E20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01E20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01E20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00X30B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00X30B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00m30B00B"),
-                &BuiltInFunction::function_textureProjLod_00m30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00g30B00D00B"),
-                &BuiltInFunction::function_textureProjOffset_00g30B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00U20D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00U20D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(00z10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_00z10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01D20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01D20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00q30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00q30B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00d20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00d20B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidthCoarse(20B"),
-                &BuiltInFunction::function_fwidthCoarse_20B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00d30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00d30B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(20F20F"),
-                &BuiltInFunction::function_equal_20F20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString(""),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20C20C00C"),
-                &BuiltInFunction::function_mix_20C20C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("usubBorrow(10E10E10E"),
-                &BuiltInFunction::function_usubBorrow_10E10E10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01S10D00D30E"),
-                &BuiltInFunction::function_imageStore_01S10D00D30E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(10B10B"),
-                &BuiltInFunction::function_equal_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Q10D00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01Q10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Q10D00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01Q10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Q10D00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01Q10D00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00U20B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00U20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(10C"),
-                &BuiltInFunction::function_isnan_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(10B"),
-                &BuiltInFunction::function_isnan_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01H20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01H20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01A10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01A10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01A10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01A10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01C20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01C20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00R00B00B00B"),
-                &BuiltInFunction::function_textureGrad_00R00B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01W10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01W10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01W10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01W10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicMin(00D00D"),
-                &BuiltInFunction::function_atomicMin_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00X00D"),
-                &BuiltInFunction::function_textureSize_00X00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(10B10B"),
-                &BuiltInFunction::function_greaterThan_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(00C00C00C"),
-                &BuiltInFunction::function_mix_00C00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30D00D00D"),
-                &BuiltInFunction::function_clamp_30D00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20E20E20F"),
-                &BuiltInFunction::function_mix_20E20E20F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToInt(10B"),
-                &BuiltInFunction::function_floatBitsToInt_10B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00R30B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00R30B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00U20B00D"),
-                &BuiltInFunction::function_textureGather_00U20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToInt(00B"),
-                &BuiltInFunction::function_floatBitsToInt_00B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01a20D"),
-                &BuiltInFunction::function_imageLoad_01a20D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToUint(00B"),
-                &BuiltInFunction::function_floatBitsToUint_00B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30C30C"),
-                &BuiltInFunction::function_min_30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSamples(00Q"),
-                &BuiltInFunction::function_textureSamples_00Q,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00i20B00B00B00D"),
-                &BuiltInFunction::function_textureGradOffset_00i20B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(00z10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_00z10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DRectProj(00O20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DRectProj_00O20B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(20C20C"),
-                &BuiltInFunction::function_modf_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tan(20B"),
-                &BuiltInFunction::function_tan_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(00C"),
-                &BuiltInFunction::function_floor_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(00B"),
-                &BuiltInFunction::function_floor_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01O10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01O10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01O10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01O10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(30C30C"),
-                &BuiltInFunction::function_mod_30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_DrawID"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_DrawID,
-                nullptr,
-                0,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_multi_draw,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00t00B00D"),
-                &BuiltInFunction::function_textureOffset_00t00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3DLod(00J20B00B"),
-                &BuiltInFunction::function_texture3DLod_00J20B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_texture3DLod_00J20B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00R10B00B"),
-                &BuiltInFunction::function_texture_00R10B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(00B00B"),
-                &BuiltInFunction::function_modf_00B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(20D20D"),
-                &BuiltInFunction::function_notEqual_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01R10D00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01R10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01R10D00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01R10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(10C10D"),
-                &BuiltInFunction::function_ldexp_10C10D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(00y10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_00y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(00y10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_00y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("determinant(A0B"),
-                &BuiltInFunction::function_determinant_A0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00i20B00B00D"),
-                &BuiltInFunction::function_textureLodOffset_00i20B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01D20D30E"),
-                &BuiltInFunction::function_imageStore_01D20D30E,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow1DLod(00m20B00B"),
-                &BuiltInFunction::function_shadow1DLod_00m20B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01I20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01I20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(00C00C"),
-                &BuiltInFunction::function_distance_00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(30B"),
-                &BuiltInFunction::function_isnan_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00o30B00D"),
-                &BuiltInFunction::function_textureProjOffset_00o30B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(30D30D"),
-                &BuiltInFunction::function_lessThanEqual_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00M30B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00M30B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00M30B"),
-                &BuiltInFunction::function_texture2DProj_00M30B,
-                nullptr,
-                100,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterMax(00G00E"),
-                &BuiltInFunction::function_atomicCounterMax_00G00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterExchange(00G00E"),
-                &BuiltInFunction::function_atomicCounterExchange_00G00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00I10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00I10B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00B20B"),
-                &BuiltInFunction::function_step_00B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjLod(00I20B00B"),
-                &BuiltInFunction::function_texture2DProjLod_00I20B00B,
-                nullptr,
-                100,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00C30C"),
-                &BuiltInFunction::function_step_00C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("yuv_2_rgb(20B00H"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_yuv_2_rgb_20B00H,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00b10D00D"),
-                &BuiltInFunction::function_texelFetch_00b10D00D,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00b10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00J30B00B"),
-                &BuiltInFunction::function_textureProj_00J30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00R10B"),
-                &BuiltInFunction::function_textureGather_00R10B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01K00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01K00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01V20D00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01V20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01V20D00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01V20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01P10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01P10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01L00D"),
-                &BuiltInFunction::function_imageLoad_01L00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10D10D"),
-                &BuiltInFunction::function_min_10D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("all(30F"),
-                &BuiltInFunction::function_all_30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01P10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01P10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01a20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01a20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01S10D00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01S10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01S10D00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01S10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("angle_BaseVertex"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_angle_BaseVertex,
-                nullptr,
-                0,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_base_vertex_base_instance,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(20D"),
-                &BuiltInFunction::function_bitfieldReverse_20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(20E"),
-                &BuiltInFunction::function_bitfieldReverse_20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01I20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01I20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01I20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01I20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01I20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01I20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryInputComponents"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryInputComponents,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00u20B"),
-                &BuiltInFunction::function_texture_00u20B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00v20B"),
-                &BuiltInFunction::function_textureGather_00v20B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(10B"),
-                &BuiltInFunction::function_fract_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(10C"),
-                &BuiltInFunction::function_fract_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00O10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00O10B10D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00K20B"),
-                &BuiltInFunction::function_textureQueryLod_00K20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00I10B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00I10B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01S10D00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01S10D00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise4(20B"),
-                &BuiltInFunction::function_noise4_20B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00U20B10D"),
-                &BuiltInFunction::function_textureOffset_00U20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30B00B"),
-                &BuiltInFunction::function_min_30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(00y10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_00y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(00y10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_00y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicAnd(00D00D"),
-                &BuiltInFunction::function_atomicAnd_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragColor"),
-                &BuiltInVariable::kVar_gl_FragColor,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp(10B"),
-                &BuiltInFunction::function_exp_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00n20B10D"),
-                &BuiltInFunction::function_textureOffset_00n20B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(30D"),
-                &BuiltInFunction::function_bitCount_30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackUnorm2x16(00E"),
-                &BuiltInFunction::function_unpackUnorm2x16_00E,
-                nullptr,
-                300,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(20B"),
-                &BuiltInFunction::function_sqrt_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sqrt(20C"),
-                &BuiltInFunction::function_sqrt_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00L20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00L20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtCentroid(00B"),
-                &BuiltInFunction::function_interpolateAtCentroid_00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00o00D"),
-                &BuiltInFunction::function_textureSize_00o00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxImageUnits,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00o30B00B00B"),
-                &BuiltInFunction::function_textureProjGrad_00o30B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packUnorm4x8(30B"),
-                &BuiltInFunction::function_packUnorm4x8_30B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00P10D00D"),
-                &BuiltInFunction::function_texelFetch_00P10D00D,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00P10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00O10B"),
-                &BuiltInFunction::function_texture_00O10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00O10B,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01M00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01M00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01M00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01M00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00e30B00B"),
-                &BuiltInFunction::function_texture_00e30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01O10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01O10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01O10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01O10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01B20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01B20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01B20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01B20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragCoord"),
-                &BuiltInVariable::kVar_gl_FragCoord,
-                nullptr,
-                0,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01X10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01X10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00u10B00B00B"),
-                &BuiltInFunction::function_textureGrad_00u10B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidthFine(20B"),
-                &BuiltInFunction::function_fwidthFine_20B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00o00B"),
-                &BuiltInFunction::function_textureQueryLod_00o00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01E20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01E20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01E20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01E20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(00B"),
-                &BuiltInFunction::function_normalize_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(00C"),
-                &BuiltInFunction::function_normalize_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10C00C00C"),
-                &BuiltInFunction::function_clamp_10C00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01f00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01f00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01A10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01A10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01A10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01A10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01K00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01K00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01K00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01K00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicMax(00D00D"),
-                &BuiltInFunction::function_atomicMax_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00m30B00B00B"),
-                &BuiltInFunction::function_textureProjGrad_00m30B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01R10D00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01R10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floatBitsToUint(10B"),
-                &BuiltInFunction::function_floatBitsToUint_10B,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00J20B00B"),
-                &BuiltInFunction::function_textureLod_00J20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01D20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01D20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00O10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00O10B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdyFine(20B"),
-                &BuiltInFunction::function_dFdyFine_20B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00I00D"),
-                &BuiltInFunction::function_textureSize_00I00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeWorkGroupSize"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeWorkGroupSize,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00R10D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00R10D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdxFine(10B"),
-                &BuiltInFunction::function_dFdxFine_10B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01K00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01K00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01K00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01K00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00X10B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00X10B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00T20B00B"),
-                &BuiltInFunction::function_texture_00T20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00q20B"),
-                &BuiltInFunction::function_textureProj_00q20B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01K00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01K00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(00y10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_00y10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log(30B"),
-                &BuiltInFunction::function_log_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(20F20F"),
-                &BuiltInFunction::function_notEqual_20F20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("allInvocationsEqual(00F"),
-                &BuiltInFunction::function_allInvocationsEqual_00F,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01G20D30E"),
-                &BuiltInFunction::function_imageStore_01G20D30E,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdyCoarse(30B"),
-                &BuiltInFunction::function_dFdyCoarse_30B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00R20B00B"),
-                &BuiltInFunction::function_textureProjLod_00R20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(30D30D"),
-                &BuiltInFunction::function_notEqual_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidthCoarse(30B"),
-                &BuiltInFunction::function_fwidthCoarse_30B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00I20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00I20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01X10D30D"),
-                &BuiltInFunction::function_imageStore_01X10D30D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00l"),
-                &BuiltInFunction::function_textureQueryLevels_00l,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00m"),
-                &BuiltInFunction::function_textureQueryLevels_00m,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00o"),
-                &BuiltInFunction::function_textureQueryLevels_00o,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00h"),
-                &BuiltInFunction::function_textureQueryLevels_00h,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00i"),
-                &BuiltInFunction::function_textureQueryLevels_00i,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00k"),
-                &BuiltInFunction::function_textureQueryLevels_00k,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00d"),
-                &BuiltInFunction::function_textureQueryLevels_00d,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00e"),
-                &BuiltInFunction::function_textureQueryLevels_00e,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00f"),
-                &BuiltInFunction::function_textureQueryLevels_00f,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00g"),
-                &BuiltInFunction::function_textureQueryLevels_00g,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxDrawBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxDrawBuffers,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00a"),
-                &BuiltInFunction::function_textureQueryLevels_00a,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterMin(00G00E"),
-                &BuiltInFunction::function_atomicCounterMin_00G00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00u10B00B00B00D"),
-                &BuiltInFunction::function_textureGradOffset_00u10B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00x"),
-                &BuiltInFunction::function_textureQueryLevels_00x,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00t"),
-                &BuiltInFunction::function_textureQueryLevels_00t,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00u"),
-                &BuiltInFunction::function_textureQueryLevels_00u,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imulExtended(20D20D20D20D"),
-                &BuiltInFunction::function_imulExtended_20D20D20D20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("any(30F"),
-                &BuiltInFunction::function_any_30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(30B30B"),
-                &BuiltInFunction::function_distance_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00s"),
-                &BuiltInFunction::function_textureQueryLevels_00s,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00L"),
-                &BuiltInFunction::function_textureQueryLevels_00L,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00I"),
-                &BuiltInFunction::function_textureQueryLevels_00I,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00J"),
-                &BuiltInFunction::function_textureQueryLevels_00J,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00K"),
-                &BuiltInFunction::function_textureQueryLevels_00K,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01L00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01L00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01W10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01W10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01W10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01W10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3D(00J20B00B"),
-                &BuiltInFunction::function_texture3D_00J20B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_texture3D_00J20B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1DLod(00g00B00B"),
-                &BuiltInFunction::function_texture1DLod_00g00B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00X"),
-                &BuiltInFunction::function_textureQueryLevels_00X,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00Y"),
-                &BuiltInFunction::function_textureQueryLevels_00Y,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00Z"),
-                &BuiltInFunction::function_textureQueryLevels_00Z,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(30B30B"),
-                &BuiltInFunction::function_dot_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00T"),
-                &BuiltInFunction::function_textureQueryLevels_00T,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00U"),
-                &BuiltInFunction::function_textureQueryLevels_00U,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00R"),
-                &BuiltInFunction::function_textureQueryLevels_00R,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLevels(00S"),
-                &BuiltInFunction::function_textureQueryLevels_00S,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxTextureImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxTextureImageUnits,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("usubBorrow(20E20E20E"),
-                &BuiltInFunction::function_usubBorrow_20E20E20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00t30B00B"),
-                &BuiltInFunction::function_textureProj_00t30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow1DProj(00m30B00B"),
-                &BuiltInFunction::function_shadow1DProj_00m30B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30B00B00B"),
-                &BuiltInFunction::function_clamp_30B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DRectProj(00O30B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DRectProj_00O30B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::ARB_texture_rectangle,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01B20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01B20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10D00D"),
-                &BuiltInFunction::function_max_10D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00n20B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00n20B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(00D00D00D"),
-                &BuiltInFunction::function_clamp_00D00D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(30B"),
-                &BuiltInFunction::function_floor_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(30C"),
-                &BuiltInFunction::function_floor_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01P10D30E"),
-                &BuiltInFunction::function_imageStore_01P10D30E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00S30B20B20B20D"),
-                &BuiltInFunction::function_textureProjGradOffset_00S30B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(30C30C"),
-                &BuiltInFunction::function_reflect_30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PointCoord"),
-                &BuiltInVariable::kVar_gl_PointCoord,
-                nullptr,
-                0,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01D20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01D20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00v10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00v10B10D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01D20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01D20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packDouble2x32(10E"),
-                &BuiltInFunction::function_packDouble2x32_10E,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10B00B00B"),
-                &BuiltInFunction::function_clamp_10B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01F20D30D"),
-                &BuiltInFunction::function_imageStore_01F20D30D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00S20D00D20D"),
-                &BuiltInFunction::function_texelFetchOffset_00S20D00D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(10D10D"),
-                &BuiltInFunction::function_lessThan_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00g00D"),
-                &BuiltInFunction::function_textureSize_00g00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00U20B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00U20B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00q10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00q10B10D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00I10B00D"),
-                &BuiltInFunction::function_textureGather_00I10B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1DProjLod(00g30B00B"),
-                &BuiltInFunction::function_texture1DProjLod_00g30B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00V10D00D"),
-                &BuiltInFunction::function_texelFetch_00V10D00D,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00V10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01h00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01h00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01h00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01h00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(30B30B"),
-                &BuiltInFunction::function_atan_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01h00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01h00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00R10B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00R10B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01a20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01a20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00g30B00B"),
-                &BuiltInFunction::function_textureProjLod_00g30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(00B00B"),
-                &BuiltInFunction::function_max_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01J20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01J20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01J20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01J20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01F20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01F20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01F20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01F20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp2(20B"),
-                &BuiltInFunction::function_exp2_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(30C30C30C"),
-                &BuiltInFunction::function_smoothstep_30C30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(00z10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_00z10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(00z10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_00z10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(00z10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_00z10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00n10B00B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00n10B00B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00t10B00B"),
-                &BuiltInFunction::function_textureProjLod_00t10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01K00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01K00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01K00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01K00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedTextureImageUnits"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedTextureImageUnits,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00k00D"),
-                &BuiltInFunction::function_textureSize_00k00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(20B20B"),
-                &BuiltInFunction::function_reflect_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01V20D00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01V20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01V20D00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01V20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(10F10F"),
-                &BuiltInFunction::function_equal_10F10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01f00D"),
-                &BuiltInFunction::function_imageLoad_01f00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acos(30B"),
-                &BuiltInFunction::function_acos_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdx(10B"),
-                &BuiltInFunction::function_dFdx_10B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdxExt_10B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(30E"),
-                &BuiltInFunction::function_bitfieldReverse_30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldReverse(30D"),
-                &BuiltInFunction::function_bitfieldReverse_30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1DProj(00g30B"),
-                &BuiltInFunction::function_texture1DProj_00g30B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(00C"),
-                &BuiltInFunction::function_fract_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fract(00B"),
-                &BuiltInFunction::function_fract_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30E00E"),
-                &BuiltInFunction::function_min_30E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MinProgramTexelOffset"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MinProgramTexelOffset,
-                300,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtOffset(20B10B"),
-                &BuiltInFunction::function_interpolateAtOffset_20B10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryTotalOutputComponents"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryTotalOutputComponents,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(30B30B"),
-                &BuiltInFunction::function_reflect_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00I10B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00I10B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtCentroid(30B"),
-                &BuiltInFunction::function_interpolateAtCentroid_30B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00s30B"),
-                &BuiltInFunction::function_textureGather_00s30B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01X10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01X10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01X10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01X10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01Z20D30B"),
-                &BuiltInFunction::function_imageStore_01Z20D30B,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1D(00g00B00B"),
-                &BuiltInFunction::function_texture1D_00g00B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("pow(00B00B"),
-                &BuiltInFunction::function_pow_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(00B00B"),
-                &BuiltInFunction::function_mod_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(30C30C30C"),
-                &BuiltInFunction::function_faceforward_30C30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(10B"),
-                &BuiltInFunction::function_roundEven_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(10C"),
-                &BuiltInFunction::function_roundEven_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atanh(30B"),
-                &BuiltInFunction::function_atanh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00K20B00B"),
-                &BuiltInFunction::function_textureLod_00K20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(20D"),
-                &BuiltInFunction::function_bitCount_20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitCount(20E"),
-                &BuiltInFunction::function_bitCount_20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00L20D00D"),
-                &BuiltInFunction::function_texelFetch_00L20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdxFine(00B"),
-                &BuiltInFunction::function_dFdxFine_00B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(20B20B"),
-                &BuiltInFunction::function_distance_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00q10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00q10B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uaddCarry(30E30E30E"),
-                &BuiltInFunction::function_uaddCarry_30E30E30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00U00D"),
-                &BuiltInFunction::function_textureSize_00U00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00o10B00D00B"),
-                &BuiltInFunction::function_textureProjOffset_00o10B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedImageUniforms"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedImageUniforms,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterXor(00G00E"),
-                &BuiltInFunction::function_atomicCounterXor_00G00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01g00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01g00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01g00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01g00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_GlobalInvocationID"),
-                &BuiltInVariable::kVar_gl_GlobalInvocationID,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_VertexID"),
-                &BuiltInVariable::kVar_gl_VertexID,
-                nullptr,
-                300,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01L00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01L00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(20C20C20C"),
-                &BuiltInFunction::function_smoothstep_20C20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01U20D00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01U20D00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicOr(00E00E"),
-                &BuiltInFunction::function_atomicOr_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01T20D00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01T20D00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10B10B10F"),
-                &BuiltInFunction::function_mix_10B10B10F,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(10C10C"),
-                &BuiltInFunction::function_reflect_10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10B10B10B"),
-                &BuiltInFunction::function_mix_10B10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00Y30B00B"),
-                &BuiltInFunction::function_textureProj_00Y30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01I20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01I20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01I20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01I20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(20B20D"),
-                &BuiltInFunction::function_frexp_20B20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00I10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00I10B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(20E20E"),
-                &BuiltInFunction::function_notEqual_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00d20B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00d20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inverse(A0B"),
-                &BuiltInFunction::function_inverse_A0B,
-                nullptr,
-                300,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00X20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00X20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01J20D"),
-                &BuiltInFunction::function_imageLoad_01J20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00Y00D"),
-                &BuiltInFunction::function_textureSize_00Y00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(20B20B"),
-                &BuiltInFunction::function_atan_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("usubBorrow(00E00E00E"),
-                &BuiltInFunction::function_usubBorrow_00E00E00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01M00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01M00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01M00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01M00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdyFine(30B"),
-                &BuiltInFunction::function_dFdyFine_30B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00s20B"),
-                &BuiltInFunction::function_textureQueryLod_00s20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01N10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01N10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00v10B"),
-                &BuiltInFunction::function_texture_00v10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("subpassLoad(01n00D"),
-                &BuiltInFunction::function_subpassLoad_01n00D,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00g10B00B00D"),
-                &BuiltInFunction::function_textureProjLodOffset_00g10B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(10C10C"),
-                &BuiltInFunction::function_step_10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00x20B"),
-                &BuiltInFunction::function_textureQueryLod_00x20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fma(10B10B10B"),
-                &BuiltInFunction::function_fma_10B10B10B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00B00B10B"),
-                &BuiltInFunction::function_smoothstep_00B00B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01a20D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01a20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01N"),
-                &BuiltInFunction::function_imageSize_01N,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00u10B00B"),
-                &BuiltInFunction::function_textureLod_00u10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00m30B00B00B00D"),
-                &BuiltInFunction::function_textureProjGradOffset_00m30B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidthCoarse(00B"),
-                &BuiltInFunction::function_fwidthCoarse_00B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdyCoarse(20B"),
-                &BuiltInFunction::function_dFdyCoarse_20B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00o30B00B00B00D"),
-                &BuiltInFunction::function_textureProjGradOffset_00o30B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00g30B00B"),
-                &BuiltInFunction::function_textureProj_00g30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(00E00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_00E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01I20D30D"),
-                &BuiltInFunction::function_imageStore_01I20D30D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(30C30C"),
-                &BuiltInFunction::function_distance_30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("any(20F"),
-                &BuiltInFunction::function_any_20F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00L20B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00L20B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00g00B00B"),
-                &BuiltInFunction::function_textureLod_00g00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sin(10B"),
-                &BuiltInFunction::function_sin_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00N00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSize_00N00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(20B20B"),
-                &BuiltInFunction::function_mod_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01h00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01h00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01h00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01h00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00k30B20B20B"),
-                &BuiltInFunction::function_textureGrad_00k30B20B20B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00o10B00D"),
-                &BuiltInFunction::function_textureProjOffset_00o10B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01A10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01A10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01A10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01A10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00f30B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00f30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20D20D"),
-                &BuiltInFunction::function_max_20D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10D10D"),
-                &BuiltInFunction::function_max_10D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01N10D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01N10D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00t00B00B00B00D"),
-                &BuiltInFunction::function_textureGradOffset_00t00B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(30B30B00B"),
-                &BuiltInFunction::function_refract_30B30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(20C"),
-                &BuiltInFunction::function_floor_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("floor(20B"),
-                &BuiltInFunction::function_floor_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00t00D00D00D"),
-                &BuiltInFunction::function_texelFetchOffset_00t00D00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01a20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01a20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(F0BF0B"),
-                &BuiltInFunction::function_matrixCompMult_F0BF0B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("umulExtended(10E10E10E10E"),
-                &BuiltInFunction::function_umulExtended_10E10E10E10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00d20B00B"),
-                &BuiltInFunction::function_texture_00d20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01Z20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01Z20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01Z20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01Z20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("umulExtended(30E30E30E30E"),
-                &BuiltInFunction::function_umulExtended_30E30E30E30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00q10B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00q10B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00Y20B20B20B20D"),
-                &BuiltInFunction::function_textureGradOffset_00Y20B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00a20B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00a20B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00f30B10B10B"),
-                &BuiltInFunction::function_textureGrad_00f30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterSubtract(00G00E"),
-                &BuiltInFunction::function_atomicCounterSubtract_00G00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01C20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01C20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(20B20B"),
-                &BuiltInFunction::function_modf_20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01Y10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01Y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01Y10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01Y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise1(00B"),
-                &BuiltInFunction::function_noise1_00B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01M00D"),
-                &BuiltInFunction::function_imageLoad_01M00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01L00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01L00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(30C"),
-                &BuiltInFunction::function_length_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(30B"),
-                &BuiltInFunction::function_length_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(30B30B"),
-                &BuiltInFunction::function_mod_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10C10C10F"),
-                &BuiltInFunction::function_mix_10C10C10F,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(00z10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_00z10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(00z10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_00z10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp2(30B"),
-                &BuiltInFunction::function_exp2_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("allInvocations(00F"),
-                &BuiltInFunction::function_allInvocations_00F,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20C00C"),
-                &BuiltInFunction::function_max_20C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3DProj(00J30B00B"),
-                &BuiltInFunction::function_texture3DProj_00J30B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_texture3DProj_00J30B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01Q10D00D"),
-                &BuiltInFunction::function_imageLoad_01Q10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00X30B00B"),
-                &BuiltInFunction::function_textureProjLod_00X30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00I30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00I30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cosh(30B"),
-                &BuiltInFunction::function_cosh_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00q30B"),
-                &BuiltInFunction::function_textureProj_00q30B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00S20B20D00B"),
-                &BuiltInFunction::function_textureOffset_00S20B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("usubBorrow(30E30E30E"),
-                &BuiltInFunction::function_usubBorrow_30E30E30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00R20B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00R20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01f00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01f00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01f00D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01f00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00t00B00D00B"),
-                &BuiltInFunction::function_textureOffset_00t00B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00i20B00D00B"),
-                &BuiltInFunction::function_textureOffset_00i20B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3DProj(00J30B"),
-                &BuiltInFunction::function_texture3DProj_00J30B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                &BuiltInFunction::function_texture3DProj_00J30B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(B0BB0B"),
-                &BuiltInFunction::function_matrixCompMult_B0BB0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(30B30B"),
-                &BuiltInFunction::function_lessThan_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cross(20B20B"),
-                &BuiltInFunction::function_cross_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01O"),
-                &BuiltInFunction::function_imageSize_01O,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00q10B10B10B"),
-                &BuiltInFunction::function_textureGrad_00q10B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20B00B00B"),
-                &BuiltInFunction::function_clamp_20B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdx(00B"),
-                &BuiltInFunction::function_dFdx_00B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdxExt_00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(00D"),
-                &BuiltInFunction::function_findLSB_00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00o30B00B00D"),
-                &BuiltInFunction::function_textureProjLodOffset_00o30B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00R20B00B"),
-                &BuiltInFunction::function_textureProj_00R20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acos(20B"),
-                &BuiltInFunction::function_acos_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01A"),
-                &BuiltInFunction::function_imageSize_01A,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01B20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01B20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20B20B"),
-                &BuiltInFunction::function_max_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(20E20E"),
-                &BuiltInFunction::function_lessThan_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00g10B00D00B"),
-                &BuiltInFunction::function_textureProjOffset_00g10B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(30F30F"),
-                &BuiltInFunction::function_equal_30F30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(00C"),
-                &BuiltInFunction::function_sign_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cosh(00B"),
-                &BuiltInFunction::function_cosh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(00D00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_00D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01E20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01E20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01E20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01E20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00Z20B00B"),
-                &BuiltInFunction::function_textureLod_00Z20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(00D"),
-                &BuiltInFunction::function_sign_00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00Y20B20D"),
-                &BuiltInFunction::function_textureOffset_00Y20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(60B"),
-                &BuiltInFunction::function_transpose_60B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01L00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01L00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01O10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01O10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01O10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01O10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(00B00B00B"),
-                &BuiltInFunction::function_faceforward_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_NumWorkGroups"),
-                &BuiltInVariable::kVar_gl_NumWorkGroups,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01O10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01O10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01O10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01O10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01b20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01b20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtCentroid(20B"),
-                &BuiltInFunction::function_interpolateAtCentroid_20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00R30B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00R30B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00h10B00B00B"),
-                &BuiltInFunction::function_textureGrad_00h10B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01U20D00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01U20D00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1DProj(00g30B00B"),
-                &BuiltInFunction::function_texture1DProj_00g30B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00h00B"),
-                &BuiltInFunction::function_textureQueryLod_00h00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01U20D00D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01U20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("modf(00C00C"),
-                &BuiltInFunction::function_modf_00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00t30B00B"),
-                &BuiltInFunction::function_textureProjLod_00t30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00o00B00D"),
-                &BuiltInFunction::function_textureOffset_00o00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01U20D00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01U20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00U20B"),
-                &BuiltInFunction::function_textureGather_00U20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01H20D30B"),
-                &BuiltInFunction::function_imageStore_01H20D30B,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00Q20D00D"),
-                &BuiltInFunction::function_texelFetch_00Q20D00D,
-                nullptr,
-                -1,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00Q20D00D,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(00C"),
-                &BuiltInFunction::function_roundEven_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("roundEven(00B"),
-                &BuiltInFunction::function_roundEven_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00O10D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00O10D10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atanh(20B"),
-                &BuiltInFunction::function_atanh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10E00E00E"),
-                &BuiltInFunction::function_clamp_10E00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdxFine(30B"),
-                &BuiltInFunction::function_dFdxFine_30B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01L00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01L00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00J20B"),
-                &BuiltInFunction::function_textureQueryLod_00J20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00X30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00X30B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxFragmentUniformVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxFragmentUniformVectors,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjLod(00I30B00B"),
-                &BuiltInFunction::function_texture2DProjLod_00I30B00B,
-                nullptr,
-                100,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtOffset(10B10B"),
-                &BuiltInFunction::function_interpolateAtOffset_10B10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10C10C"),
-                &BuiltInFunction::function_max_10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00g00D00D"),
-                &BuiltInFunction::function_texelFetch_00g00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(30B"),
-                &BuiltInFunction::function_abs_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(10E10E00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_10E10E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("packSnorm4x8(30B"),
-                &BuiltInFunction::function_packSnorm4x8_30B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10B10B00B"),
-                &BuiltInFunction::function_mix_10B10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01b"),
-                &BuiltInFunction::function_imageSize_01b,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30D30D30D"),
-                &BuiltInFunction::function_clamp_30D30D30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00d10B"),
-                &BuiltInFunction::function_textureQueryLod_00d10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(10C00C"),
-                &BuiltInFunction::function_mod_10C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01G20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01G20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01G20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01G20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01R10D00D30D"),
-                &BuiltInFunction::function_imageStore_01R10D00D30D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("determinant(F0B"),
-                &BuiltInFunction::function_determinant_F0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(A0B"),
-                &BuiltInFunction::function_transpose_A0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("pow(20B20B"),
-                &BuiltInFunction::function_pow_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01g"),
-                &BuiltInFunction::function_imageSize_01g,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01G20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01G20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageSize(01e"),
-                &BuiltInFunction::function_imageSize_01e,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01G20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01G20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01G20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01G20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01Y10D"),
-                &BuiltInFunction::function_imageLoad_01Y10D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01g00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01g00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01g00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01g00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00v30B"),
-                &BuiltInFunction::function_textureProj_00v30B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00O20B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00O20B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log2(20B"),
-                &BuiltInFunction::function_log2_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(30C30C"),
-                &BuiltInFunction::function_dot_30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidthCoarse(10B"),
-                &BuiltInFunction::function_fwidthCoarse_10B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00I20B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00I20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00U20B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00U20B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(10F10F"),
-                &BuiltInFunction::function_notEqual_10F10F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00O10B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00O10B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00B00B00B"),
-                &BuiltInFunction::function_smoothstep_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00d30B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00d30B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01P10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01P10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01P10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01P10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00I30B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00I30B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedAtomicCounters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedAtomicCounters,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(10D10D00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_10D10D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(00y10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_00y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(00y10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_00y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01Q10D00D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01Q10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01Q10D00D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01Q10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01L00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01L00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00k30B"),
-                &BuiltInFunction::function_textureGather_00k30B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00J20B"),
-                &BuiltInFunction::function_texture_00J20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(10D10D"),
-                &BuiltInFunction::function_lessThanEqual_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00o30B00D00B"),
-                &BuiltInFunction::function_textureProjOffset_00o30B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVaryingVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVaryingVectors,
-                100,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00d00D"),
-                &BuiltInFunction::function_textureSize_00d00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sin(00B"),
-                &BuiltInFunction::function_sin_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01N10D"),
-                &BuiltInFunction::function_imageLoad_01N10D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uaddCarry(10E10E10E"),
-                &BuiltInFunction::function_uaddCarry_10E10E10E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01Z20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01Z20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01Z20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01Z20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10C10C00C"),
-                &BuiltInFunction::function_mix_10C10C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterIncrement(00G"),
-                &BuiltInFunction::function_atomicCounterIncrement_00G,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01J20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01J20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01J20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01J20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01S10D00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01S10D00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01W10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01W10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00o10B00B"),
-                &BuiltInFunction::function_textureProj_00o10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01U20D00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01U20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01U20D00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01U20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00m30B00D"),
-                &BuiltInFunction::function_textureProjOffset_00m30B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Y10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01Y10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(10E10E"),
-                &BuiltInFunction::function_equal_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Y10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01Y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01Y10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01Y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01O10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01O10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01O10D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01O10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00J30B20D"),
-                &BuiltInFunction::function_textureProjOffset_00J30B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01D20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01D20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01D20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01D20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(10E10E"),
-                &BuiltInFunction::function_notEqual_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10C10C"),
-                &BuiltInFunction::function_min_10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00t10B00B00B"),
-                &BuiltInFunction::function_textureProjGrad_00t10B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00q20B00D"),
-                &BuiltInFunction::function_textureGather_00q20B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01B20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01B20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01S10D00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01S10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01O10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01O10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow1DProjLod(00m30B00B"),
-                &BuiltInFunction::function_shadow1DProjLod_00m30B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01f00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01f00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01f00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01f00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00u20B00B"),
-                &BuiltInFunction::function_texture_00u20B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00R10B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00R10B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(10B"),
-                &BuiltInFunction::function_trunc_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(10C"),
-                &BuiltInFunction::function_trunc_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeAtomicCounters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeAtomicCounters,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00u10D00D"),
-                &BuiltInFunction::function_texelFetch_00u10D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(20C20C"),
-                &BuiltInFunction::function_dot_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_DepthRangeParameters"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_DepthRangeParameters,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00f20B"),
-                &BuiltInFunction::function_textureGather_00f20B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00L20B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00L20B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise1(10B"),
-                &BuiltInFunction::function_noise1_10B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00g30B00B00B"),
-                &BuiltInFunction::function_textureProjGrad_00g30B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow2DProj(00d30B"),
-                &BuiltInFunction::function_shadow2DProj_00d30B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00d30B00B"),
-                &BuiltInFunction::function_textureProj_00d30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(10B"),
-                &BuiltInFunction::function_sign_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(00E00E"),
-                &BuiltInFunction::function_max_00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00a20B00B"),
-                &BuiltInFunction::function_texture_00a20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00o10B"),
-                &BuiltInFunction::function_textureProj_00o10B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(20C20C00B"),
-                &BuiltInFunction::function_refract_20C20C00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00M20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00M20B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01A10D"),
-                &BuiltInFunction::function_imageLoad_01A10D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00X30B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00X30B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp2(00B"),
-                &BuiltInFunction::function_exp2_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01H20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01H20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00u10D00D00D"),
-                &BuiltInFunction::function_texelFetchOffset_00u10D00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01H20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01H20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01H20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01H20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01H20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01H20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00q10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00q10B10D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00a20B00D"),
-                &BuiltInFunction::function_textureGather_00a20B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01Q10D00D30B"),
-                &BuiltInFunction::function_imageStore_01Q10D00D30B,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(00C00D"),
-                &BuiltInFunction::function_ldexp_00C00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00s00D"),
-                &BuiltInFunction::function_textureSize_00s00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01P10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01P10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01I20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01I20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00N10B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00N10B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PrimitiveID"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_PrimitiveID,
-                nullptr,
-                310,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &BuiltInVariable::kVar_gl_PrimitiveIDGS,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader),
-    SymbolEntry(ImmutableString("imageAtomicOr(01X10D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01X10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01Y10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01Y10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01X10D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01X10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00I30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00I30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_Layer"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_Layer,
-                nullptr,
-                310,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &BuiltInVariable::kVar_gl_LayerGS,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader),
-    SymbolEntry(ImmutableString("textureOffset(00d20B10D"),
-                &BuiltInFunction::function_textureOffset_00d20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdx(30B"),
-                &BuiltInFunction::function_dFdx_30B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdxExt_30B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01V20D00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01V20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01V20D00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01V20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LastFragColor"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_LastFragColor,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::NV_shader_framebuffer_fetch,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00t30B00B00B00D"),
-                &BuiltInFunction::function_textureProjGradOffset_00t30B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20E20E"),
-                &BuiltInFunction::function_min_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asin(20B"),
-                &BuiltInFunction::function_asin_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01U20D00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01U20D00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00l30B00B"),
-                &BuiltInFunction::function_texture_00l30B00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1DProjLod(00g10B00B"),
-                &BuiltInFunction::function_texture1DProjLod_00g10B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidth(10B"),
-                &BuiltInFunction::function_fwidth_10B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_fwidthExt_10B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdy(00B"),
-                &BuiltInFunction::function_dFdy_00B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdyExt_00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow2DLod(00d20B00B"),
-                &BuiltInFunction::function_shadow2DLod_00d20B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture1DProj(00g10B"),
-                &BuiltInFunction::function_texture1DProj_00g10B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(30E30E"),
-                &BuiltInFunction::function_lessThan_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imulExtended(30D30D30D30D"),
-                &BuiltInFunction::function_imulExtended_30D30D30D30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(70B"),
-                &BuiltInFunction::function_transpose_70B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imulExtended(00D00D00D00D"),
-                &BuiltInFunction::function_imulExtended_00D00D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00q10B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00q10B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01F20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01F20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01F20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01F20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00S20B00B"),
-                &BuiltInFunction::function_texture_00S20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00Y20B00B"),
-                &BuiltInFunction::function_textureLod_00Y20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(10C10C10C"),
-                &BuiltInFunction::function_faceforward_10C10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00u00B"),
-                &BuiltInFunction::function_textureQueryLod_00u00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20D00D"),
-                &BuiltInFunction::function_min_20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01P10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01P10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uintBitsToFloat(00E"),
-                &BuiltInFunction::function_uintBitsToFloat_00E,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdxFine(20B"),
-                &BuiltInFunction::function_dFdxFine_20B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01L00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01L00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01g00D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01g00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(20D20D00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_20D20D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30B30B00B"),
-                &BuiltInFunction::function_mix_30B30B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00U10B"),
-                &BuiltInFunction::function_textureQueryLod_00U10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01N10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01N10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tanh(00B"),
-                &BuiltInFunction::function_tanh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(00y10D30B"),
-                &BuiltInFunction::function_imageStore_00y10D30B,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10C00C"),
-                &BuiltInFunction::function_max_10C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(D0BD0B"),
-                &BuiltInFunction::function_matrixCompMult_D0BD0B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00v10B70D00D"),
-                &BuiltInFunction::function_textureGatherOffsets_00v10B70D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxComputeUniformComponents"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxComputeUniformComponents,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01X10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01X10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow2DProjLod(00d30B00B"),
-                &BuiltInFunction::function_shadow2DProjLod_00d30B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::VERTEX,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01X10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01X10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30B30B"),
-                &BuiltInFunction::function_min_30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("reflect(20C20C"),
-                &BuiltInFunction::function_reflect_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00h10D00D"),
-                &BuiltInFunction::function_texelFetch_00h10D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrierAtomicCounter("),
-                &BuiltInFunction::function_memoryBarrierAtomicCounter_,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(00E00E00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_00E00E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01Z20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01Z20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01Z20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01Z20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01b20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01b20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01a20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01a20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00d20B10B10B"),
-                &BuiltInFunction::function_textureGrad_00d20B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(10B"),
-                &BuiltInFunction::function_atan_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01T20D00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01T20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01T20D00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01T20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01g00D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01g00D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30C30C30C"),
-                &BuiltInFunction::function_clamp_30C30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00v20B"),
-                &BuiltInFunction::function_textureProj_00v20B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00B10B"),
-                &BuiltInFunction::function_step_00B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00I20B00B"),
-                &BuiltInFunction::function_textureProjLod_00I20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("rgb_2_yuv(20B00H"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_rgb_2_yuv_20B00H,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01B20D30B"),
-                &BuiltInFunction::function_imageStore_01B20D30B,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01P10D"),
-                &BuiltInFunction::function_imageLoad_01P10D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00T20B"),
-                &BuiltInFunction::function_texture_00T20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log2(10B"),
-                &BuiltInFunction::function_log2_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01D20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01D20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01D20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01D20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(20E"),
-                &BuiltInFunction::function_findLSB_20E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(20D"),
-                &BuiltInFunction::function_findLSB_20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01f00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01f00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01f00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01f00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise2(30B"),
-                &BuiltInFunction::function_noise2_30B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01U20D00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01U20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(10B10B"),
-                &BuiltInFunction::function_greaterThanEqual_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01K00D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01K00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10D10D10D"),
-                &BuiltInFunction::function_clamp_10D10D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00M10D00D"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetch_00M10D00D,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00Y20B"),
-                &BuiltInFunction::function_textureQueryLod_00Y20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(F0B"),
-                &BuiltInFunction::function_transpose_F0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00Y20B20D00B"),
-                &BuiltInFunction::function_textureOffset_00Y20B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00S20B20B20B20D"),
-                &BuiltInFunction::function_textureGradOffset_00S20B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01U20D00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01U20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(30E30E30E"),
-                &BuiltInFunction::function_clamp_30E30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00R00D"),
-                &BuiltInFunction::function_textureSize_00R00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01f00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01f00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("acosh(10B"),
-                &BuiltInFunction::function_acosh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01f00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01f00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01b20D"),
-                &BuiltInFunction::function_imageLoad_01b20D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00L20B10D00B"),
-                &BuiltInFunction::function_textureOffset_00L20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(20B00B"),
-                &BuiltInFunction::function_mod_20B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01U20D00D"),
-                &BuiltInFunction::function_imageLoad_01U20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00J30B00B"),
-                &BuiltInFunction::function_textureProjLod_00J30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("subpassLoad(01i"),
-                &BuiltInFunction::function_subpassLoad_01i,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("subpassLoad(01k"),
-                &BuiltInFunction::function_subpassLoad_01k,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(90B"),
-                &BuiltInFunction::function_transpose_90B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30C30C00C"),
-                &BuiltInFunction::function_mix_30C30C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicAnd(00E00E"),
-                &BuiltInFunction::function_atomicAnd_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(20D00D"),
-                &BuiltInFunction::function_max_20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00I10D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00I10D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00L10B"),
-                &BuiltInFunction::function_textureQueryLod_00L10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounter(00G"),
-                &BuiltInFunction::function_atomicCounter_00G,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00m20B00B00B"),
-                &BuiltInFunction::function_textureGrad_00m20B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise3(20B"),
-                &BuiltInFunction::function_noise3_20B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(30D30D00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_30D30D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10C00C"),
-                &BuiltInFunction::function_min_10C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(10D10D"),
-                &BuiltInFunction::function_greaterThan_10D10D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(10E00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_10E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00h10B00B00B00D"),
-                &BuiltInFunction::function_textureGradOffset_00h10B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01V20D00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01V20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2D(00I10B00B"),
-                &BuiltInFunction::function_texture2D_00I10B00B,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(20D20D"),
-                &BuiltInFunction::function_greaterThan_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("noise1(20B"),
-                &BuiltInFunction::function_noise1_20B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00t10B00B00D"),
-                &BuiltInFunction::function_textureProjLodOffset_00t10B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00O20B10D"),
-                &BuiltInFunction::function_textureProjOffset_00O20B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(00B"),
-                &BuiltInFunction::function_trunc_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(10C"),
-                &BuiltInFunction::function_length_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(10B"),
-                &BuiltInFunction::function_length_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01R10D00D"),
-                &BuiltInFunction::function_imageLoad_01R10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01H20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01H20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01H20D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01H20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("subpassLoad(01j"),
-                &BuiltInFunction::function_subpassLoad_01j,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(00B00B"),
-                &BuiltInFunction::function_dot_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tan(30B"),
-                &BuiltInFunction::function_tan_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00T20B00B"),
-                &BuiltInFunction::function_textureLod_00T20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00R30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00R30B10B10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("exp2(10B"),
-                &BuiltInFunction::function_exp2_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00X20B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00X20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00X30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00X30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(A0BA0B"),
-                &BuiltInFunction::function_matrixCompMult_A0BA0B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffsets(00v10B70D"),
-                &BuiltInFunction::function_textureGatherOffsets_00v10B70D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00S20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00S20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(30B"),
-                &BuiltInFunction::function_round_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(30C"),
-                &BuiltInFunction::function_round_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("anyInvocation(00F"),
-                &BuiltInFunction::function_anyInvocation_00F,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00x30B20B20B"),
-                &BuiltInFunction::function_textureGrad_00x30B20B20B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01D20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01D20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00o30B00B"),
-                &BuiltInFunction::function_textureProjLod_00o30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00C00C10C"),
-                &BuiltInFunction::function_smoothstep_00C00C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("interpolateAtSample(00B00D"),
-                &BuiltInFunction::function_interpolateAtSample_00B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdx(20B"),
-                &BuiltInFunction::function_dFdx_20B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdxExt_20B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00L20B"),
-                &BuiltInFunction::function_texture_00L20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("barrier("),
-                &BuiltInFunction::function_barrier_,
-                nullptr,
-                310,
-                400,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01a20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01a20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00k30B00D"),
-                &BuiltInFunction::function_textureGather_00k30B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(20D"),
-                &BuiltInFunction::function_findMSB_20D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00L20B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00L20B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01S10D00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01S10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01S10D00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01S10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00S30B20D00B"),
-                &BuiltInFunction::function_textureProjOffset_00S30B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01D20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01D20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(10C"),
-                &BuiltInFunction::function_normalize_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackSnorm4x8(00E"),
-                &BuiltInFunction::function_unpackSnorm4x8_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01C20D"),
-                &BuiltInFunction::function_imageLoad_01C20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01C20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01C20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01C20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01C20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00l30B00B"),
-                &BuiltInFunction::function_textureGather_00l30B00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("normalize(10B"),
-                &BuiltInFunction::function_normalize_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asin(30B"),
-                &BuiltInFunction::function_asin_30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(20B"),
-                &BuiltInFunction::function_isnan_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(20C"),
-                &BuiltInFunction::function_isnan_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidth(00B"),
-                &BuiltInFunction::function_fwidth_00B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_fwidthExt_00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdy(10B"),
-                &BuiltInFunction::function_dFdy_10B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_dFdyExt_10B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01P10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01P10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01P10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01P10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(30E00E"),
-                &BuiltInFunction::function_max_30E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00d20B00B"),
-                &BuiltInFunction::function_textureLod_00d20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00q10B10D"),
-                &BuiltInFunction::function_textureOffset_00q10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LastFragData"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_LastFragData,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_framebuffer_fetch,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_LastFragDataNV,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::NV_shader_framebuffer_fetch),
-    SymbolEntry(ImmutableString("mod(10B00B"),
-                &BuiltInFunction::function_mod_10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00g00B00B"),
-                &BuiltInFunction::function_texture_00g00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uintBitsToFloat(10E"),
-                &BuiltInFunction::function_uintBitsToFloat_10E,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00t30B00D"),
-                &BuiltInFunction::function_textureProjOffset_00t30B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(70B70B"),
-                &BuiltInFunction::function_matrixCompMult_70B70B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01I20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01I20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01M00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01M00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01M00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01M00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00k30B00B"),
-                &BuiltInFunction::function_textureLod_00k30B00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01E20D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01E20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00Y20B00B20D"),
-                &BuiltInFunction::function_textureLodOffset_00Y20B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("refract(00C00C00B"),
-                &BuiltInFunction::function_refract_00C00C00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("log2(00B"),
-                &BuiltInFunction::function_log2_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tanh(10B"),
-                &BuiltInFunction::function_tanh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01I20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01I20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00h10B00B"),
-                &BuiltInFunction::function_textureLod_00h10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01b20D30E"),
-                &BuiltInFunction::function_imageStore_01b20D30E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00O20B00D"),
-                &BuiltInFunction::function_textureGather_00O20B00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LocalInvocationID"),
-                &BuiltInVariable::kVar_gl_LocalInvocationID,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(00B00B00B"),
-                &BuiltInFunction::function_clamp_00B00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00d10B"),
-                &BuiltInFunction::function_textureGather_00d10B,
-                nullptr,
-                310,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryAtomicCounterBuffers"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryAtomicCounterBuffers,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00p10B00D00B"),
-                &BuiltInFunction::function_textureOffset_00p10B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01f00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01f00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(10C10C10C"),
-                &BuiltInFunction::function_clamp_10C10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("outerProduct(20B10B"),
-                &BuiltInFunction::function_outerProduct_20B10B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00t10B00D"),
-                &BuiltInFunction::function_textureProjOffset_00t10B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(20C"),
-                &BuiltInFunction::function_isinf_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00e30B20B20B"),
-                &BuiltInFunction::function_textureGrad_00e30B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00J00D"),
-                &BuiltInFunction::function_textureSize_00J00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00Z20B"),
-                &BuiltInFunction::function_textureQueryLod_00Z20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dot(10C10C"),
-                &BuiltInFunction::function_dot_10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00n30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00n30B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01U20D00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01U20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01U20D00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01U20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProjLodEXT(00I30B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DProjLodEXT_00I30B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01N10D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01N10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01N10D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01N10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01b20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01b20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("step(00B00B"),
-                &BuiltInFunction::function_step_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DLodEXT(00I10B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture2DLodEXT_00I10B00B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00K20B00B"),
-                &BuiltInFunction::function_texture_00K20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00n30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00n30B10B10B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00J20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00J20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01V20D00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01V20D00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00U20B10D00B"),
-                &BuiltInFunction::function_textureOffset_00U20B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("intBitsToFloat(10D"),
-                &BuiltInFunction::function_intBitsToFloat_10D,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20C20C"),
-                &BuiltInFunction::function_min_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(10D"),
-                &BuiltInFunction::function_findLSB_10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00Y30B00B20D"),
-                &BuiltInFunction::function_textureProjLodOffset_00Y30B00B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01h00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01h00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture3D(00J20B"),
-                &BuiltInFunction::function_texture3D_00J20B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                &BuiltInFunction::function_texture3D_00J20B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_texture_3D,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_SecondaryFragDataEXT"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_SecondaryFragDataEXT,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_blend_func_extended,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01X10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01X10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(20C20C20C"),
-                &BuiltInFunction::function_faceforward_20C20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01O10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01O10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01X10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01X10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00n10B00B"),
-                &BuiltInFunction::function_textureGather_00n10B00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00X10B00D"),
-                &BuiltInFunction::function_textureGather_00X10B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01L00D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01L00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01L00D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01L00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01G20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01G20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01G20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01G20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00a20B10D"),
-                &BuiltInFunction::function_textureOffset_00a20B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01X10D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01X10D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30E30E"),
-                &BuiltInFunction::function_min_30E30E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture2DProj(00I30B00B"),
-                &BuiltInFunction::function_texture2DProj_00I30B00B,
-                nullptr,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00X10B"),
-                &BuiltInFunction::function_textureQueryLod_00X10B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01I20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01I20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureCubeGradEXT(00K20B20B20B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureCubeGradEXT_00K20B20B20B,
-                nullptr,
-                100,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_shader_texture_lod,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(00B00B"),
-                &BuiltInFunction::function_min_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00o00B00B00B00D"),
-                &BuiltInFunction::function_textureGradOffset_00o00B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30C30C30F"),
-                &BuiltInFunction::function_mix_30C30C30F,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(30C30C30C"),
-                &BuiltInFunction::function_mix_30C30C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_WorkGroupID"),
-                &BuiltInVariable::kVar_gl_WorkGroupID,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("degrees(00B"),
-                &BuiltInFunction::function_degrees_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01J20D00E"),
-                &BuiltInFunction::function_imageAtomicMax_01J20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01J20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01J20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01D20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01D20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicExchange(00D00D"),
-                &BuiltInFunction::function_atomicExchange_00D00D,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00m20B00D00B"),
-                &BuiltInFunction::function_textureOffset_00m20B00D00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxGeometryAtomicCounters"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxGeometryAtomicCounters,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00f30B10D"),
-                &BuiltInFunction::function_textureOffset_00f30B10D,
-                nullptr,
-                -1,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01a20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01a20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01a20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01a20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01a20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01a20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("matrixCompMult(60B60B"),
-                &BuiltInFunction::function_matrixCompMult_60B60B,
-                nullptr,
-                300,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(00z10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_00z10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00t30B"),
-                &BuiltInFunction::function_textureProj_00t30B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00t10B00B00B00D"),
-                &BuiltInFunction::function_textureProjGradOffset_00t10B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackSnorm2x16(00E"),
-                &BuiltInFunction::function_unpackSnorm2x16_00E,
-                nullptr,
-                300,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThan(30D30D"),
-                &BuiltInFunction::function_lessThan_30D30D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atan(00B00B"),
-                &BuiltInFunction::function_atan_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00S20B"),
-                &BuiltInFunction::function_textureQueryLod_00S20B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("notEqual(10B10B"),
-                &BuiltInFunction::function_notEqual_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01G20D"),
-                &BuiltInFunction::function_imageLoad_01G20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(30B"),
-                &BuiltInFunction::function_trunc_30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(30C"),
-                &BuiltInFunction::function_trunc_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(00B"),
-                &BuiltInFunction::function_length_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("length(00C"),
-                &BuiltInFunction::function_length_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01H20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01H20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01H20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01H20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00X30B00B"),
-                &BuiltInFunction::function_textureProj_00X30B00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01O10D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01O10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01C20D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01C20D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tan(00B"),
-                &BuiltInFunction::function_tan_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20E00E"),
-                &BuiltInFunction::function_min_20E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00x30B00B"),
-                &BuiltInFunction::function_textureLod_00x30B00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00j"),
-                &BuiltInFunction::function_textureSize_00j,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00n"),
-                &BuiltInFunction::function_textureSize_00n,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01F20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01F20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00c"),
-                &BuiltInFunction::function_textureSize_00c,
-                nullptr,
-                -1,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00c,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00b"),
-                &BuiltInFunction::function_textureSize_00b,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00b,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20B20B"),
-                &BuiltInFunction::function_min_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00q"),
-                &BuiltInFunction::function_textureSize_00q,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00r"),
-                &BuiltInFunction::function_textureSize_00r,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00w"),
-                &BuiltInFunction::function_textureSize_00w,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00v"),
-                &BuiltInFunction::function_textureSize_00v,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(20E20E00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_20E20E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxProgramTexelOffset"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxProgramTexelOffset,
-                300,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00O"),
-                &BuiltInFunction::function_textureSize_00O,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01a20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01a20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01g00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01g00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(00C"),
-                &BuiltInFunction::function_trunc_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01a20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01a20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00Q"),
-                &BuiltInFunction::function_textureSize_00Q,
-                nullptr,
-                -1,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00Q,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00P"),
-                &BuiltInFunction::function_textureSize_00P,
-                nullptr,
-                310,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00P,
-                nullptr,
-                300,
-                Shader::ALL,
-                &ShBuiltInResources::ANGLE_texture_multisample,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01M00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01M00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01M00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01M00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00W"),
-                &BuiltInFunction::function_textureSize_00W,
-                nullptr,
-                -1,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_textureSizeExt_00W,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00X20B00B"),
-                &BuiltInFunction::function_textureProjLod_00X20B00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00C00C00C"),
-                &BuiltInFunction::function_smoothstep_00C00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterAnd(00G00E"),
-                &BuiltInFunction::function_atomicCounterAnd_00G00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("faceforward(30B30B30B"),
-                &BuiltInFunction::function_faceforward_30B30B30B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(20C20C"),
-                &BuiltInFunction::function_distance_20C20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicCounterAdd(00G00E"),
-                &BuiltInFunction::function_atomicCounterAdd_00G00E,
-                nullptr,
-                -1,
-                460,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01O10D30D"),
-                &BuiltInFunction::function_imageStore_01O10D30D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00X10B"),
-                &BuiltInFunction::function_texture_00X10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(00C"),
-                &BuiltInFunction::function_ceil_00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ceil(00B"),
-                &BuiltInFunction::function_ceil_00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("distance(00B00B"),
-                &BuiltInFunction::function_distance_00B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00O10D"),
-                &BuiltInFunction::function_texelFetch_00O10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01N10D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01N10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01N10D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01N10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01C20D00D"),
-                &BuiltInFunction::function_imageAtomicExchange_01C20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01C20D00E"),
-                &BuiltInFunction::function_imageAtomicExchange_01C20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00s30B20B20B"),
-                &BuiltInFunction::function_textureGrad_00s30B20B20B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00I10B"),
-                &BuiltInFunction::function_textureGather_00I10B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01C20D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01C20D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30D30D"),
-                &BuiltInFunction::function_min_30D30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(30E"),
-                &BuiltInFunction::function_findMSB_30E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(30D"),
-                &BuiltInFunction::function_findMSB_30D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGradOffset(00R10B10B10B10D"),
-                &BuiltInFunction::function_textureGradOffset_00R10B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidth(30B"),
-                &BuiltInFunction::function_fwidth_30B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_fwidthExt_30B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00K20B20B20B"),
-                &BuiltInFunction::function_textureGrad_00K20B20B20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00S20D00D"),
-                &BuiltInFunction::function_texelFetch_00S20D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(10B00B"),
-                &BuiltInFunction::function_max_10B00B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00R30B10B10B10D"),
-                &BuiltInFunction::function_textureProjGradOffset_00R30B10B10B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00L20D00D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00L20D00D10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isnan(30C"),
-                &BuiltInFunction::function_isnan_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(50B"),
-                &BuiltInFunction::function_transpose_50B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThanEqual(20D20D"),
-                &BuiltInFunction::function_greaterThanEqual_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asinh(00B"),
-                &BuiltInFunction::function_asinh_00B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_PrimitiveIDIn"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_PrimitiveIDIn,
-                nullptr,
-                310,
-                Shader::GEOMETRY_EXT,
-                &ShBuiltInResources::EXT_geometry_shader,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00Z20B"),
-                &BuiltInFunction::function_textureGather_00Z20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGrad(00p10B00B00B"),
-                &BuiltInFunction::function_textureGrad_00p10B00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00v30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00v30B10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("greaterThan(20B20B"),
-                &BuiltInFunction::function_greaterThan_20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(20D20D"),
-                &BuiltInFunction::function_min_20D20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00g00D00D00D"),
-                &BuiltInFunction::function_texelFetchOffset_00g00D00D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01g00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01g00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01Q10D00D00E00E"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01Q10D00D00E00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01O10D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01O10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01O10D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01O10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tanh(20B"),
-                &BuiltInFunction::function_tanh_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00m30B00B"),
-                &BuiltInFunction::function_textureProj_00m30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sin(20B"),
-                &BuiltInFunction::function_sin_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("smoothstep(00C00C30C"),
-                &BuiltInFunction::function_smoothstep_00C00C30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00l00D"),
-                &BuiltInFunction::function_textureSize_00l00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLod(00o00B00B"),
-                &BuiltInFunction::function_textureLod_00o00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01K00D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01K00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01K00D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01K00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00I10B10D00B"),
-                &BuiltInFunction::function_textureOffset_00I10B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(00z10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_00z10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(00z10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_00z10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxAtomicCounterBufferSize"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxAtomicCounterBufferSize,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00J20B20D00B"),
-                &BuiltInFunction::function_textureOffset_00J20B20D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("lessThanEqual(20E20E"),
-                &BuiltInFunction::function_lessThanEqual_20E20E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_BaseVertex"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInVariable::kVar_gl_BaseVertex,
-                nullptr,
-                300,
-                Shader::VERTEX,
-                &ShBuiltInResources::ANGLE_base_vertex_base_instance,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00g00B00D"),
-                &BuiltInFunction::function_textureOffset_00g00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00g30B"),
-                &BuiltInFunction::function_textureProj_00g30B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01Z20D"),
-                &BuiltInFunction::function_imageLoad_01Z20D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldInsert(30E30E00D00D"),
-                &BuiltInFunction::function_bitfieldInsert_30E30E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(20E00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_20E00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("uintBitsToFloat(20E"),
-                &BuiltInFunction::function_uintBitsToFloat_20E,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("unpackUnorm4x8(00E"),
-                &BuiltInFunction::function_unpackUnorm4x8_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(10B10B"),
-                &BuiltInFunction::function_mod_10B10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_LocalInvocationIndex"),
-                &BuiltInVariable::kVar_gl_LocalInvocationIndex,
-                nullptr,
-                310,
-                0,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01W10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01W10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01W10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01W10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexImageUniforms"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexImageUniforms,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("equal(20D20D"),
-                &BuiltInFunction::function_equal_20D20D,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxCombinedAtomicCounterBuffers"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxCombinedAtomicCounterBuffers,
-                310,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10E10E10F"),
-                &BuiltInFunction::function_mix_10E10E10F,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00R10B00D"),
-                &BuiltInFunction::function_textureGather_00R10B00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureSize(00Z00D"),
-                &BuiltInFunction::function_textureSize_00Z00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("bitfieldExtract(30D00D00D"),
-                &BuiltInFunction::function_bitfieldExtract_30D00D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01J20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01J20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01J20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01J20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageStore(01T20D00D30B"),
-                &BuiltInFunction::function_imageStore_01T20D00D30B,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("intBitsToFloat(00D"),
-                &BuiltInFunction::function_intBitsToFloat_00D,
-                nullptr,
-                300,
-                330,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00m20B00B00D"),
-                &BuiltInFunction::function_textureLodOffset_00m20B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findLSB(00E"),
-                &BuiltInFunction::function_findLSB_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00p10D00D"),
-                &BuiltInFunction::function_texelFetch_00p10D00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00d10B00B"),
-                &BuiltInFunction::function_textureGather_00d10B00B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow2DProj(00d30B00B"),
-                &BuiltInFunction::function_shadow2DProj_00d30B00B,
-                nullptr,
-                -1,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(10B"),
-                &BuiltInFunction::function_inversesqrt_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("inversesqrt(10C"),
-                &BuiltInFunction::function_inversesqrt_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(30D"),
-                &BuiltInFunction::function_abs_30D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("transpose(D0B"),
-                &BuiltInFunction::function_transpose_D0B,
-                nullptr,
-                300,
-                120,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("abs(30C"),
-                &BuiltInFunction::function_abs_30C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGrad(00O30B10B10B"),
-                &BuiltInFunction::function_textureProjGrad_00O30B10B10B,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMax(01Z20D00D"),
-                &BuiltInFunction::function_imageAtomicMax_01Z20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString(""),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageLoad(01E20D"),
-                &BuiltInFunction::function_imageLoad_01E20D,
-                nullptr,
-                310,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00N20B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_textureProj_00N20B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::EXT_YUV_target,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_FragData"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_FragData,
-                100,
-                0,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdxCoarse(20B"),
-                &BuiltInFunction::function_dFdxCoarse_20B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20E00E00E"),
-                &BuiltInFunction::function_clamp_20E00E00E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00d30B"),
-                &BuiltInFunction::function_textureProj_00d30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexOutputVectors"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexOutputVectors,
-                300,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow1D(00m20B"),
-                &BuiltInFunction::function_shadow1D_00m20B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureOffset(00u10B00D"),
-                &BuiltInFunction::function_textureOffset_00u10B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cosh(10B"),
-                &BuiltInFunction::function_cosh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(10C"),
-                &BuiltInFunction::function_sign_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01G20D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_01G20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(01G20D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_01G20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sign(10D"),
-                &BuiltInFunction::function_sign_10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("umulExtended(00E00E00E00E"),
-                &BuiltInFunction::function_umulExtended_00E00E00E00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("gl_MaxVertexAttribs"),
-                nullptr,
-                &TSymbolTableBase::mVar_gl_MaxVertexAttribs,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString(""),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00a20B"),
-                &BuiltInFunction::function_texture_00a20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01T20D00D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01T20D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01T20D00D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01T20D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicExchange(01g00D00B"),
-                &BuiltInFunction::function_imageAtomicExchange_01g00D00B,
-                nullptr,
-                -1,
-                450,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("ldexp(10B10D"),
-                &BuiltInFunction::function_ldexp_10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00g30B00D"),
-                &BuiltInFunction::function_textureProjOffset_00g30B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00Z20B"),
-                &BuiltInFunction::function_texture_00Z20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("degrees(10B"),
-                &BuiltInFunction::function_degrees_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00K20B"),
-                &BuiltInFunction::function_texture_00K20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("sinh(10B"),
-                &BuiltInFunction::function_sinh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00m20B"),
-                &BuiltInFunction::function_texture_00m20B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01C20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01C20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("not(30F"),
-                &BuiltInFunction::function_notFunc_30F,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00I20B00B10D"),
-                &BuiltInFunction::function_textureProjLodOffset_00I20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00K20B"),
-                &BuiltInFunction::function_textureGather_00K20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00R10B10D"),
-                &BuiltInFunction::function_textureGatherOffset_00R10B10D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrierShared("),
-                &BuiltInFunction::function_memoryBarrierShared_,
-                nullptr,
-                310,
-                430,
-                Shader::COMPUTE,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("clamp(20B20B20B"),
-                &BuiltInFunction::function_clamp_20B20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetch(00W20D00D"),
-                &BuiltInFunction::function_texelFetch_00W20D00D,
-                nullptr,
-                -1,
-                150,
-                Shader::ALL,
-                &BuiltInFunction::function_texelFetchExt_00W20D00D,
-                nullptr,
-                310,
-                Shader::ALL,
-                &ShBuiltInResources::OES_texture_storage_multisample_2d_array,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLod(00g10B00B"),
-                &BuiltInFunction::function_textureProjLod_00g10B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(20C"),
-                &BuiltInFunction::function_trunc_20C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("trunc(20B"),
-                &BuiltInFunction::function_trunc_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00I30B10D00B"),
-                &BuiltInFunction::function_textureProjOffset_00I30B10D00B,
-                nullptr,
-                300,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("max(00C00C"),
-                &BuiltInFunction::function_max_00C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("tan(10B"),
-                &BuiltInFunction::function_tan_10B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00g00B"),
-                &BuiltInFunction::function_texture_00g00B,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00L20B00B10D"),
-                &BuiltInFunction::function_textureLodOffset_00L20B00B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureLodOffset(00u10B00B00D"),
-                &BuiltInFunction::function_textureLodOffset_00u10B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(00y10D00E"),
-                &BuiltInFunction::function_imageAtomicAnd_00y10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAnd(00y10D00D"),
-                &BuiltInFunction::function_imageAtomicAnd_00y10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("isinf(20B"),
-                &BuiltInFunction::function_isinf_20B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("dFdyCoarse(10B"),
-                &BuiltInFunction::function_dFdyCoarse_10B,
-                nullptr,
-                -1,
-                450,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00X10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00X10B10D00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(10E10E"),
-                &BuiltInFunction::function_min_10E10E,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("memoryBarrierImage("),
-                &BuiltInFunction::function_memoryBarrierImage_,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(10B"),
-                &BuiltInFunction::function_round_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("round(10C"),
-                &BuiltInFunction::function_round_10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjLodOffset(00m30B00B00D"),
-                &BuiltInFunction::function_textureProjLodOffset_00m30B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00g10B00B00B00D"),
-                &BuiltInFunction::function_textureProjGradOffset_00g10B00B00B00D,
-                nullptr,
-                -1,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00R30B"),
-                &BuiltInFunction::function_textureProj_00R30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("shadow1DProj(00m30B"),
-                &BuiltInFunction::function_shadow1DProj_00m30B,
-                nullptr,
-                -1,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00f30B00B"),
-                &BuiltInFunction::function_texture_00f30B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fma(00B00B00B"),
-                &BuiltInFunction::function_fma_00B00B00B,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01b20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01b20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01b20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01b20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGatherOffset(00v10B10D00D"),
-                &BuiltInFunction::function_textureGatherOffset_00v10B10D00D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("atomicMax(00E00E"),
-                &BuiltInFunction::function_atomicMax_00E00E,
-                nullptr,
-                310,
-                430,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01B20D00E"),
-                &BuiltInFunction::function_imageAtomicMin_01B20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicMin(01B20D00D"),
-                &BuiltInFunction::function_imageAtomicMin_01B20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureQueryLod(00t00B"),
-                &BuiltInFunction::function_textureQueryLod_00t00B,
-                nullptr,
-                -1,
-                400,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjOffset(00R30B10D"),
-                &BuiltInFunction::function_textureProjOffset_00R30B10D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProj(00X30B"),
-                &BuiltInFunction::function_textureProj_00X30B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(00D"),
-                &BuiltInFunction::function_findMSB_00D,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("findMSB(00E"),
-                &BuiltInFunction::function_findMSB_00E,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(20B20B20B"),
-                &BuiltInFunction::function_mix_20B20B20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicCompSwap(01X10D00D00D"),
-                &BuiltInFunction::function_imageAtomicCompSwap_01X10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("frexp(30C30D"),
-                &BuiltInFunction::function_frexp_30C30D,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mix(10C10C10C"),
-                &BuiltInFunction::function_mix_10C10C10C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("min(30D00D"),
-                &BuiltInFunction::function_min_30D00D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00M10B00B"),
-                nullptr,
-                nullptr,
-                -1,
-                -1,
-                Shader::ALL,
-                &BuiltInFunction::function_texture_00M10B00B,
-                nullptr,
-                300,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_EGL_image_external_essl3,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("fwidth(20B"),
-                &BuiltInFunction::function_fwidth_20B,
-                nullptr,
-                300,
-                0,
-                Shader::FRAGMENT,
-                &BuiltInFunction::function_fwidthExt_20B,
-                nullptr,
-                100,
-                Shader::FRAGMENT,
-                &ShBuiltInResources::OES_standard_derivatives,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01S10D00D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01S10D00D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01S10D00D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01S10D00D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("mod(30C00C"),
-                &BuiltInFunction::function_mod_30C00C,
-                nullptr,
-                -1,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01A10D00D"),
-                &BuiltInFunction::function_imageAtomicAdd_01A10D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicAdd(01A10D00E"),
-                &BuiltInFunction::function_imageAtomicAdd_01A10D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texture(00o00B00B"),
-                &BuiltInFunction::function_texture_00o00B00B,
-                nullptr,
-                -1,
-                130,
-                Shader::FRAGMENT,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01H20D00E"),
-                &BuiltInFunction::function_imageAtomicOr_01H20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicOr(01H20D00D"),
-                &BuiltInFunction::function_imageAtomicOr_01H20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("cos(20B"),
-                &BuiltInFunction::function_cos_20B,
-                nullptr,
-                0,
-                0,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureGather(00T20B"),
-                &BuiltInFunction::function_textureGather_00T20B,
-                nullptr,
-                310,
-                400,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("textureProjGradOffset(00J30B20B20B20D"),
-                &BuiltInFunction::function_textureProjGradOffset_00J30B20B20B20D,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("asinh(10B"),
-                &BuiltInFunction::function_asinh_10B,
-                nullptr,
-                300,
-                130,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("texelFetchOffset(00v10D10D"),
-                &BuiltInFunction::function_texelFetchOffset_00v10D10D,
-                nullptr,
-                -1,
-                140,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01E20D00E"),
-                &BuiltInFunction::function_imageAtomicXor_01E20D00E,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr),
-    SymbolEntry(ImmutableString("imageAtomicXor(01E20D00D"),
-                &BuiltInFunction::function_imageAtomicXor_01E20D00D,
-                nullptr,
-                -1,
-                420,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr,
-                nullptr,
-                nullptr,
-                -1,
-                Shader::ALL,
-                nullptr)};
+// Rules used to initialize the mangled name array.
+constexpr SymbolRule kRules[] = {
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00R30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00R30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtOffset_30B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00g10B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_00z10D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2DProj_00I20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture2DProj_00I20B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGradOffset_00v30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00o00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01g00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01I20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01I20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&tanh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&tanh_30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01E20D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00m00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01f00D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notFunc_10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notFunc_10F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_20E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_30B30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_00z10D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00t00B00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGradOffset_00O30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_20B30B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_20B30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_00z10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01f00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01f00D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageSamples_01V),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageSamples_01U),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageSamples_01T),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageSamples_01S),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_20B20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_20B20B00B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageSamples_01Q),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00o00B00B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&uintBitsToFloat_30E),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&uintBitsToFloat_30E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01R10D00D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00K00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00K00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00h00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxAtomicCounterBindings),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxAtomicCounterBindings),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetchOffset_00q10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThanEqual_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThanEqual_10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00d20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00d20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_30B30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_30B30B30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01a20D00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01R10D00D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00a20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00a20B00B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01K00D30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01F20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01F20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ceil_10C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01b20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01A10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01D20D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicAdd_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicAdd_00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00p00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToUint_20B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToUint_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00t30B00D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01Q10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01Q10D00D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_20D20D20F),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&degrees_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&degrees_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01Y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01Z20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01D20D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&min_00C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01S10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01R10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01Q10D00D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&inversesqrt_00C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&inversesqrt_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&inversesqrt_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01Q10D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00J20D00D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00J20D00D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00S30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00S30B20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_30D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_30D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&groupMemoryBarrier_),
+    Rule::Get<Spec::GLSL, 430, Shader::COMPUTE, 0>(&groupMemoryBarrier_),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01N10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01N10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01b20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01b20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&step_20C20C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00I10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00I10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mod_00C00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_E0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_E0B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01R10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01R10D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00f20B00B70D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00O20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00Y30B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00Y30B20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&modf_10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&modf_10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01K00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01K00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&determinant_50B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01J20D00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00g10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentInputVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentInputVectors),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&sign_20C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&cosh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&cosh_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sign_20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sign_20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&atanh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&atanh_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01V20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01V20D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00t10B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00p20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fma_10C10C10C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01Y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01Y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01N10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01C20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00d20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00d20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00m20B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01C20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThan_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThan_10E10E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01A10D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00X00B00B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00t30B00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fma_30C30C30C),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureGrad_00v10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(EXT_YUV_target)>(&textureProj_00N30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&step_00C00C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedShaderOutputResources),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedShaderOutputResources),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00I10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00I10B00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetch_00j00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_20D20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&clamp_20C20C20C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_00z10D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&all_10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&all_10F),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdyCoarse_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isinf_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isinf_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00a20B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00a20B10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00I10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00I10B10D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjOffset_00q30B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00L20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00L20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThanEqual_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThanEqual_30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_10E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_10E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01a20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01a20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00S30B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00S30B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&round_00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&round_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&round_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_30D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00U20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00U20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01P10D00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&smoothstep_00C00C20C),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(
+        &texture2DRect_00O10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01K00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01K00D00D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise2_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryOutputVertices),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_20B20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01b20D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_10E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtOffset_00B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00t00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00S20B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00S20B00B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00p00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_00z10D30D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_00z10D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_10B20B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_10B20B),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&fwidthFine_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cos_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cos_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&unpackHalf2x16_00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&unpackHalf2x16_00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01J20D30E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01J20D30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_10B10B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01M00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeTextureImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeTextureImageUnits),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01Y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01Y10D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sin_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sin_30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01O10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01Q10D00D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00L20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00L20B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01A10D30E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01A10D30E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01H20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01H20D00E),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&shadow1D_00m20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_10E10E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_10E10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_10E10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&texture_00N10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00t30B00B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01E20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01E20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00a20D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00a20D00D10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01V20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notFunc_20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notFunc_20F),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01F20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01Q10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01Q10D00D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01F20D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01L00D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_20B20B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00R20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00R20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00p10B00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00h20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01B20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01B20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00J30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00J30B20B20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01R10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01R10D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00X10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00X10B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_InvocationID),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01R10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01E20D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&radians_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&radians_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00n10B00B10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise2_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00a10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00e20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00e20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&distance_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&distance_10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00Z20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00Z20B20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sign_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sign_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_30E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_30E00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00I10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00I10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_10D10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01f00D30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01I20D00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&degrees_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&degrees_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&inversesqrt_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&inversesqrt_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&inversesqrt_30C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01I20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00v20B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&intBitsToFloat_20D),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&intBitsToFloat_20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01A10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01A10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&acosh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&acosh_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00S30B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00S30B00B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00L20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00L20B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProj_00n30B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00i00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00p20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_30B20B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_30B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00S20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00S20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicXor_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicXor_00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00Y20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00Y20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01P10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01P10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01N10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01N10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_10D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_10D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sign_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sign_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&sign_30C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sign_30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sign_30D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00Y20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00Y20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdy_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdy_20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdyExt_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00Y30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00Y30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00X10B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00X10B10D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&memoryBarrierBuffer_),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&memoryBarrierBuffer_),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isinf_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isinf_00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&isinf_00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_20D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_20D00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&texture2DProj_00I20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture2DProj_00I20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01A10D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00O10B70D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00f20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00f20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00m30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThan_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThan_20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00I30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00I30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&refract_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&refract_00B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryImageUniforms),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_00y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_00y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01X10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01X10D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00e00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00e00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00a20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00a20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&step_00C10C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&frexp_30B30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_30B30D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01Y10D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00t00B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&min_30C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01X10D00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00I10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00I10B),
+    Rule::Get<Spec::ESSL, 300, Shader::VERTEX, 0>(&BuiltInVariable::kgl_InstanceID),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_InstanceID),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&normalize_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&normalize_20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&normalize_20C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01H20D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&inverse_F0B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&inverse_F0B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01K00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_20C20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00R10B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00R10B10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01h00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01h00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThan_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThan_30E30E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01U20D00D30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00p10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01J20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01J20D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_DepthRange),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_DepthRange),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01S10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01K00D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00o30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01I20D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_20D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_20D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00L20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00L20B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01L00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01L00D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_30D30D30F),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01Z20D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01Z20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01Z20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01f00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01f00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01h00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01E20D00E00E),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjOffset_00O30B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&floor_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&floor_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&floor_10C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01R10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01R10D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00o10B00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00x30B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtSample_10B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01F20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01F20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_10B30B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_10B30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01O10D00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cos_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cos_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01F20D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_00C00D),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterCompSwap_00G00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00a20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00a20B10D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00X10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00X10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00R10B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00R10B10D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00d10B00B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00d10B00B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentImageUniforms),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentImageUniforms),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00i00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&equal_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&equal_20E20E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&uaddCarry_00E00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&uaddCarry_00E00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00T20B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&textureCube_00K20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&textureCube_00K20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01U20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01U20D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_90B90B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01T20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01T20D00D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00p10B00B00B00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00g30B00B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_30E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_30E00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&asin_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&asin_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00J30B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00J30B20D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01W10D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetch_00w00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01b20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&notEqual_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&notEqual_30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThanEqual_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThanEqual_10E10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&inversesqrt_20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&inversesqrt_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&inversesqrt_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00i20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00u10B00D00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&reflect_00C00C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicAdd_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicAdd_00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&intBitsToFloat_30D),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&intBitsToFloat_30D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGradOffset_00v20B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00X10B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00X10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThanEqual_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThanEqual_30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&mix_20B20B20F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&mix_20B20B20F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAtomicCounters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAtomicCounters),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_20B20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&any_10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&any_10F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00d30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00d30B10B10B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01X10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00I30B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00I30B10D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01W10D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01W10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01W10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00X10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00X10B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01K00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00R10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00R10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01Z20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01M00D30E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&radians_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&radians_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01Y10D30E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, EXT_INDEX(EXT_blend_func_extended)>(
+        &TableBase::m_gl_MaxDualSourceDrawBuffersEXT),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01Y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01Y10D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_10E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01g00D30D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGradOffset_00q20B10B10B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01S10D00D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicXor_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicXor_00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_00C00C00F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00g00B00B00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentAtomicCounters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentAtomicCounters),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&faceforward_20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&faceforward_20B20B20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureSize_00x00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00S30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00S30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fma_20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00o10B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01J20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_30B30B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_30B30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_10E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log_00B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_00F00F00F),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01M00D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01T20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01T20D00D00D),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&subpassLoad_01l00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01N10D30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&acosh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&acosh_30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01Y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01Y10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00X10B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00X10B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00X10D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00X10D00D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&packUnorm2x16_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&packUnorm2x16_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00h20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&umulExtended_20E20E20E20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&umulExtended_20E20E20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00m20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00g30B00B00B00D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00o30B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::VERTEX, 0>(&textureCubeLod_00K20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&textureCubeLod_00K20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00L00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00L00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01L00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_20E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_20E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00S30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00S30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdy_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdy_30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdyExt_30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01W10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&isinf_10C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isinf_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isinf_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00a20B70D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexTextureImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexTextureImageUnits),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_30B30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DProjLodEXT_00I20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FrontFacing),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FrontFacing),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01C20D30D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01C20D30D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00t10B00D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01Z20D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&acos_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&acos_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&textureCube_00K20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&textureCube_00K20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeAtomicCounterBuffers),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00f00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00f00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01B20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00h10D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mod_20C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01g00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(ARM_shader_framebuffer_fetch)>(
+        &BuiltInVariable::kgl_LastFragColorARM),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_20D20D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00k20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00Y30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00Y30B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_blend_func_extended)>(
+        &BuiltInVariable::kgl_SecondaryFragColorEXT),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01U20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01U20D00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::VERTEX, EXT_INDEX(ANGLE_base_vertex_base_instance)>(
+        &BuiltInVariable::kgl_BaseInstance),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_B0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_B0B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01b20D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_20F20F20F),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_00B00B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_00B00B30B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01M00D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01F20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01M00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01M00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01F20D00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&texelFetch_00N10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00a00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00a00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01T20D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00Y30B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00Y30B20D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureOffset_00n20B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00R10B70D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01b20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&ceil_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&ceil_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00S00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00S00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01S10D00D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCounterDecrement_00G),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&atomicCounterDecrement_00G),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&ceil_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&ceil_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00t00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&memoryBarrier_),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&memoryBarrier_),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00f30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00f30B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageSamples_01R),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00R10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00R10D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sign_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sign_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_30B30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_30B30B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00R10B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00R10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00t10B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01W10D00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01V20D00D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&ldexp_20B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_20B20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_30D30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01D20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01D20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_10E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00Z20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00Z20B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01S10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01S10D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cos_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cos_10B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetch_00v10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00e30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00e30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01W10D30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00T00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00T00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01g00D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00u00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00Y30B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00Y30B20B20B20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise3_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00T20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00T20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture1DProj_00g10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00d30B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00d30B10D00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00X10B70D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01U20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01U20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01h00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01h00D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&matrixCompMult_50B50B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&matrixCompMult_50B50B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_30B30B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01E20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00U20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00U20B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01I20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01I20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00h10B00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00p10B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&max_20C20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_PointSize),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_PointSize),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01B20D00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&asin_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&asin_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sinh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sinh_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01g00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01h00D00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00S20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00S20B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fma_20C20C20C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01N10D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00R20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00R20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThan_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThan_10E10E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01M00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01M00D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::GEOMETRY, 0>(&EmitVertex_),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(&EmitVertex_),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_20B20B20B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&textureSamples_00b),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00J20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00J20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00J20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00J20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01V20D00D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01V20D00D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01Y10D00E00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_00y10D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_00y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_00y10D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::NOT_COMPUTE, EXT_INDEX(OVR_multiview)>(
+        &BuiltInVariable::kgl_ViewID_OVR),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&radians_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&radians_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&fract_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&fract_30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01B20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01B20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01H20D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&uaddCarry_20E20E20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&uaddCarry_20E20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00X30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00X30B10B10B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&textureSamples_00P),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjOffset_00v20B10D),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&shadow2D_00d20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00o00D00D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&textureSamples_00V),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&textureSamples_00W),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGrad_00q30B10B10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00O10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_10D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_10D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeImageUniforms),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeImageUniforms),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00L20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00L20B00B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01A10D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01V20D00D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01A10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01A10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01b20D00D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texture_00n20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_20C20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_00E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_00E00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&length_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&length_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&ldexp_00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_00B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01N10D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_00D00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_00D00D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00Y30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00Y30B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&roundEven_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&roundEven_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&roundEven_30C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&acosh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&acosh_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&atanh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&atanh_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&length_20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_10B10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_10B10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00L20B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00L20B10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01N10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToInt_30B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToInt_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_20B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_00z10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00Y20D00D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00Y20D00D20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicExchange_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicExchange_00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01h00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01h00D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_30C30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00o00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00X10B70D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_10B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00f10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&smoothstep_10C10C10C),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00U20B70D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01L00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01L00D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_30F30F30F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&abs_20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&abs_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&abs_20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&abs_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&abs_20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01f00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01f00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01a20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_00B00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&mix_00B00B00F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&mix_00B00B00F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00s30B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00I20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00I20B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00p10B00B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&unpackDouble2x32_00C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&acos_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&acos_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00J20B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00J20B20B20B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fma_00C00C00C),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DGradEXT_00I10B10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01G20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01I20D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DProjGradEXT_00I30B10B10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fma_30B30B30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01L00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00i20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeWorkGroupCount),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeWorkGroupCount),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&clamp_20C00C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01X10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_00y10D00E00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_30E30E30F),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01b20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01G20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01G20D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00I10B70D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01S10D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01Z20D00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtSample_30B00D),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdxCoarse_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &texture_00M10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00h10B00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::GEOMETRY, 0>(&EndStreamPrimitive_00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&pow_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&pow_10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00Y20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00Y20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01P10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00X10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00X10B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&frexp_00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_00B00D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2D_00I10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture2D_00I10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01O10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ceil_20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&ceil_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&ceil_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01b20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01b20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01P10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01P10D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01P10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00R20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00R20B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01V20D00D30E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01T20D00D00E00E),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&subpassLoad_01m00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00I10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00I10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&reflect_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&reflect_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise4_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&sqrt_10C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sqrt_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sqrt_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01Z20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01Z20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_20E20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_20E20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00g00B00B00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00q20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise3_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01G20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01G20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01C20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01C20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01F20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00d30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00d30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01a20D30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01H20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01H20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00I20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00I20B10B10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtSample_20B00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&reflect_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&reflect_10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&refract_10B10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&refract_10B10B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01h00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_20C20C20F),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01X10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01X10D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_20C20C20C),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureOffset_00v10B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01P10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sinh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sinh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00m00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00e20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&asinh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&asinh_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01C20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01I20D00D00D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProj_00O20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(&textureProj_00O20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01M00D00E00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&frexp_10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&inverse_50B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&inverse_50B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&dot_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&dot_10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01T20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01T20D00D00E),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise2_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00o10B00B00B00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&radians_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&radians_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCompSwap_00E00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicCompSwap_00E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00I00B00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00Y20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00Y20B20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexUniformVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexUniformVectors),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00o00B00D00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&ftransform_),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00X20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00X20B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjOffset_00n30B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryUniformComponents),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&greaterThanEqual_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&greaterThanEqual_20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureProj_00M20B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture3DProjLod_00J30B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(
+        &texture3DProjLod_00J30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&isinf_30C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01S10D00D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_10D10D10F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00g10B00B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01D20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01D20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00h10B00D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&modf_30B30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&modf_30B30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&roundEven_20C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&roundEven_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&roundEven_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_30B10B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_30B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00J30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00J30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_00y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_00y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01F20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01F20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00t00B00B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToInt_20B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToInt_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00U20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00U20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicMin_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicMin_00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01Q10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01Q10D00D00E),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureGradOffset_00v10B10B10B10D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureGrad_00n20B10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01S10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_20E20E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01F20D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&abs_10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&abs_10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&abs_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&abs_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&abs_10C),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_frag_depth)>(
+        &TableBase::m_gl_FragDepthEXT),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01V20D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&modf_30C30C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01g00D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00i20B00B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00g10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00X20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00X20B00B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&max_30C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01W10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00a20B70D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00U20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00U20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00I30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00I30B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_00E00E00F),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01h00D00D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_00D00D00F),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjOffset_00q20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00i20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00a20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00a20B10B10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_00B00B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_00B00B20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureLod_00s30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01C20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01C20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01g00D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_30B30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01W10D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00f20B00B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00f20B00B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01T20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_00y),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_00y),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01W10D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_00z),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_00z),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mod_10C10C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01g00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&faceforward_00C00C00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00a20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00a20B10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01R10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01T20D00D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdxCoarse_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01a20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00J20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00J20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&refract_20B20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&refract_20B20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ceil_30C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryOutputComponents),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise1_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log2_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log2_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00d30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00d30B10B10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mod_20C20C),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fract_30C),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00t00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01L00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_30E30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentAtomicCounterBuffers),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_in),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise4_00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&distance_10C10C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00J30B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00J30B00B20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01H20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01H20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01h00D30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00d10B00B70D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00c20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &texelFetchExt_00c20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sqrt_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sqrt_00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&sqrt_00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00R30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00R30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise3_10B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetch_00q10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01F20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00m20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00m30B00D00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGrad_00v30B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_20D20D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_20D20D20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01P10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01C20D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&clamp_00C00C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01b20D00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_10E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_10E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00U20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00U20B10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01B20D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_00z10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_00z10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&clamp_30C00C00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sinh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sinh_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_E0BE0B),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&fwidthFine_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_PerVertex),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00m20B00B00B00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00p),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_WorkGroupSize),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_WorkGroupSize),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&asinh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&asinh_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&cross_20C20C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00a20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00a20B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGradOffset_00O20B10B10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&pow_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&pow_30B30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01G20D00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_10B10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_10B10B10B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProj_00O30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(&textureProj_00O30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01Q10D00D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00R10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01T20D00D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01R10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01R10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01E20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01E20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isnan_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isnan_00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&isnan_00C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imulExtended_10D10D10D10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&imulExtended_10D10D10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00o10B00B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&refract_10C10C00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_00E00E),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2DProj_00I30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture2DProj_00I30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00I10B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00I10B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00J20B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00J20B00B20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCompSwap_00D00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicCompSwap_00D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01W10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01W10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00i20B00D),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdyFine_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00a20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00a20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&textureProj_00N30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&refract_30C30C00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_30D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&packSnorm2x16_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&packSnorm2x16_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToUint_30B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToUint_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_00y10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_00y10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00R10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00R10B10D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGrad_00q20B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00R20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00R20B10B10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&ldexp_30B30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_30B30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01Q10D00D00D),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterOr_00G00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_30B30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01T20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01T20D00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00I30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00I30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01D20D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00g00B00D00B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01D20D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01g00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&abs_00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&abs_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&abs_00C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&abs_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&abs_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00R10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00R10B00B),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdxCoarse_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture1D_00g00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_10C10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01B20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01g00D00E),
+    Rule::Get<Spec::ESSL, 100, Shader::VERTEX, 0>(&texture2DLod_00I10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture2DLod_00I10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00X20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00X20B10B10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&round_20C),
+    Rule::Get<Spec::GLSL, 150, Shader::GEOMETRY, 0>(&EndPrimitive_),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &EndPrimitive_),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_00B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_00B30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&round_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&round_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&equal_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&equal_30E30E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01R10D00D00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&step_00C20C),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&dot_00C00C),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&max_30C30C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicOr_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicOr_00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2DProj_00M20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_10D10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureSize_00V),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00V),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &textureSizeExt_00V),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01h00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&min_20C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01G20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01G20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_30E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00X20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00X20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&shadow2D_00d20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01N10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01N10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00U20B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00U20B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&faceforward_10B10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&faceforward_10B10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01h00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01B20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01B20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::GEOMETRY, 0>(&EmitStreamVertex_00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01J20D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&all_20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&all_20F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01J),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01J),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01K),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01H),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01H),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01I),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01I),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&packHalf2x16_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&packHalf2x16_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00I20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00I20B00B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01L),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01M),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01C),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01A),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01A),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01F),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01G),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01G),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageSize_01E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01Z),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01L00D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01Z20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00X10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00X10D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_30F30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_30F30F),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01R),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01S),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01P),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01Q),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01V),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00g00B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01T),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01U),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01h),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fract_20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&fract_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&fract_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00X10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00X10B10D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01c),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01a),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01f),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DProjGradEXT_00I20B10B10B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01d),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00S20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00S20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&step_30C30C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01J20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragDepth),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragDepth),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00x30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&mix_30B30B30F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&mix_30B30B30F),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_30B30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_30B30B30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00Z20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00Z20B00D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise4_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&sqrt_30C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sqrt_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sqrt_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01E20D30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01E20D30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_30D30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_30D30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryTextureImageUnits),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtCentroid_10B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texture_00q10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureSize_00M00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&textureSamples_00c),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, EXT_INDEX(ANGLE_base_vertex_base_instance)>(
+        &BuiltInVariable::kangle_BaseInstance),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_10F10F10F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00U20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00U20B10B10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_Position),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_Position),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_PositionGS),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureGradOffset_00O10B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureProj_00M30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00L20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00L20B10B10B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01V20D00D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01J20D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01J20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01J20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00l20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01M00D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&dot_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&dot_20B20B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGrad_00v20B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00S30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00S30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00R20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00R20B10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_00z10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_00z10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&normalize_30C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&normalize_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&normalize_30B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureOffset_00O10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00I20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00I20B10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00e20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01V20D00D00E),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2D_00M10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01a20D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&fwidthFine_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00K20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00K20B00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_texture_lod)>(
+        &textureCubeLodEXT_00K20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00T20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00T20B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&textureProj_00N20B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00I10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01A10D00E00E),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdyFine_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&modf_10C10C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01E20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01E20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00X30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00X30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00m30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00g30B00D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00U20D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00U20D00D10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_00z10D00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01D20D00E),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGradOffset_00q30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00d20B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00d20B10B10B10D),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&fwidthCoarse_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00d30B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00d30B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_20F20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_20F20F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_20C20C00C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&usubBorrow_10E10E10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&usubBorrow_10E10E10E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01S10D00D30E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01Q10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01Q10D00D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01Q10D00D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00U20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00U20B00B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&isnan_10C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isnan_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isnan_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01H20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01A10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01A10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01C20D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00R00B00B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01W10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01W10D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicMin_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicMin_00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00X00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00X00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_10B10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_00C00C00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_30D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_30D00D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_20E20E20F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToInt_10B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToInt_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00R30B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00R30B10D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00U20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00U20B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToInt_00B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToInt_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01a20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToUint_00B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToUint_00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&min_30C30C),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&textureSamples_00Q),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00i20B00B00B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_00z10D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(
+        &texture2DRectProj_00O20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&modf_20C20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&tan_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&tan_20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&floor_00C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&floor_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&floor_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01O10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01O10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mod_30C30C),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, EXT_INDEX(ANGLE_multi_draw)>(
+        &BuiltInVariable::kgl_DrawID),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00t00B00D),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture3DLod_00J20B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(
+        &texture3DLod_00J20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00R10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00R10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&modf_00B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&modf_00B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_20D20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01R10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01R10D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_10C10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_00y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_00y10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&determinant_A0B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00i20B00B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01D20D30E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01D20D30E),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&shadow1DLod_00m20B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01I20D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&distance_00C00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isnan_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isnan_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00o30B00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_30D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureProj_00M30B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&texture2DProj_00M30B),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterMax_00G00E),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterExchange_00G00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00I10B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00I10B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_00B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_00B20B),
+    Rule::Get<Spec::ESSL, 100, Shader::VERTEX, 0>(&texture2DProjLod_00I20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture2DProjLod_00I20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&step_00C30C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&yuv_2_rgb_20B00H),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&texelFetch_00b10D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00b10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &texelFetchExt_00b10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00J30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00J30B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00R10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00R10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01K00D00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01V20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01V20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01P10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01L00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_10D10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&all_30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&all_30F),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01P10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01a20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01S10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01S10D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::VERTEX, EXT_INDEX(ANGLE_base_vertex_base_instance)>(
+        &BuiltInVariable::kangle_BaseVertex),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_20E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01I20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01I20D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01I20D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryInputComponents),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00u20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00v20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&fract_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&fract_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fract_10C),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00O10B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00K20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00I10B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00I10B00B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01S10D00D00E00E),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise4_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00U20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00U20B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_00y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_00y10D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicAnd_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicAnd_00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragColor),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragColor),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&unpackUnorm2x16_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&unpackUnorm2x16_00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sqrt_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sqrt_20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&sqrt_20C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00L20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00L20B10B10B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtCentroid_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00o00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxImageUnits),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00o30B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&packUnorm4x8_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&packUnorm4x8_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&texelFetch_00P10D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00P10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &texelFetchExt_00P10D00D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texture_00O10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(&texture_00O10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01M00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01M00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00e30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00e30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01O10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01O10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01B20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01B20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragCoord),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_FragCoord),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01X10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00u10B00B00B),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&fwidthFine_20B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00o00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01E20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01E20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&normalize_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&normalize_00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&normalize_00C),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&clamp_10C00C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01f00D00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01A10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01A10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01K00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01K00D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicMax_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicMax_00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00m30B00B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01R10D00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&floatBitsToUint_10B),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&floatBitsToUint_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00J20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00J20B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01D20D00D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureGrad_00O10B10B10B),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdyFine_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00I00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00I00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeWorkGroupSize),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeWorkGroupSize),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00R10D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00R10D00D10D),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdxFine_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01K00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01K00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00X10B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00X10B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00T20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00T20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00n10B00B70D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01K00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_00y10D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_20F20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_20F20F),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&allInvocationsEqual_00F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01G20D30E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01G20D30E),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdyCoarse_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00R20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00R20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_30D30D),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&fwidthCoarse_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00I20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00I20B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01X10D30D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00l),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00m),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00o),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00h),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00i),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00k),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00d),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00e),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00f),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00g),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxDrawBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxDrawBuffers),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00a),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterMin_00G00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00u10B00B00B00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00x),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00t),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00u),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imulExtended_20D20D20D20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&imulExtended_20D20D20D20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&any_30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&any_30F),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&distance_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&distance_30B30B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00s),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00L),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00I),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00J),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00K),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01L00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01W10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01W10D00E),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture3D_00J20B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(&texture3D_00J20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture1DLod_00g00B00B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00X),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00Y),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00Z),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&dot_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&dot_30B30B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00T),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00U),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00R),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureQueryLevels_00S),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxTextureImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxTextureImageUnits),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&usubBorrow_20E20E20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&usubBorrow_20E20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00t30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&shadow1DProj_00m30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_30B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_30B00B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(ARB_texture_rectangle)>(
+        &texture2DRectProj_00O30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01B20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_10D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_10D00D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureGradOffset_00n20B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_00D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_00D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&floor_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&floor_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&floor_30C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01P10D30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00S30B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00S30B20B20B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&reflect_30C30C),
+    Rule::Get<Spec::ESSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_PointCoord),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&BuiltInVariable::kgl_PointCoord),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01D20D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00v10B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01D20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&packDouble2x32_10E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_10B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_10B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01F20D30D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01F20D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00S20D00D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00S20D00D20D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00g00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00U20B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00U20B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00q10B10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00I10B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00I10B00D),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture1DProjLod_00g30B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&texelFetch_00V10D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00V10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &texelFetchExt_00V10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01h00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01h00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_30B30B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01h00D00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00R10B70D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01a20D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00g30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_00B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01J20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01J20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01F20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01F20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp2_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp2_20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&smoothstep_30C30C30C),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_00z10D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_00z10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_00z10D00D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProj_00q20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00t10B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01K00D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01K00D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedTextureImageUnits),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedTextureImageUnits),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureSize_00k00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&reflect_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&reflect_20B20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01V20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01V20D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_10F10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_10F10F),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01f00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&acos_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&acos_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdx_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdx_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdxExt_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldReverse_30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldReverse_30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture1DProj_00g30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fract_00C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&fract_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&fract_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_30E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_30E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&TableBase::m_gl_MinProgramTexelOffset),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MinProgramTexelOffset),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtOffset_20B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryTotalOutputComponents),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&reflect_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&reflect_30B30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00I10B70D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtCentroid_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00s30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01X10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01X10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01Z20D30B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture1D_00g00B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&pow_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&pow_00B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_00B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&faceforward_30C30C30C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&roundEven_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&roundEven_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&roundEven_10C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&atanh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&atanh_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00K20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00K20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitCount_20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitCount_20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00L20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00L20D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdxFine_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&distance_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&distance_20B20B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureGradOffset_00q10B10B10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&uaddCarry_30E30E30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&uaddCarry_30E30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00U00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00U00D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00o10B00D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedImageUniforms),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedImageUniforms),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterXor_00G00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01g00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01g00D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_GlobalInvocationID),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_GlobalInvocationID),
+    Rule::Get<Spec::ESSL, 300, Shader::VERTEX, 0>(&BuiltInVariable::kgl_VertexID),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&BuiltInVariable::kgl_VertexID),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01L00D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&smoothstep_20C20C20C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01U20D00D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicOr_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicOr_00E00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01T20D00D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&mix_10B10B10F),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&mix_10B10B10F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&reflect_10C10C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_10B10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_10B10B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00Y30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00Y30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01I20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01I20D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&frexp_20B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_20B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00I10B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00I10B10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&notEqual_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&notEqual_20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00d20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00d20B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&inverse_A0B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&inverse_A0B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00X20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00X20B10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01J20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01J20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00Y00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00Y00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&usubBorrow_00E00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&usubBorrow_00E00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01M00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01M00D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdyFine_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00s20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01N10D00D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texture_00v10B),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&subpassLoad_01n00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00g10B00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&step_10C10C),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00x20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fma_10B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_00B00B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_00B00B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01a20D00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01N),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00u10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00m30B00B00B00D),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&fwidthCoarse_00B),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdyCoarse_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00o30B00B00B00D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00g30B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_00E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_00E00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01I20D30D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01I20D30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&distance_30C30C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&any_20F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&any_20F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00L20B70D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00g00B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sin_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sin_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&textureSize_00N00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_20B20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01h00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01h00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGrad_00k30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00o10B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01A10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01A10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00f30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00f30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_20D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_20D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_10D10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01N10D00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00t00B00B00B00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&refract_30B30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&refract_30B30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&floor_20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&floor_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&floor_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00t00D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01a20D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&matrixCompMult_F0BF0B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&matrixCompMult_F0BF0B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&umulExtended_10E10E10E10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&umulExtended_10E10E10E10E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00d20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00d20B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01Z20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01Z20D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&umulExtended_30E30E30E30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&umulExtended_30E30E30E30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00q10B70D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00Y20B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00Y20B20B20B20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00a20B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00a20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00f30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00f30B10B10B),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterSubtract_00G00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01C20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&modf_20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&modf_20B20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01Y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01Y10D00E),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise1_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01M00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01L00D00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&length_30C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&length_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&length_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_30B30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_10C10C10F),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_00z10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_00z10D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp2_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp2_30B),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&allInvocations_00F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&max_20C00C),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture3DProj_00J30B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(
+        &texture3DProj_00J30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01Q10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00X30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00X30B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00I30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00I30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&cosh_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&cosh_30B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProj_00q30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00S20B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00S20B20D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&usubBorrow_30E30E30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&usubBorrow_30E30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00R20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00R20B10D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01f00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01f00D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00t00B00D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00i20B00D00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture3DProj_00J30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(&texture3DProj_00J30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_B0BB0B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_30B30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cross_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cross_20B20B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01O),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureGrad_00q10B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_20B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_20B00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdx_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdx_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdxExt_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00o30B00B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00R20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00R20B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&acos_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&acos_20B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetch_00r00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01B20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThan_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThan_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00g10B00D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_30F30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_30F30F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&sign_00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&cosh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&cosh_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_00D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01E20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01E20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00Z20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00Z20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sign_00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sign_00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00Y20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00Y20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_60B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_60B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01L00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01O10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01O10D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&faceforward_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&faceforward_00B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_NumWorkGroups),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_NumWorkGroups),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01O10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01O10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01b20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtCentroid_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00R30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00R30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00h10B00B00B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01U20D00D00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture1DProj_00g30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00h00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01U20D00D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&modf_00C00C),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00t30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00o00B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01U20D00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00U20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00U20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01H20D30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01H20D30B),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00Q20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &texelFetchExt_00Q20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&roundEven_00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&roundEven_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&roundEven_00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetchOffset_00O10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&atanh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&atanh_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_10E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_10E00E00E),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdxFine_30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01L00D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00J20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00X30B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00X30B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentUniformVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxFragmentUniformVectors),
+    Rule::Get<Spec::ESSL, 100, Shader::VERTEX, 0>(&texture2DProjLod_00I30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture2DProjLod_00I30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtOffset_10B10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&max_10C10C),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00g00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&abs_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&abs_30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_10E10E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_10E10E00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&packSnorm4x8_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&packSnorm4x8_30B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_10B10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_10B10B00B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01b),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_30D30D30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_30D30D30D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00d10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mod_10C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01G20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01G20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01R10D00D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&determinant_F0B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_A0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_A0B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&pow_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&pow_20B20B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01g),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01G20D00B),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&imageSize_01e),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01G20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01G20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01Y10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01g00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01g00D00E),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProj_00v30B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGrad_00O20B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log2_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log2_20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&dot_30C30C),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&fwidthCoarse_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00I20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00I20B10D00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00U20B70D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_10F10F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_10F10F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00O10B70D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&smoothstep_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&smoothstep_00B00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00d30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00d30B00B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01P10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01P10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00I30B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00I30B00B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedAtomicCounters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedAtomicCounters),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_10D10D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_10D10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_00y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_00y10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01Q10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01Q10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01L00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00k30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00J20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00J20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThanEqual_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThanEqual_10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00o30B00D00B),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, 0>(&TableBase::m_gl_MaxVaryingVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVaryingVectors),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00d00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00d00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sin_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sin_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01N10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&uaddCarry_10E10E10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&uaddCarry_10E10E10E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01Z20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01Z20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_10C10C00C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCounterIncrement_00G),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&atomicCounterIncrement_00G),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01J20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01J20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01S10D00D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01W10D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00o10B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01U20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01U20D00D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00m30B00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01Y10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&equal_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&equal_10E10E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01Y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01Y10D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01O10D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01O10D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00J30B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00J30B20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01D20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01D20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&notEqual_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&notEqual_10E10E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&min_10C10C),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00t10B00B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00q20B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01B20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01S10D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01O10D00D00D),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&shadow1DProjLod_00m30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01f00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01f00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00u20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00R10B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00R10B00B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&trunc_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&trunc_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&trunc_10C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeAtomicCounters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeAtomicCounters),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00u10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&dot_20C20C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_DepthRangeParameters),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_DepthRangeParameters),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00f20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00L20B70D00D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise1_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00g30B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&shadow2DProj_00d30B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00d30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00d30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sign_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sign_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00a20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00a20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00o10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&refract_20C20C00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &textureProj_00M20B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01A10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01A10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00X30B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00X30B10D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp2_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp2_00B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01H20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00u10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01H20D00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01H20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01H20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00q10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00a20B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00a20B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01Q10D00D30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_00C00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureSize_00s00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01P10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01I20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(EXT_YUV_target)>(&texture_00N10B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::FRAGMENT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_PrimitiveID),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_PrimitiveIDGS),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01X10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01Y10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01X10D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00I30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00I30B10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::FRAGMENT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_Layer),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_LayerGS),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00d20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00d20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdx_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdx_30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdxExt_30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01V20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01V20D00D00E),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(NV_shader_framebuffer_fetch)>(
+        &BuiltInVariable::kgl_LastFragColor),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00t30B00B00B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_20E20E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&asin_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&asin_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01U20D00D00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&texture_00l30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&texture1DProjLod_00g10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&fwidth_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&fwidth_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(
+        &fwidthExt_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdy_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdy_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdyExt_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&shadow2DLod_00d20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture1DProj_00g10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThan_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThan_30E30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imulExtended_30D30D30D30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&imulExtended_30D30D30D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_70B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_70B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imulExtended_00D00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&imulExtended_00D00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00q10B70D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01F20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01F20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00S20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00S20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00Y20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00Y20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&faceforward_10C10C10C),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00u00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01P10D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&uintBitsToFloat_00E),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&uintBitsToFloat_00E),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdxFine_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01L00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01g00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_20D20D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_20D20D00D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mix_30B30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mix_30B30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00U10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01N10D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&tanh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&tanh_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_00y10D30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_00y10D30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&max_10C00C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_D0BD0B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00v10B70D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeUniformComponents),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxComputeUniformComponents),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01X10D00E),
+    Rule::Get<Spec::GLSL, 0, Shader::VERTEX, 0>(&shadow2DProjLod_00d30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01X10D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_30B30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&reflect_20C20C),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00h10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&memoryBarrierAtomicCounter_),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&memoryBarrierAtomicCounter_),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_00E00E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_00E00E00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01Z20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01Z20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01b20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01a20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00d20B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00d20B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01T20D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01T20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01g00D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&clamp_30C30C30C),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProj_00v20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_00B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_00B10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00I20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00I20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(EXT_YUV_target)>(&rgb_2_yuv_20B00H),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageStore_01B20D30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01B20D30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01P10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00T20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00T20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log2_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log2_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01D20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01D20D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_20E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_20E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01f00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01f00D00D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise2_30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01U20D00D00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01K00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_10D10D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_10D10D10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &texelFetch_00M10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00Y20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_F0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_F0B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00Y20B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00Y20B20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00S20B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00S20B20B20B20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01U20D00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_30E30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_30E30E30E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00R00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00R00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01f00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&acosh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&acosh_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01f00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01b20D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00L20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00L20B10D00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_20B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_20B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01U20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00J30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00J30B00B),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&subpassLoad_01i),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&subpassLoad_01k),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_90B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_90B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_30C30C00C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicAnd_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicAnd_00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00I10D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00I10D00D10D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00L10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicCounter_00G),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&atomicCounter_00G),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00m20B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise3_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_30D30D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_30D30D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&min_10C00C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_10D10D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_10D10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_10E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_10E00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00h10B00B00B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01V20D00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&texture2D_00I10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture2D_00I10B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&noise1_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00t10B00B00D),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjOffset_00O20B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&trunc_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&trunc_00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&length_10C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&length_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&length_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01R10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01H20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01H20D00E),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&subpassLoad_01j),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&dot_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&dot_00B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&tan_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&tan_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00T20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00T20B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGrad_00R30B10B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGrad_00R30B10B10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&exp2_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&exp2_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00X20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00X20B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00X30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00X30B10B10B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&matrixCompMult_A0BA0B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&matrixCompMult_A0BA0B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffsets_00v10B70D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00S20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00S20B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&round_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&round_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&round_30C),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&anyInvocation_00F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGrad_00x30B20B20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01D20D00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00o30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&smoothstep_00C00C10C),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&interpolateAtSample_00B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdx_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdx_20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdxExt_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00L20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00L20B),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&barrier_),
+    Rule::Get<Spec::GLSL, 400, Shader::COMPUTE, 0>(&barrier_),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01a20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00k30B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00L20B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00L20B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01S10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01S10D00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00S30B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00S30B20D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01D20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&normalize_10C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&unpackSnorm4x8_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&unpackSnorm4x8_00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01C20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01C20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01C20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01C20D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00l30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&normalize_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&normalize_10B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&asin_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&asin_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isnan_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isnan_20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&isnan_20C),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&fwidth_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&fwidth_00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(
+        &fwidthExt_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&dFdy_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&dFdy_10B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(&dFdyExt_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01P10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01P10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&max_30E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&max_30E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLod_00d20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00d20B00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureOffset_00q10B10D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_framebuffer_fetch)>(
+        &TableBase::m_gl_LastFragData),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(NV_shader_framebuffer_fetch)>(
+        &TableBase::m_gl_LastFragDataNV),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_10B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00g00B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&uintBitsToFloat_10E),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&uintBitsToFloat_10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00t30B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_70B70B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01I20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01M00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01M00D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureLod_00k30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01E20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00Y20B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00Y20B00B20D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&refract_00C00C00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&log2_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&log2_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&tanh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&tanh_10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01I20D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00h10B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01b20D30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00O20B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_LocalInvocationID),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_LocalInvocationID),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_00B00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_00B00B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00d10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00p10B00D00B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01f00D00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&clamp_10C10C10C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&outerProduct_20B10B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&outerProduct_20B10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00t10B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&isinf_20C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00e30B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00e30B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00J00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00J00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00Z20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&dot_10C10C),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGrad_00n30B10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01U20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01U20D00D00D),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DProjLodEXT_00I30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01N10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01N10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01b20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&step_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&step_00B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_shader_texture_lod)>(
+        &texture2DLodEXT_00I10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&texture_00K20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00K20B00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGradOffset_00n30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00J20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00J20B20B20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01V20D00D00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00U20B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00U20B10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&intBitsToFloat_10D),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&intBitsToFloat_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&min_20C20C),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00Y30B00B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00Y30B00B20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01h00D00E),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&texture3D_00J20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_texture_3D)>(&texture3D_00J20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(EXT_blend_func_extended)>(
+        &TableBase::m_gl_SecondaryFragDataEXT),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01X10D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&faceforward_20C20C20C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01O10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01X10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00n10B00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00X10B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00X10B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01L00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01L00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01G20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01G20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureOffset_00a20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00a20B10D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01X10D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_30E30E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_30E30E),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&texture2DProj_00I30B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&texture2DProj_00I30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00X10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01I20D00E),
+    Rule::Get<Spec::ESSL, 100, Shader::ALL, EXT_INDEX(EXT_shader_texture_lod)>(
+        &textureCubeGradEXT_00K20B20B20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_00B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00o00B00B00B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_30C30C30F),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_30C30C30C),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_WorkGroupID),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_WorkGroupID),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&degrees_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&degrees_00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01J20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01J20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01D20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicExchange_00D00D),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicExchange_00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00m20B00D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(EXT_geometry_shader)>(
+        &TableBase::m_gl_MaxGeometryAtomicCounters),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&textureOffset_00f30B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01a20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01a20D00E),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01a20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&matrixCompMult_60B60B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_00z10D00D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00t30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00t10B00B00B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&unpackSnorm2x16_00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&unpackSnorm2x16_00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&lessThan_30D30D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&lessThan_30D30D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&atan_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&atan_00B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00S20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notEqual_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notEqual_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01G20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01G20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&trunc_30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&trunc_30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&trunc_30C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&length_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&length_00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&length_00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01H20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01H20D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProj_00X30B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00X30B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01O10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01C20D00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&tan_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&tan_00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_20E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_20E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureLod_00x30B00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureSize_00j),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureSize_00n),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01F20D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00c),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &textureSizeExt_00c),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureSize_00b),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00b),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &textureSizeExt_00b),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&min_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&min_20B20B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureSize_00q),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureSize_00r),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureSize_00w),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureSize_00v),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_20E20E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_20E20E00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&TableBase::m_gl_MaxProgramTexelOffset),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxProgramTexelOffset),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureSize_00O),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01a20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01g00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&trunc_00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01a20D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00Q),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &textureSizeExt_00Q),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureSize_00P),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00P),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, EXT_INDEX(ANGLE_texture_multisample)>(
+        &textureSizeExt_00P),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01M00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01M00D00D),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&textureSize_00W),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &textureSizeExt_00W),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLod_00X20B00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00X20B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&smoothstep_00C00C00C),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterAnd_00G00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&faceforward_30B30B30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&faceforward_30B30B30B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&distance_20C20C),
+    Rule::Get<Spec::GLSL, 460, Shader::ALL, 0>(&atomicCounterAdd_00G00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01O10D30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00X10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00X10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ceil_00C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&ceil_00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&ceil_00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&distance_00B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&distance_00B00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetch_00O10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01N10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01N10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01C20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicExchange_01C20D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGrad_00s30B20B20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00I10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00I10B),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01C20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_30D30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_30D30D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_30E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_30E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGradOffset_00R10B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGradOffset_00R10B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&fwidth_30B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&fwidth_30B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(
+        &fwidthExt_30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureGrad_00K20B20B20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00K20B20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetch_00S20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00S20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&max_10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&max_10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00R30B10B10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00R30B10B10B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texelFetchOffset_00L20D00D10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00L20D00D10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&isnan_30C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_50B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_50B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThanEqual_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThanEqual_20D20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&asinh_00B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&asinh_00B),
+    Rule::Get<Spec::ESSL, 310, Shader::GEOMETRY_EXT, EXT_INDEX(EXT_geometry_shader)>(
+        &BuiltInVariable::kgl_PrimitiveIDIn),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00Z20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00Z20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureGrad_00p10B00B00B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjOffset_00v30B10D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&greaterThan_20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&greaterThan_20B20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_20D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_20D20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetchOffset_00g00D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01g00D00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01Q10D00D00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01O10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01O10D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&tanh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&tanh_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProj_00m30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&sin_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&sin_20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&smoothstep_00C00C30C),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureSize_00l00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLod_00o00B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01K00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01K00D00E),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00I10B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00I10B10D00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_00z10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_00z10D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxAtomicCounterBufferSize),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxAtomicCounterBufferSize),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureOffset_00J20B20D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureOffset_00J20B20D00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&lessThanEqual_20E20E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&lessThanEqual_20E20E),
+    Rule::Get<Spec::ESSL, 300, Shader::VERTEX, EXT_INDEX(ANGLE_base_vertex_base_instance)>(
+        &BuiltInVariable::kgl_BaseVertex),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00g00B00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00g30B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01Z20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldInsert_30E30E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldInsert_30E30E00D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_20E00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_20E00D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&uintBitsToFloat_20E),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&uintBitsToFloat_20E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&unpackUnorm4x8_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&unpackUnorm4x8_00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&mod_10B10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&mod_10B10B),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_LocalInvocationIndex),
+    Rule::Get<Spec::GLSL, 0, Shader::COMPUTE, 0>(&BuiltInVariable::kgl_LocalInvocationIndex),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01W10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01W10D00E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexImageUniforms),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexImageUniforms),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&equal_20D20D),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&equal_20D20D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxCombinedAtomicCounterBuffers),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&mix_10E10E10F),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00R10B00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00R10B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureSize_00Z00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureSize_00Z00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&bitfieldExtract_30D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&bitfieldExtract_30D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01J20D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01J20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageStore_01T20D00D30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&intBitsToFloat_00D),
+    Rule::Get<Spec::GLSL, 330, Shader::ALL, 0>(&intBitsToFloat_00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00m20B00B00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findLSB_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findLSB_00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texelFetch_00p10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00d10B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00d10B00B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&shadow2DProj_00d30B00B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&inversesqrt_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&inversesqrt_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&inversesqrt_10C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&abs_30D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&abs_30D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&transpose_D0B),
+    Rule::Get<Spec::GLSL, 120, Shader::ALL, 0>(&transpose_D0B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&abs_30C),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&textureProjGrad_00O30B10B10B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMax_01Z20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&imageLoad_01E20D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageLoad_01E20D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(EXT_YUV_target)>(&textureProj_00N20B00B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, 0>(&TableBase::m_gl_FragData),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&TableBase::m_gl_FragData),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdxCoarse_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&clamp_20E00E00E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&clamp_20E00E00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00d30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00d30B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexOutputVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexOutputVectors),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&shadow1D_00m20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureOffset_00u10B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&cosh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&cosh_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&sign_10C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01G20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_01G20D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sign_10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sign_10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&umulExtended_00E00E00E00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&umulExtended_00E00E00E00E),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAttribs),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&TableBase::m_gl_MaxVertexAttribs),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00a20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00a20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01T20D00D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01T20D00D00D),
+    Rule::Get<Spec::GLSL, 450, Shader::ALL, 0>(&imageAtomicExchange_01g00D00B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&ldexp_10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&ldexp_10B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00g30B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00Z20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00Z20B),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&degrees_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&degrees_10B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&texture_00K20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00K20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&sinh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&sinh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00m20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01C20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&notFunc_30F),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&notFunc_30F),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjLodOffset_00I20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00I20B00B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00K20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00K20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00R10B10D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00R10B10D),
+    Rule::Get<Spec::ESSL, 310, Shader::COMPUTE, 0>(&memoryBarrierShared_),
+    Rule::Get<Spec::GLSL, 430, Shader::COMPUTE, 0>(&memoryBarrierShared_),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&clamp_20B20B20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&clamp_20B20B20B),
+    Rule::Get<Spec::GLSL, 150, Shader::ALL, 0>(&texelFetch_00W20D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, EXT_INDEX(OES_texture_storage_multisample_2d_array)>(
+        &texelFetchExt_00W20D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLod_00g10B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&trunc_20C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&trunc_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&trunc_20B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&textureProjOffset_00I30B10D00B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&textureProjOffset_00I30B10D00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&max_00C00C),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&tan_10B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&tan_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&texture_00g00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureLodOffset_00L20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00L20B00B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureLodOffset_00u10B00B00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_00y10D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAnd_00y10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&isinf_20B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&isinf_20B),
+    Rule::Get<Spec::GLSL, 450, Shader::FRAGMENT, 0>(&dFdyCoarse_10B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGatherOffset_00X10B10D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00X10B10D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_10E10E),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_10E10E),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&memoryBarrierImage_),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&memoryBarrierImage_),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&round_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&round_10B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&round_10C),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjLodOffset_00m30B00B00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00g10B00B00B00D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00R30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00R30B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&shadow1DProj_00m30B),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00f30B00B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&fma_00B00B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01b20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01b20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGatherOffset_00v10B10D00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&atomicMax_00E00E),
+    Rule::Get<Spec::GLSL, 430, Shader::ALL, 0>(&atomicMax_00E00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01B20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicMin_01B20D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::FRAGMENT, 0>(&textureQueryLod_00t00B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00R30B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00R30B10D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProj_00X30B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProj_00X30B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_00D),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&findMSB_00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&findMSB_00E),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjOffset_00X20B10D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjOffset_00X20B10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicCompSwap_01X10D00D00D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&frexp_30C30D),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mix_10C10C10C),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&min_30D00D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&min_30D00D),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, EXT_INDEX(OES_EGL_image_external_essl3)>(
+        &texture_00M10B00B),
+    Rule::Get<Spec::ESSL, 300, Shader::FRAGMENT, 0>(&fwidth_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::FRAGMENT, 0>(&fwidth_20B),
+    Rule::Get<Spec::ESSL, 100, Shader::FRAGMENT, EXT_INDEX(OES_standard_derivatives)>(
+        &fwidthExt_20B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01S10D00D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01S10D00D00E),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&mod_30C00C),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01A10D00D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicAdd_01A10D00E),
+    Rule::Get<Spec::GLSL, 130, Shader::FRAGMENT, 0>(&texture_00o00B00B),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01H20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicOr_01H20D00D),
+    Rule::Get<Spec::ESSL, 0, Shader::ALL, 0>(&cos_20B),
+    Rule::Get<Spec::GLSL, 0, Shader::ALL, 0>(&cos_20B),
+    Rule::Get<Spec::ESSL, 310, Shader::ALL, 0>(&textureGather_00T20B),
+    Rule::Get<Spec::GLSL, 400, Shader::ALL, 0>(&textureGather_00T20B),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&textureProjGradOffset_00J30B20B20B20D),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&textureProjGradOffset_00J30B20B20B20D),
+    Rule::Get<Spec::ESSL, 300, Shader::ALL, 0>(&asinh_10B),
+    Rule::Get<Spec::GLSL, 130, Shader::ALL, 0>(&asinh_10B),
+    Rule::Get<Spec::GLSL, 140, Shader::ALL, 0>(&texelFetchOffset_00v10D10D),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01E20D00E),
+    Rule::Get<Spec::GLSL, 420, Shader::ALL, 0>(&imageAtomicXor_01E20D00D)};
 
+// Flat array of all mangled names.
+constexpr const char *kMangledNames[] = {"textureProj(00R30B00B",
+                                         "interpolateAtOffset(30B10B",
+                                         "textureProjOffset(00g10B00D",
+                                         "imageAtomicOr(00z10D00D",
+                                         "texture2DProj(00I20B",
+                                         "textureProjGradOffset(00v30B10B10B10D",
+                                         "texelFetch(00o00D00D",
+                                         "imageLoad(01g00D",
+                                         "imageLoad(01I20D",
+                                         "tanh(30B",
+                                         "imageAtomicCompSwap(01E20D00D00D",
+                                         "textureQueryLod(00m00B",
+                                         "imageAtomicCompSwap(01f00D00D00D",
+                                         "not(10F",
+                                         "findMSB(20E",
+                                         "lessThanEqual(30B30B",
+                                         "imageAtomicAdd(00z10D00E",
+                                         "textureLod(00t00B00B",
+                                         "textureProjGradOffset(00O30B10B10B10D",
+                                         "outerProduct(20B30B",
+                                         "imageAtomicOr(00z10D00E",
+                                         "imageAtomicAnd(01f00D00D",
+                                         "imageAtomicAnd(01f00D00E",
+                                         "imageSamples(01V",
+                                         "imageSamples(01U",
+                                         "imageSamples(01T",
+                                         "imageSamples(01S",
+                                         "mix(20B20B00B",
+                                         "imageSamples(01Q",
+                                         "textureLodOffset(00o00B00B00D",
+                                         "uintBitsToFloat(30E",
+                                         "imageAtomicExchange(01R10D00D00B",
+                                         "textureSize(00K00D",
+                                         "textureSize(00h00D",
+                                         "gl_MaxAtomicCounterBindings",
+                                         "texelFetchOffset(00q10D10D",
+                                         "greaterThanEqual(10E10E",
+                                         "texture(00d20B",
+                                         "atan(10B10B",
+                                         "clamp(30B30B30B",
+                                         "imageAtomicCompSwap(01a20D00E00E",
+                                         "imageAtomicCompSwap(01R10D00D00D00D",
+                                         "textureLodOffset(00a20B00B10D",
+                                         "imageStore(01K00D30B",
+                                         "greaterThanEqual(20B20B",
+                                         "imageLoad(01F20D",
+                                         "ceil(10C",
+                                         "imageAtomicCompSwap(01b20D00D00D",
+                                         "imageAtomicAnd(01A10D00D",
+                                         "imageAtomicAdd(01D20D00E",
+                                         "atomicAdd(00D00D",
+                                         "textureSize(00p00D",
+                                         "floatBitsToUint(20B",
+                                         "textureProjOffset(00t30B00D00B",
+                                         "imageAtomicOr(01Q10D00D00D",
+                                         "imageAtomicOr(01Q10D00D00E",
+                                         "mix(20D20D20F",
+                                         "degrees(20B",
+                                         "imageAtomicMin(01Y10D00D",
+                                         "imageAtomicAnd(01Z20D00D",
+                                         "imageAtomicCompSwap(01D20D00D00D",
+                                         "min(00C00C",
+                                         "imageAtomicMax(01S10D00D00E",
+                                         "imageAtomicXor(01R10D00D00E",
+                                         "imageAtomicXor(01Q10D00D00E",
+                                         "inversesqrt(00C",
+                                         "inversesqrt(00B",
+                                         "imageAtomicXor(01Q10D00D00D",
+                                         "texelFetchOffset(00J20D00D20D",
+                                         "textureProjGrad(00S30B20B20B",
+                                         "equal(10D10D",
+                                         "max(30D00D",
+                                         "groupMemoryBarrier(",
+                                         "imageAtomicOr(01N10D00D",
+                                         "imageAtomicOr(01N10D00E",
+                                         "imageAtomicExchange(01b20D00E",
+                                         "imageAtomicExchange(01b20D00D",
+                                         "step(20C20C",
+                                         "texelFetch(00I10D00D",
+                                         "mod(00C00C",
+                                         "transpose(E0B",
+                                         "imageAtomicMin(01R10D00D00E",
+                                         "imageAtomicMin(01R10D00D00D",
+                                         "textureGatherOffsets(00f20B00B70D",
+                                         "textureGather(00O20B",
+                                         "textureProjOffset(00Y30B20D00B",
+                                         "modf(10B10B",
+                                         "imageAtomicMax(01K00D00D",
+                                         "imageAtomicMax(01K00D00E",
+                                         "determinant(50B",
+                                         "imageAtomicCompSwap(01J20D00E00E",
+                                         "textureProj(00g10B00B",
+                                         "lessThan(20B20B",
+                                         "gl_MaxFragmentInputVectors",
+                                         "sign(20C",
+                                         "cosh(20B",
+                                         "sign(20D",
+                                         "atanh(00B",
+                                         "imageAtomicAnd(01V20D00D00E",
+                                         "imageAtomicAnd(01V20D00D00D",
+                                         "textureProj(00t10B",
+                                         "texture(00p20B00B",
+                                         "fma(10C10C10C",
+                                         "imageAtomicXor(01Y10D00D",
+                                         "imageAtomicXor(01Y10D00E",
+                                         "imageAtomicExchange(01N10D00D",
+                                         "imageAtomicAnd(01C20D00E",
+                                         "textureOffset(00d20B10D00B",
+                                         "textureOffset(00m20B00D",
+                                         "imageAtomicAnd(01C20D00D",
+                                         "lessThan(10E10E",
+                                         "imageAtomicCompSwap(01A10D00D00D",
+                                         "textureGrad(00X00B00B00B",
+                                         "textureProjLodOffset(00t30B00B00D",
+                                         "fma(30C30C30C",
+                                         "textureGrad(00v10B10B10B",
+                                         "textureProj(00N30B00B",
+                                         "step(00C00C",
+                                         "gl_MaxCombinedShaderOutputResources",
+                                         "texture(00I10B00B",
+                                         "texelFetch(00j00D",
+                                         "lessThan(20D20D",
+                                         "clamp(20C20C20C",
+                                         "imageAtomicXor(00z10D00E",
+                                         "all(10F",
+                                         "dFdyCoarse(00B",
+                                         "isinf(30B",
+                                         "textureGatherOffset(00a20B10D00D",
+                                         "textureGatherOffset(00I10B10D",
+                                         "textureProjOffset(00q30B10D",
+                                         "textureOffset(00L20B10D",
+                                         "lessThanEqual(30E30E",
+                                         "min(10E00E",
+                                         "imageAtomicXor(01a20D00E",
+                                         "imageAtomicXor(01a20D00D",
+                                         "textureProjOffset(00S30B20D",
+                                         "round(00C",
+                                         "round(00B",
+                                         "greaterThan(30D30D",
+                                         "texture(00U20B",
+                                         "imageAtomicCompSwap(01P10D00E00E",
+                                         "smoothstep(00C00C20C",
+                                         "texture2DRect(00O10B",
+                                         "imageAtomicAdd(01K00D00E",
+                                         "imageAtomicAdd(01K00D00D",
+                                         "noise2(20B",
+                                         "gl_MaxGeometryOutputVertices",
+                                         "step(20B20B",
+                                         "imageAtomicAnd(01b20D00E",
+                                         "findMSB(10E",
+                                         "findMSB(10D",
+                                         "interpolateAtOffset(00B10B",
+                                         "texture(00t00B",
+                                         "textureLodOffset(00S20B00B20D",
+                                         "textureQueryLod(00p00B",
+                                         "imageStore(00z10D30D",
+                                         "outerProduct(10B20B",
+                                         "fwidthFine(10B",
+                                         "cos(30B",
+                                         "unpackHalf2x16(00E",
+                                         "imageStore(01J20D30E",
+                                         "outerProduct(10B10B",
+                                         "imageAtomicOr(01M00D00D",
+                                         "gl_MaxComputeTextureImageUnits",
+                                         "imageAtomicMax(01Y10D00E",
+                                         "imageAtomicMax(01Y10D00D",
+                                         "sin(30B",
+                                         "imageAtomicAnd(01O10D00D",
+                                         "imageAtomicCompSwap(01Q10D00D00D00D",
+                                         "textureGather(00L20B00D",
+                                         "imageStore(01A10D30E",
+                                         "imageAtomicXor(01H20D00D",
+                                         "imageAtomicXor(01H20D00E",
+                                         "shadow1D(00m20B00B",
+                                         "max(10E10E",
+                                         "max(30B30B",
+                                         "clamp(10E10E10E",
+                                         "texture(00N10B",
+                                         "textureProjGrad(00t30B00B00B",
+                                         "imageAtomicOr(01E20D00D",
+                                         "imageAtomicOr(01E20D00E",
+                                         "texelFetchOffset(00a20D00D10D",
+                                         "imageLoad(01V20D00D",
+                                         "not(20F",
+                                         "imageAtomicExchange(01F20D00D",
+                                         "imageAtomicMax(01Q10D00D00D",
+                                         "imageAtomicMax(01Q10D00D00E",
+                                         "imageAtomicExchange(01F20D00B",
+                                         "imageStore(01L00D30D",
+                                         "outerProduct(20B20B",
+                                         "textureProjLodOffset(00R20B00B10D",
+                                         "textureOffset(00p10B00D",
+                                         "texture(00h20B",
+                                         "imageAtomicXor(01B20D00D",
+                                         "imageAtomicXor(01B20D00E",
+                                         "textureProjGrad(00J30B20B20B",
+                                         "imageAtomicOr(01R10D00D00E",
+                                         "imageAtomicOr(01R10D00D00D",
+                                         "textureLod(00X10B00B",
+                                         "gl_InvocationID",
+                                         "imageAtomicAnd(01R10D00D00D",
+                                         "imageAtomicAdd(01E20D00E",
+                                         "radians(10B",
+                                         "textureGatherOffset(00n10B00B10D",
+                                         "noise2(10B",
+                                         "textureQueryLod(00a10B",
+                                         "textureGather(00e20B00B",
+                                         "distance(10B10B",
+                                         "textureGrad(00Z20B20B20B",
+                                         "sign(00B",
+                                         "bitfieldReverse(00D",
+                                         "bitfieldReverse(00E",
+                                         "bitfieldExtract(30E00D00D",
+                                         "textureLod(00I10B00B",
+                                         "greaterThanEqual(10D10D",
+                                         "imageStore(01f00D30B",
+                                         "imageAtomicCompSwap(01I20D00E00E",
+                                         "degrees(30B",
+                                         "inversesqrt(30B",
+                                         "inversesqrt(30C",
+                                         "imageAtomicMin(01I20D00D",
+                                         "textureGather(00v20B00D",
+                                         "intBitsToFloat(20D",
+                                         "exp(20B",
+                                         "imageAtomicMax(01A10D00E",
+                                         "imageAtomicMax(01A10D00D",
+                                         "acosh(00B",
+                                         "log(10B",
+                                         "textureProjLodOffset(00S30B00B20D",
+                                         "textureGather(00L20B",
+                                         "textureProj(00n30B",
+                                         "textureQueryLod(00i00B",
+                                         "texture(00p20B",
+                                         "outerProduct(30B20B",
+                                         "texture(00S20B",
+                                         "atomicXor(00D00D",
+                                         "texelFetch(00Y20D00D",
+                                         "imageAtomicOr(01P10D00D",
+                                         "imageAtomicOr(01P10D00E",
+                                         "imageAtomicXor(01N10D00E",
+                                         "imageAtomicXor(01N10D00D",
+                                         "bitfieldExtract(10D00D00D",
+                                         "sign(30B",
+                                         "sign(30C",
+                                         "sign(30D",
+                                         "texture(00Y20B00B",
+                                         "dFdy(20B",
+                                         "textureProj(00Y30B",
+                                         "textureOffset(00X10B10D00B",
+                                         "memoryBarrierBuffer(",
+                                         "isinf(00B",
+                                         "isinf(00C",
+                                         "clamp(20D00D00D",
+                                         "texture2DProj(00I20B00B",
+                                         "mod(30B00B",
+                                         "imageAtomicAnd(01A10D00E",
+                                         "textureGatherOffsets(00O10B70D00D",
+                                         "textureGather(00f20B00B",
+                                         "textureProj(00m30B",
+                                         "greaterThan(20E20E",
+                                         "textureProjLod(00I30B00B",
+                                         "refract(00B00B00B",
+                                         "gl_MaxGeometryImageUniforms",
+                                         "imageAtomicMin(00y10D00D",
+                                         "imageAtomicMin(00y10D00E",
+                                         "imageAtomicMin(01X10D00D",
+                                         "imageAtomicMin(01X10D00E",
+                                         "textureSize(00e00D",
+                                         "texelFetch(00a20D00D",
+                                         "step(00C10C",
+                                         "frexp(30B30D",
+                                         "imageAtomicMin(01Y10D00E",
+                                         "texture(00t00B00B",
+                                         "min(30C00C",
+                                         "imageAtomicCompSwap(01X10D00E00E",
+                                         "texture(00I10B",
+                                         "gl_InstanceID",
+                                         "normalize(20B",
+                                         "normalize(20C",
+                                         "imageAtomicCompSwap(01H20D00D00D",
+                                         "inverse(F0B",
+                                         "imageLoad(01K00D",
+                                         "frexp(20C20D",
+                                         "atan(00B",
+                                         "textureGatherOffset(00R10B10D00D",
+                                         "imageAtomicMin(01h00D00E",
+                                         "imageAtomicMin(01h00D00D",
+                                         "greaterThan(30E30E",
+                                         "imageStore(01U20D00D30D",
+                                         "texelFetchOffset(00p10D00D00D",
+                                         "imageAtomicAnd(01J20D00D",
+                                         "imageAtomicAnd(01J20D00E",
+                                         "gl_DepthRange",
+                                         "imageAtomicMax(01S10D00D00D",
+                                         "imageAtomicCompSwap(01K00D00D00D",
+                                         "textureProj(00o30B",
+                                         "imageAtomicAdd(01I20D00E",
+                                         "bitfieldExtract(20D00D00D",
+                                         "texture(00L20B00B",
+                                         "imageAtomicOr(01L00D00E",
+                                         "imageAtomicOr(01L00D00D",
+                                         "mix(30D30D30F",
+                                         "imageAtomicExchange(01Z20D00B",
+                                         "imageAtomicExchange(01Z20D00E",
+                                         "imageAtomicExchange(01Z20D00D",
+                                         "imageAtomicExchange(01f00D00E",
+                                         "imageAtomicExchange(01f00D00D",
+                                         "imageLoad(01h00D",
+                                         "imageAtomicCompSwap(01E20D00E00E",
+                                         "textureProjOffset(00O30B10D",
+                                         "floor(10B",
+                                         "floor(10C",
+                                         "imageAtomicMax(01R10D00D00E",
+                                         "imageAtomicMax(01R10D00D00D",
+                                         "textureProjLodOffset(00o10B00B00D",
+                                         "textureGather(00x30B00D",
+                                         "interpolateAtSample(10B00D",
+                                         "imageAtomicMin(01F20D00E",
+                                         "imageAtomicMin(01F20D00D",
+                                         "outerProduct(10B30B",
+                                         "imageAtomicCompSwap(01O10D00E00E",
+                                         "cos(00B",
+                                         "imageAtomicXor(01F20D00E",
+                                         "frexp(00C00D",
+                                         "atomicCounterCompSwap(00G00E00E",
+                                         "textureOffset(00a20B10D00B",
+                                         "textureGather(00X10B",
+                                         "textureOffset(00R10B10D00B",
+                                         "textureGatherOffset(00d10B00B10D",
+                                         "gl_MaxFragmentImageUniforms",
+                                         "textureSize(00i00D",
+                                         "equal(20E20E",
+                                         "uaddCarry(00E00E00E",
+                                         "textureQueryLod(00T20B",
+                                         "textureCube(00K20B",
+                                         "imageAtomicMax(01U20D00D00E",
+                                         "imageAtomicMax(01U20D00D00D",
+                                         "matrixCompMult(90B90B",
+                                         "imageAtomicMin(01T20D00D00D",
+                                         "imageAtomicMin(01T20D00D00E",
+                                         "textureGradOffset(00p10B00B00B00D",
+                                         "textureProjLodOffset(00g30B00B00D",
+                                         "clamp(30E00E00E",
+                                         "asin(00B",
+                                         "textureProjOffset(00J30B20D00B",
+                                         "imageLoad(01W10D",
+                                         "texelFetch(00w00D",
+                                         "imageAtomicExchange(01b20D00B",
+                                         "notEqual(30E30E",
+                                         "lessThanEqual(10E10E",
+                                         "inversesqrt(20C",
+                                         "inversesqrt(20B",
+                                         "textureLod(00i20B00B",
+                                         "textureOffset(00u10B00D00B",
+                                         "reflect(00C00C",
+                                         "atomicAdd(00E00E",
+                                         "intBitsToFloat(30D",
+                                         "textureProjGradOffset(00v20B10B10B10D",
+                                         "textureGrad(00X10B10B10B",
+                                         "greaterThanEqual(30E30E",
+                                         "mix(20B20B20F",
+                                         "gl_MaxVertexAtomicCounters",
+                                         "mix(20B20B20B",
+                                         "any(10F",
+                                         "textureProjGradOffset(00d30B10B10B10D",
+                                         "imageLoad(01X10D",
+                                         "textureProjOffset(00I30B10D",
+                                         "imageAtomicExchange(01W10D00B",
+                                         "imageAtomicExchange(01W10D00E",
+                                         "imageAtomicExchange(01W10D00D",
+                                         "textureOffset(00X10B10D",
+                                         "imageAtomicXor(01K00D00E",
+                                         "texture(00R10B",
+                                         "imageAtomicAnd(01Z20D00E",
+                                         "imageStore(01M00D30E",
+                                         "radians(00B",
+                                         "imageStore(01Y10D30E",
+                                         "step(10B10B",
+                                         "gl_MaxDualSourceDrawBuffersEXT",
+                                         "imageAtomicAdd(01Y10D00D",
+                                         "imageAtomicAdd(01Y10D00E",
+                                         "bitfieldReverse(10E",
+                                         "bitfieldReverse(10D",
+                                         "imageStore(01g00D30D",
+                                         "textureProjGradOffset(00q20B10B10B10D",
+                                         "imageAtomicExchange(01S10D00D00E",
+                                         "atomicXor(00E00E",
+                                         "mix(00C00C00F",
+                                         "textureLodOffset(00g00B00B00D",
+                                         "greaterThan(30B30B",
+                                         "gl_MaxFragmentAtomicCounters",
+                                         "faceforward(20B20B20B",
+                                         "textureSize(00x00D",
+                                         "textureProj(00S30B00B",
+                                         "fma(20B20B20B",
+                                         "textureProjLod(00o10B00B",
+                                         "imageAtomicMin(01J20D00E",
+                                         "outerProduct(30B30B",
+                                         "exp(30B",
+                                         "bitCount(10E",
+                                         "bitCount(10D",
+                                         "log(00B",
+                                         "mix(00F00F00F",
+                                         "imageAtomicCompSwap(01M00D00D00D",
+                                         "imageAtomicAnd(01T20D00D00E",
+                                         "imageAtomicAnd(01T20D00D00D",
+                                         "subpassLoad(01l00D",
+                                         "imageStore(01N10D30B",
+                                         "acosh(30B",
+                                         "imageAtomicOr(01Y10D00E",
+                                         "imageAtomicOr(01Y10D00D",
+                                         "textureGradOffset(00X10B10B10B10D",
+                                         "texelFetchOffset(00X10D00D10D",
+                                         "packUnorm2x16(10B",
+                                         "texture(00h20B00B",
+                                         "umulExtended(20E20E20E20E",
+                                         "texture(00m20B00B",
+                                         "textureProjGradOffset(00g30B00B00B00D",
+                                         "textureProj(00o30B00B",
+                                         "textureCubeLod(00K20B00B",
+                                         "textureSize(00L00D",
+                                         "imageAtomicXor(01L00D00E",
+                                         "max(20E00E",
+                                         "textureProj(00S30B",
+                                         "dFdy(30B",
+                                         "imageAtomicMin(01W10D00D",
+                                         "isinf(10C",
+                                         "isinf(10B",
+                                         "textureGatherOffsets(00a20B70D",
+                                         "gl_MaxVertexTextureImageUnits",
+                                         "greaterThanEqual(30B30B",
+                                         "texture2DProjLodEXT(00I20B00B",
+                                         "gl_FrontFacing",
+                                         "imageStore(01C20D30D",
+                                         "textureProjOffset(00t10B00D00B",
+                                         "imageAtomicCompSwap(01Z20D00D00D",
+                                         "acos(10B",
+                                         "textureCube(00K20B00B",
+                                         "lessThan(10B10B",
+                                         "gl_MaxComputeAtomicCounterBuffers",
+                                         "textureSize(00f00D",
+                                         "imageLoad(01B20D",
+                                         "texelFetchOffset(00h10D00D00D",
+                                         "mod(20C00C",
+                                         "imageAtomicAnd(01g00D00D",
+                                         "gl_LastFragColorARM",
+                                         "lessThanEqual(20D20D",
+                                         "textureQueryLod(00k20B",
+                                         "textureProjLod(00Y30B00B",
+                                         "gl_SecondaryFragColorEXT",
+                                         "imageAtomicAnd(01U20D00D00D",
+                                         "imageAtomicAnd(01U20D00D00E",
+                                         "gl_BaseInstance",
+                                         "transpose(B0B",
+                                         "imageAtomicXor(01b20D00E",
+                                         "mix(20F20F20F",
+                                         "smoothstep(00B00B30B",
+                                         "imageAtomicExchange(01M00D00B",
+                                         "imageAtomicExchange(01F20D00E",
+                                         "imageAtomicExchange(01M00D00D",
+                                         "imageAtomicExchange(01M00D00E",
+                                         "imageAtomicCompSwap(01F20D00E00E",
+                                         "texelFetch(00N10D00D",
+                                         "textureSize(00a00D",
+                                         "imageAtomicXor(01T20D00D00D",
+                                         "textureProjOffset(00Y30B20D",
+                                         "textureOffset(00n20B10D",
+                                         "atan(30B",
+                                         "textureGatherOffsets(00R10B70D00D",
+                                         "imageAtomicMax(01b20D00D",
+                                         "ceil(10B",
+                                         "textureSize(00S00D",
+                                         "imageAtomicExchange(01S10D00D00B",
+                                         "atomicCounterDecrement(00G",
+                                         "ceil(30B",
+                                         "textureSize(00t00D",
+                                         "memoryBarrier(",
+                                         "texture(00f30B",
+                                         "imageSamples(01R",
+                                         "texelFetch(00R10D00D",
+                                         "sign(20B",
+                                         "smoothstep(30B30B30B",
+                                         "textureGrad(00R10B10B10B",
+                                         "min(00D00D",
+                                         "textureProj(00t10B00B",
+                                         "imageAtomicCompSwap(01W10D00E00E",
+                                         "imageAtomicAdd(01V20D00D00E",
+                                         "ldexp(20B20D",
+                                         "greaterThanEqual(30D30D",
+                                         "imageLoad(01D20D",
+                                         "findLSB(10E",
+                                         "texture(00Z20B00B",
+                                         "imageAtomicXor(01S10D00D00E",
+                                         "imageAtomicXor(01S10D00D00D",
+                                         "cos(10B",
+                                         "texelFetch(00v10D",
+                                         "texture(00e30B",
+                                         "imageStore(01W10D30B",
+                                         "textureSize(00T00D",
+                                         "imageAtomicAnd(01g00D00E",
+                                         "textureSize(00u00D",
+                                         "textureProjGradOffset(00Y30B20B20B20D",
+                                         "noise3(30B",
+                                         "textureGrad(00T20B20B20B",
+                                         "texture1DProj(00g10B00B",
+                                         "textureProjOffset(00d30B10D00B",
+                                         "textureGatherOffsets(00X10B70D",
+                                         "imageAtomicXor(01U20D00D00D",
+                                         "imageAtomicXor(01U20D00D00E",
+                                         "imageAtomicAdd(01h00D00D",
+                                         "imageAtomicAdd(01h00D00E",
+                                         "matrixCompMult(50B50B",
+                                         "equal(30B30B",
+                                         "imageAtomicExchange(01E20D00B",
+                                         "textureLod(00U20B00B",
+                                         "imageAtomicXor(01I20D00E",
+                                         "imageAtomicXor(01I20D00D",
+                                         "textureOffset(00h10B00D",
+                                         "textureLod(00p10B00B",
+                                         "max(20C20C",
+                                         "max(10B10B",
+                                         "gl_PointSize",
+                                         "imageAtomicCompSwap(01B20D00E00E",
+                                         "asin(10B",
+                                         "sinh(00B",
+                                         "imageAtomicAdd(01g00D00D",
+                                         "imageAtomicCompSwap(01h00D00E00E",
+                                         "textureOffset(00S20B20D",
+                                         "fma(20C20C20C",
+                                         "imageAtomicCompSwap(01N10D00D00D",
+                                         "textureProj(00R20B",
+                                         "greaterThan(10E10E",
+                                         "imageAtomicAnd(01M00D00E",
+                                         "imageAtomicAnd(01M00D00D",
+                                         "EmitVertex(",
+                                         "smoothstep(20B20B20B",
+                                         "textureSamples(00b",
+                                         "textureOffset(00J20B20D",
+                                         "texelFetch(00J20D00D",
+                                         "imageAtomicExchange(01V20D00D00E",
+                                         "imageAtomicExchange(01V20D00D00B",
+                                         "imageAtomicCompSwap(01Y10D00E00E",
+                                         "imageAtomicExchange(00y10D00B",
+                                         "imageAtomicExchange(00y10D00D",
+                                         "imageAtomicExchange(00y10D00E",
+                                         "gl_ViewID_OVR",
+                                         "radians(30B",
+                                         "fract(30B",
+                                         "imageAtomicAdd(01B20D00D",
+                                         "imageAtomicAdd(01B20D00E",
+                                         "imageAtomicMin(01H20D00E",
+                                         "uaddCarry(20E20E20E",
+                                         "textureProjGrad(00X30B10B10B",
+                                         "textureSamples(00P",
+                                         "textureProjOffset(00v20B10D",
+                                         "shadow2D(00d20B00B",
+                                         "texelFetchOffset(00o00D00D00D",
+                                         "textureSamples(00V",
+                                         "textureSamples(00W",
+                                         "textureProjGrad(00q30B10B10B",
+                                         "textureGatherOffset(00O10B10D",
+                                         "clamp(10D00D00D",
+                                         "gl_MaxComputeImageUniforms",
+                                         "textureLod(00L20B00B",
+                                         "imageAtomicExchange(01A10D00B",
+                                         "imageAtomicCompSwap(01V20D00D00D00D",
+                                         "imageAtomicExchange(01A10D00E",
+                                         "imageAtomicExchange(01A10D00D",
+                                         "imageAtomicXor(01b20D00D",
+                                         "texture(00n20B",
+                                         "ldexp(20C20D",
+                                         "clamp(00E00E00E",
+                                         "length(20B",
+                                         "ldexp(00B00D",
+                                         "imageAtomicExchange(01N10D00E",
+                                         "bitfieldInsert(00D00D00D00D",
+                                         "textureProjGrad(00Y30B20B20B",
+                                         "roundEven(30B",
+                                         "roundEven(30C",
+                                         "acosh(20B",
+                                         "atanh(10B",
+                                         "length(20C",
+                                         "clamp(10B10B10B",
+                                         "textureGatherOffset(00L20B10D00D",
+                                         "bitCount(00D",
+                                         "bitCount(00E",
+                                         "imageAtomicExchange(01N10D00B",
+                                         "floatBitsToInt(30B",
+                                         "max(20B00B",
+                                         "imageAtomicAdd(00z10D00D",
+                                         "texelFetchOffset(00Y20D00D20D",
+                                         "atomicExchange(00E00E",
+                                         "imageAtomicXor(01h00D00D",
+                                         "imageAtomicXor(01h00D00E",
+                                         "ldexp(30C30D",
+                                         "texture(00o00B",
+                                         "textureGatherOffsets(00X10B70D00D",
+                                         "lessThanEqual(20B20B",
+                                         "min(10B00B",
+                                         "textureQueryLod(00f10B",
+                                         "smoothstep(10C10C10C",
+                                         "textureGatherOffsets(00U20B70D",
+                                         "imageAtomicAnd(01L00D00D",
+                                         "imageAtomicAnd(01L00D00E",
+                                         "mix(30F30F30F",
+                                         "abs(20D",
+                                         "abs(20C",
+                                         "abs(20B",
+                                         "lessThanEqual(10B10B",
+                                         "imageAtomicOr(01f00D00E",
+                                         "imageAtomicOr(01f00D00D",
+                                         "imageAtomicOr(01a20D00D",
+                                         "mix(00B00B00B",
+                                         "mix(00B00B00F",
+                                         "textureGather(00s30B00D",
+                                         "textureProj(00I20B",
+                                         "imageAtomicExchange(01B20D00B",
+                                         "textureLodOffset(00p10B00B00D",
+                                         "gl_MaxVertexAtomicCounterBuffers",
+                                         "unpackDouble2x32(00C",
+                                         "acos(00B",
+                                         "textureGradOffset(00J20B20B20B20D",
+                                         "fma(00C00C00C",
+                                         "texture2DGradEXT(00I10B10B10B",
+                                         "imageAtomicCompSwap(01G20D00D00D",
+                                         "imageAtomicAnd(01I20D00D",
+                                         "texture2DProjGradEXT(00I30B10B10B",
+                                         "fma(30B30B30B",
+                                         "imageAtomicAdd(01L00D00D",
+                                         "texture(00i20B00B",
+                                         "gl_MaxComputeWorkGroupCount",
+                                         "clamp(20C00C00C",
+                                         "imageAtomicMax(01X10D00E",
+                                         "imageAtomicCompSwap(00y10D00E00E",
+                                         "mix(30E30E30F",
+                                         "imageAtomicMax(01b20D00E",
+                                         "imageAtomicMin(01G20D00D",
+                                         "imageAtomicMin(01G20D00E",
+                                         "textureGatherOffsets(00I10B70D",
+                                         "imageAtomicExchange(01S10D00D00D",
+                                         "atan(20B",
+                                         "imageAtomicCompSwap(01Z20D00E00E",
+                                         "interpolateAtSample(30B00D",
+                                         "dFdxCoarse(30B",
+                                         "texture(00M10B",
+                                         "min(10B10B",
+                                         "textureLodOffset(00h10B00B00D",
+                                         "EndStreamPrimitive(00D",
+                                         "pow(10B10B",
+                                         "texture(00Y20B",
+                                         "imageAtomicXor(01P10D00D",
+                                         "texture(00X10B00B",
+                                         "frexp(00B00D",
+                                         "texture2D(00I10B",
+                                         "imageLoad(01O10D",
+                                         "ceil(20C",
+                                         "ceil(20B",
+                                         "imageAtomicMin(01b20D00E",
+                                         "imageAtomicMin(01b20D00D",
+                                         "imageAtomicMax(01P10D00D",
+                                         "imageAtomicMax(01P10D00E",
+                                         "imageAtomicExchange(01P10D00B",
+                                         "textureProjOffset(00R20B10D",
+                                         "imageStore(01V20D00D30E",
+                                         "imageAtomicCompSwap(01T20D00D00E00E",
+                                         "subpassLoad(01m00D",
+                                         "textureOffset(00I10B10D",
+                                         "min(20B00B",
+                                         "reflect(00B00B",
+                                         "noise4(10B",
+                                         "sqrt(10C",
+                                         "sqrt(10B",
+                                         "imageAtomicXor(01Z20D00D",
+                                         "imageAtomicXor(01Z20D00E",
+                                         "clamp(20E20E20E",
+                                         "textureGradOffset(00g00B00B00B00D",
+                                         "textureGather(00q20B",
+                                         "noise3(00B",
+                                         "imageAtomicOr(01G20D00D",
+                                         "imageAtomicOr(01G20D00E",
+                                         "imageAtomicMin(01C20D00D",
+                                         "imageAtomicMin(01C20D00E",
+                                         "imageAtomicAnd(01F20D00E",
+                                         "textureProjLod(00d30B00B",
+                                         "imageStore(01a20D30D",
+                                         "imageLoad(01H20D",
+                                         "textureProjGradOffset(00I20B10B10B10D",
+                                         "interpolateAtSample(20B00D",
+                                         "reflect(10B10B",
+                                         "refract(10B10B00B",
+                                         "imageAtomicMax(01h00D00D",
+                                         "mix(20C20C20F",
+                                         "imageAtomicExchange(01X10D00D",
+                                         "imageAtomicExchange(01X10D00E",
+                                         "mix(20C20C20C",
+                                         "textureOffset(00v10B10D",
+                                         "imageAtomicMin(01P10D00D",
+                                         "sinh(30B",
+                                         "textureSize(00m00D",
+                                         "textureQueryLod(00e20B",
+                                         "asinh(20B",
+                                         "imageAtomicAdd(01C20D00D",
+                                         "imageAtomicCompSwap(01I20D00D00D",
+                                         "textureProj(00O20B",
+                                         "imageAtomicCompSwap(01M00D00E00E",
+                                         "frexp(10B10D",
+                                         "inverse(50B",
+                                         "dot(10B10B",
+                                         "imageAtomicExchange(01T20D00D00D",
+                                         "imageAtomicExchange(01T20D00D00E",
+                                         "noise2(00B",
+                                         "textureProjGradOffset(00o10B00B00B00D",
+                                         "radians(20B",
+                                         "atomicCompSwap(00E00E00E",
+                                         "textureGrad(00I00B00B00B",
+                                         "textureGrad(00Y20B20B20B",
+                                         "gl_MaxVertexUniformVectors",
+                                         "textureOffset(00o00B00D00B",
+                                         "ftransform(",
+                                         "textureProj(00X20B",
+                                         "textureProjOffset(00n30B10D",
+                                         "gl_MaxGeometryUniformComponents",
+                                         "greaterThanEqual(20E20E",
+                                         "textureProj(00M20B",
+                                         "texture3DProjLod(00J30B00B",
+                                         "isinf(30C",
+                                         "imageAtomicAdd(01S10D00D00D",
+                                         "mix(10D10D10F",
+                                         "textureProjGrad(00g10B00B00B",
+                                         "log(20B",
+                                         "imageAtomicMax(01D20D00E",
+                                         "imageAtomicMax(01D20D00D",
+                                         "textureOffset(00h10B00D00B",
+                                         "modf(30B30B",
+                                         "roundEven(20C",
+                                         "roundEven(20B",
+                                         "outerProduct(30B10B",
+                                         "textureProj(00J30B",
+                                         "imageAtomicOr(00y10D00D",
+                                         "imageAtomicOr(00y10D00E",
+                                         "imageAtomicOr(01F20D00E",
+                                         "imageAtomicOr(01F20D00D",
+                                         "textureLodOffset(00t00B00B00D",
+                                         "floatBitsToInt(20B",
+                                         "texelFetch(00U20D00D",
+                                         "max(00D00D",
+                                         "atomicMin(00E00E",
+                                         "imageAtomicMin(01Q10D00D00D",
+                                         "imageAtomicMin(01Q10D00D00E",
+                                         "textureGradOffset(00v10B10B10B10D",
+                                         "textureGrad(00n20B10B10B",
+                                         "imageLoad(01S10D00D",
+                                         "max(20E20E",
+                                         "imageAtomicCompSwap(01F20D00D00D",
+                                         "abs(10D",
+                                         "abs(10B",
+                                         "abs(10C",
+                                         "gl_FragDepthEXT",
+                                         "imageAtomicAdd(01V20D00D00D",
+                                         "modf(30C30C",
+                                         "imageAtomicExchange(01g00D00E",
+                                         "textureGrad(00i20B00B00B",
+                                         "textureProj(00g10B",
+                                         "equal(20B20B",
+                                         "textureProjLodOffset(00X20B00B10D",
+                                         "max(30C00C",
+                                         "imageAtomicMax(01W10D00D",
+                                         "textureGatherOffsets(00a20B70D00D",
+                                         "texture(00U20B00B",
+                                         "textureProj(00I30B",
+                                         "mix(00E00E00F",
+                                         "imageAtomicCompSwap(01h00D00D00D",
+                                         "mix(00D00D00F",
+                                         "textureProjOffset(00q20B10D",
+                                         "texture(00i20B",
+                                         "textureGradOffset(00a20B10B10B10D",
+                                         "smoothstep(00B00B20B",
+                                         "textureLod(00s30B00B",
+                                         "imageAtomicOr(01C20D00D",
+                                         "imageAtomicOr(01C20D00E",
+                                         "imageAtomicXor(01g00D00E",
+                                         "notEqual(30B30B",
+                                         "imageAtomicCompSwap(01W10D00D00D",
+                                         "textureGatherOffset(00f20B00B10D",
+                                         "imageLoad(01T20D00D",
+                                         "imageSize(00y",
+                                         "imageAtomicMin(01W10D00E",
+                                         "imageSize(00z",
+                                         "mod(10C10C",
+                                         "imageAtomicXor(01g00D00D",
+                                         "faceforward(00C00C00C",
+                                         "textureGrad(00a20B10B10B",
+                                         "imageAtomicXor(01R10D00D00D",
+                                         "imageAtomicXor(01T20D00D00E",
+                                         "dFdxCoarse(00B",
+                                         "imageAtomicMin(01a20D00D",
+                                         "texture(00J20B00B",
+                                         "refract(20B20B00B",
+                                         "ceil(30C",
+                                         "gl_MaxGeometryOutputComponents",
+                                         "noise1(30B",
+                                         "log2(30B",
+                                         "textureProjGrad(00d30B10B10B",
+                                         "mod(20C20C",
+                                         "fract(30C",
+                                         "texelFetch(00t00D00D",
+                                         "imageAtomicXor(01L00D00D",
+                                         "max(30E30E",
+                                         "gl_MaxFragmentAtomicCounterBuffers",
+                                         "gl_in",
+                                         "noise4(00B",
+                                         "distance(10C10C",
+                                         "textureProjLodOffset(00J30B00B20D",
+                                         "imageAtomicMax(01H20D00E",
+                                         "imageAtomicMax(01H20D00D",
+                                         "imageStore(01h00D30E",
+                                         "textureGatherOffsets(00d10B00B70D",
+                                         "texelFetch(00c20D00D",
+                                         "sqrt(00B",
+                                         "sqrt(00C",
+                                         "textureProjLod(00R30B00B",
+                                         "noise3(10B",
+                                         "texelFetch(00q10D",
+                                         "imageAtomicAnd(01F20D00D",
+                                         "textureLod(00m20B00B",
+                                         "textureProjOffset(00m30B00D00B",
+                                         "textureProjGrad(00v30B10B10B",
+                                         "clamp(20D20D20D",
+                                         "imageAtomicMin(01P10D00E",
+                                         "imageAtomicAdd(01C20D00E",
+                                         "clamp(00C00C00C",
+                                         "imageAtomicCompSwap(01b20D00E00E",
+                                         "max(10E00E",
+                                         "textureGrad(00U20B10B10B",
+                                         "imageAtomicCompSwap(01B20D00D00D",
+                                         "imageLoad(00z10D",
+                                         "clamp(30C00C00C",
+                                         "sinh(20B",
+                                         "matrixCompMult(E0BE0B",
+                                         "fwidthFine(00B",
+                                         "gl_PerVertex",
+                                         "textureGradOffset(00m20B00B00B00D",
+                                         "textureQueryLevels(00p",
+                                         "gl_WorkGroupSize",
+                                         "asinh(30B",
+                                         "cross(20C20C",
+                                         "textureGather(00a20B",
+                                         "textureProjGradOffset(00O20B10B10B10D",
+                                         "pow(30B30B",
+                                         "imageAtomicCompSwap(01G20D00E00E",
+                                         "smoothstep(10B10B10B",
+                                         "textureProj(00O30B",
+                                         "imageAtomicAdd(01Q10D00D00E",
+                                         "textureQueryLod(00R10B",
+                                         "imageAtomicCompSwap(01T20D00D00D00D",
+                                         "imageAtomicAdd(01R10D00D00D",
+                                         "imageAtomicAdd(01R10D00D00E",
+                                         "imageAtomicExchange(01E20D00D",
+                                         "imageAtomicExchange(01E20D00E",
+                                         "isnan(00B",
+                                         "isnan(00C",
+                                         "imulExtended(10D10D10D10D",
+                                         "textureProjGrad(00o10B00B00B",
+                                         "refract(10C10C00B",
+                                         "min(00E00E",
+                                         "texture2DProj(00I30B",
+                                         "textureGradOffset(00I10B10B10B10D",
+                                         "textureLodOffset(00J20B00B20D",
+                                         "notEqual(20B20B",
+                                         "atomicCompSwap(00D00D00D",
+                                         "imageAtomicOr(01W10D00E",
+                                         "imageAtomicOr(01W10D00D",
+                                         "textureOffset(00i20B00D",
+                                         "dFdyFine(00B",
+                                         "textureLod(00a20B00B",
+                                         "textureProj(00N30B",
+                                         "refract(30C30C00B",
+                                         "equal(30D30D",
+                                         "packSnorm2x16(10B",
+                                         "floatBitsToUint(30B",
+                                         "imageLoad(00y10D",
+                                         "textureOffset(00R10B10D",
+                                         "textureProjGrad(00q20B10B10B",
+                                         "textureProjGradOffset(00R20B10B10B10D",
+                                         "ldexp(30B30D",
+                                         "max(30B00B",
+                                         "imageAtomicAdd(01Q10D00D00D",
+                                         "atomicCounterOr(00G00E",
+                                         "step(30B30B",
+                                         "imageAtomicOr(01T20D00D00D",
+                                         "imageAtomicOr(01T20D00D00E",
+                                         "textureProj(00I30B00B",
+                                         "imageAtomicExchange(01D20D00E",
+                                         "textureOffset(00g00B00D00B",
+                                         "imageAtomicExchange(01D20D00B",
+                                         "imageAtomicMin(01g00D00E",
+                                         "abs(00D",
+                                         "abs(00C",
+                                         "abs(00B",
+                                         "textureLod(00R10B00B",
+                                         "dFdxCoarse(10B",
+                                         "texture1D(00g00B",
+                                         "frexp(10C10D",
+                                         "imageAtomicMax(01B20D00D",
+                                         "imageAtomicAdd(01g00D00E",
+                                         "texture2DLod(00I10B00B",
+                                         "textureProjGradOffset(00X20B10B10B10D",
+                                         "round(20C",
+                                         "EndPrimitive(",
+                                         "step(00B30B",
+                                         "round(20B",
+                                         "equal(30E30E",
+                                         "imageAtomicCompSwap(01R10D00D00E00E",
+                                         "step(00C20C",
+                                         "dot(00C00C",
+                                         "max(30C30C",
+                                         "atomicOr(00D00D",
+                                         "texture2DProj(00M20B",
+                                         "notEqual(10D10D",
+                                         "textureSize(00V",
+                                         "imageAtomicAnd(01h00D00D",
+                                         "min(20C00C",
+                                         "imageAtomicAdd(01G20D00E",
+                                         "imageAtomicAdd(01G20D00D",
+                                         "findLSB(30D",
+                                         "findLSB(30E",
+                                         "textureProj(00X20B00B",
+                                         "shadow2D(00d20B",
+                                         "imageAtomicAdd(01N10D00E",
+                                         "imageAtomicAdd(01N10D00D",
+                                         "textureGatherOffset(00U20B10D",
+                                         "faceforward(10B10B10B",
+                                         "imageAtomicAnd(01h00D00E",
+                                         "min(10D00D",
+                                         "imageAtomicOr(01B20D00E",
+                                         "imageAtomicOr(01B20D00D",
+                                         "EmitStreamVertex(00D",
+                                         "imageAtomicCompSwap(01J20D00D00D",
+                                         "all(20F",
+                                         "imageSize(01J",
+                                         "imageSize(01K",
+                                         "imageSize(01H",
+                                         "imageSize(01I",
+                                         "packHalf2x16(10B",
+                                         "textureProj(00I20B00B",
+                                         "imageSize(01L",
+                                         "imageSize(01M",
+                                         "imageSize(01B",
+                                         "imageSize(01C",
+                                         "imageSize(01A",
+                                         "imageSize(01F",
+                                         "imageSize(01G",
+                                         "imageSize(01D",
+                                         "imageSize(01E",
+                                         "imageSize(01Z",
+                                         "imageAtomicExchange(01L00D00B",
+                                         "imageAtomicMax(01Z20D00E",
+                                         "texelFetch(00X10D00D",
+                                         "notEqual(30F30F",
+                                         "imageSize(01R",
+                                         "imageSize(01S",
+                                         "imageSize(01P",
+                                         "imageSize(01Q",
+                                         "imageSize(01V",
+                                         "textureQueryLod(00g00B",
+                                         "imageSize(01T",
+                                         "imageSize(01U",
+                                         "imageSize(01h",
+                                         "fract(20C",
+                                         "fract(20B",
+                                         "textureGatherOffset(00X10B10D",
+                                         "imageSize(01c",
+                                         "imageSize(01a",
+                                         "imageSize(01f",
+                                         "texture2DProjGradEXT(00I20B10B10B",
+                                         "imageSize(01d",
+                                         "textureLod(00S20B00B",
+                                         "step(30C30C",
+                                         "imageAtomicMin(01J20D00D",
+                                         "gl_FragDepth",
+                                         "textureGather(00x30B",
+                                         "mix(30B30B30F",
+                                         "mix(30B30B30B",
+                                         "textureGather(00Z20B00D",
+                                         "noise4(30B",
+                                         "sqrt(30C",
+                                         "sqrt(30B",
+                                         "imageStore(01E20D30B",
+                                         "exp(00B",
+                                         "max(30D30D",
+                                         "gl_MaxGeometryTextureImageUnits",
+                                         "interpolateAtCentroid(10B",
+                                         "texture(00q10B",
+                                         "textureSize(00M00D",
+                                         "textureSamples(00c",
+                                         "angle_BaseInstance",
+                                         "mix(10F10F10F",
+                                         "textureGradOffset(00U20B10B10B10D",
+                                         "gl_Position",
+                                         "textureGradOffset(00O10B10B10B10D",
+                                         "textureProj(00M30B",
+                                         "textureGradOffset(00L20B10B10B10D",
+                                         "imageAtomicExchange(01V20D00D00D",
+                                         "imageAtomicExchange(01J20D00B",
+                                         "imageAtomicExchange(01J20D00E",
+                                         "imageAtomicExchange(01J20D00D",
+                                         "textureQueryLod(00l20B",
+                                         "imageAtomicOr(01M00D00E",
+                                         "dot(20B20B",
+                                         "textureProjGrad(00v20B10B10B",
+                                         "textureProjLod(00S30B00B",
+                                         "textureProjGrad(00R20B10B10B",
+                                         "imageAtomicMax(00z10D00E",
+                                         "imageAtomicMax(00z10D00D",
+                                         "normalize(30C",
+                                         "normalize(30B",
+                                         "textureOffset(00O10B10D",
+                                         "textureProjGrad(00I20B10B10B",
+                                         "textureGather(00e20B",
+                                         "imageAtomicMax(01V20D00D00E",
+                                         "texture2D(00M10B",
+                                         "imageAtomicAdd(01a20D00E",
+                                         "fwidthFine(30B",
+                                         "textureGather(00K20B00D",
+                                         "textureCubeLodEXT(00K20B00B",
+                                         "textureGather(00T20B00D",
+                                         "textureProj(00N20B",
+                                         "textureQueryLod(00I10B",
+                                         "imageAtomicCompSwap(01A10D00E00E",
+                                         "dFdyFine(10B",
+                                         "modf(10C10C",
+                                         "imageAtomicMax(01E20D00D",
+                                         "imageAtomicMax(01E20D00E",
+                                         "textureProjLodOffset(00X30B00B10D",
+                                         "textureProjLod(00m30B00B",
+                                         "textureProjOffset(00g30B00D00B",
+                                         "texelFetchOffset(00U20D00D10D",
+                                         "imageAtomicCompSwap(00z10D00E00E",
+                                         "imageAtomicMin(01D20D00E",
+                                         "textureProjGradOffset(00q30B10B10B10D",
+                                         "textureGradOffset(00d20B10B10B10D",
+                                         "fwidthCoarse(20B",
+                                         "textureProjOffset(00d30B10D",
+                                         "equal(20F20F",
+                                         "",
+                                         "mix(20C20C00C",
+                                         "usubBorrow(10E10E10E",
+                                         "imageStore(01S10D00D30E",
+                                         "equal(10B10B",
+                                         "imageAtomicExchange(01Q10D00D00D",
+                                         "imageAtomicExchange(01Q10D00D00E",
+                                         "imageAtomicExchange(01Q10D00D00B",
+                                         "textureLodOffset(00U20B00B10D",
+                                         "isnan(10C",
+                                         "isnan(10B",
+                                         "imageAtomicMin(01H20D00D",
+                                         "imageAtomicXor(01A10D00D",
+                                         "imageAtomicXor(01A10D00E",
+                                         "imageAtomicCompSwap(01C20D00D00D",
+                                         "textureGrad(00R00B00B00B",
+                                         "imageAtomicXor(01W10D00D",
+                                         "imageAtomicXor(01W10D00E",
+                                         "atomicMin(00D00D",
+                                         "textureSize(00X00D",
+                                         "greaterThan(10B10B",
+                                         "mix(00C00C00C",
+                                         "clamp(30D00D00D",
+                                         "mix(20E20E20F",
+                                         "floatBitsToInt(10B",
+                                         "textureProjOffset(00R30B10D00B",
+                                         "textureGather(00U20B00D",
+                                         "floatBitsToInt(00B",
+                                         "imageLoad(01a20D",
+                                         "floatBitsToUint(00B",
+                                         "min(30C30C",
+                                         "textureSamples(00Q",
+                                         "textureGradOffset(00i20B00B00B00D",
+                                         "imageAtomicXor(00z10D00D",
+                                         "texture2DRectProj(00O20B",
+                                         "modf(20C20C",
+                                         "tan(20B",
+                                         "floor(00C",
+                                         "floor(00B",
+                                         "imageAtomicMax(01O10D00E",
+                                         "imageAtomicMax(01O10D00D",
+                                         "mod(30C30C",
+                                         "gl_DrawID",
+                                         "textureOffset(00t00B00D",
+                                         "texture3DLod(00J20B00B",
+                                         "texture(00R10B00B",
+                                         "modf(00B00B",
+                                         "notEqual(20D20D",
+                                         "imageAtomicExchange(01R10D00D00E",
+                                         "imageAtomicExchange(01R10D00D00D",
+                                         "ldexp(10C10D",
+                                         "imageAtomicXor(00y10D00E",
+                                         "imageAtomicXor(00y10D00D",
+                                         "determinant(A0B",
+                                         "textureLodOffset(00i20B00B00D",
+                                         "imageStore(01D20D30E",
+                                         "shadow1DLod(00m20B00B",
+                                         "imageAtomicOr(01I20D00E",
+                                         "distance(00C00C",
+                                         "isnan(30B",
+                                         "textureProjOffset(00o30B00D",
+                                         "lessThanEqual(30D30D",
+                                         "textureProj(00M30B00B",
+                                         "texture2DProj(00M30B",
+                                         "atomicCounterMax(00G00E",
+                                         "atomicCounterExchange(00G00E",
+                                         "textureGrad(00I10B10B10B",
+                                         "step(00B20B",
+                                         "texture2DProjLod(00I20B00B",
+                                         "step(00C30C",
+                                         "yuv_2_rgb(20B00H",
+                                         "texelFetch(00b10D00D",
+                                         "textureProj(00J30B00B",
+                                         "textureGather(00R10B",
+                                         "imageAtomicCompSwap(01K00D00E00E",
+                                         "imageAtomicOr(01V20D00D00D",
+                                         "imageAtomicOr(01V20D00D00E",
+                                         "imageAtomicExchange(01P10D00D",
+                                         "imageLoad(01L00D",
+                                         "min(10D10D",
+                                         "all(30F",
+                                         "imageAtomicExchange(01P10D00E",
+                                         "imageAtomicMax(01a20D00D",
+                                         "imageAtomicAnd(01S10D00D00E",
+                                         "imageAtomicAnd(01S10D00D00D",
+                                         "angle_BaseVertex",
+                                         "bitfieldReverse(20D",
+                                         "bitfieldReverse(20E",
+                                         "imageAtomicExchange(01I20D00D",
+                                         "imageAtomicExchange(01I20D00E",
+                                         "imageAtomicExchange(01I20D00B",
+                                         "gl_MaxGeometryInputComponents",
+                                         "texture(00u20B",
+                                         "textureGather(00v20B",
+                                         "fract(10B",
+                                         "fract(10C",
+                                         "textureGatherOffset(00O10B10D00D",
+                                         "textureQueryLod(00K20B",
+                                         "textureLodOffset(00I10B00B10D",
+                                         "imageAtomicCompSwap(01S10D00D00E00E",
+                                         "noise4(20B",
+                                         "textureOffset(00U20B10D",
+                                         "min(30B00B",
+                                         "imageAtomicMax(00y10D00D",
+                                         "imageAtomicMax(00y10D00E",
+                                         "atomicAnd(00D00D",
+                                         "gl_FragColor",
+                                         "exp(10B",
+                                         "bitCount(30E",
+                                         "bitCount(30D",
+                                         "unpackUnorm2x16(00E",
+                                         "sqrt(20B",
+                                         "sqrt(20C",
+                                         "textureGrad(00L20B10B10B",
+                                         "interpolateAtCentroid(00B",
+                                         "textureSize(00o00D",
+                                         "gl_MaxImageUnits",
+                                         "textureProjGrad(00o30B00B00B",
+                                         "packUnorm4x8(30B",
+                                         "texelFetch(00P10D00D",
+                                         "texture(00O10B",
+                                         "imageAtomicMin(01M00D00D",
+                                         "imageAtomicMin(01M00D00E",
+                                         "texture(00e30B00B",
+                                         "imageAtomicMin(01O10D00E",
+                                         "imageAtomicMin(01O10D00D",
+                                         "imageAtomicExchange(01B20D00E",
+                                         "imageAtomicExchange(01B20D00D",
+                                         "gl_FragCoord",
+                                         "imageAtomicMax(01X10D00D",
+                                         "textureGrad(00u10B00B00B",
+                                         "fwidthFine(20B",
+                                         "textureQueryLod(00o00B",
+                                         "imageAtomicAnd(01E20D00E",
+                                         "imageAtomicAnd(01E20D00D",
+                                         "normalize(00B",
+                                         "normalize(00C",
+                                         "clamp(10C00C00C",
+                                         "imageAtomicCompSwap(01f00D00E00E",
+                                         "imageAtomicOr(01A10D00E",
+                                         "imageAtomicOr(01A10D00D",
+                                         "imageAtomicOr(01K00D00D",
+                                         "imageAtomicOr(01K00D00E",
+                                         "atomicMax(00D00D",
+                                         "textureProjGrad(00m30B00B00B",
+                                         "imageAtomicAnd(01R10D00D00E",
+                                         "floatBitsToUint(10B",
+                                         "textureLod(00J20B00B",
+                                         "imageAtomicExchange(01D20D00D",
+                                         "textureGrad(00O10B10B10B",
+                                         "dFdyFine(20B",
+                                         "textureSize(00I00D",
+                                         "gl_MaxComputeWorkGroupSize",
+                                         "texelFetchOffset(00R10D00D10D",
+                                         "dFdxFine(10B",
+                                         "imageAtomicAnd(01K00D00E",
+                                         "imageAtomicAnd(01K00D00D",
+                                         "textureLodOffset(00X10B00B10D",
+                                         "texture(00T20B00B",
+                                         "textureGatherOffsets(00n10B00B70D",
+                                         "imageAtomicExchange(01K00D00D",
+                                         "imageAtomicCompSwap(00y10D00D00D",
+                                         "log(30B",
+                                         "notEqual(20F20F",
+                                         "allInvocationsEqual(00F",
+                                         "imageStore(01G20D30E",
+                                         "dFdyCoarse(30B",
+                                         "textureProjLod(00R20B00B",
+                                         "notEqual(30D30D",
+                                         "fwidthCoarse(30B",
+                                         "textureProjOffset(00I20B10D",
+                                         "imageStore(01X10D30D",
+                                         "textureQueryLevels(00l",
+                                         "textureQueryLevels(00m",
+                                         "textureQueryLevels(00o",
+                                         "textureQueryLevels(00h",
+                                         "textureQueryLevels(00i",
+                                         "textureQueryLevels(00k",
+                                         "textureQueryLevels(00d",
+                                         "textureQueryLevels(00e",
+                                         "textureQueryLevels(00f",
+                                         "textureQueryLevels(00g",
+                                         "gl_MaxDrawBuffers",
+                                         "textureQueryLevels(00a",
+                                         "atomicCounterMin(00G00E",
+                                         "textureGradOffset(00u10B00B00B00D",
+                                         "textureQueryLevels(00x",
+                                         "textureQueryLevels(00t",
+                                         "textureQueryLevels(00u",
+                                         "imulExtended(20D20D20D20D",
+                                         "any(30F",
+                                         "distance(30B30B",
+                                         "textureQueryLevels(00s",
+                                         "textureQueryLevels(00L",
+                                         "textureQueryLevels(00I",
+                                         "textureQueryLevels(00J",
+                                         "textureQueryLevels(00K",
+                                         "imageAtomicExchange(01L00D00D",
+                                         "imageAtomicAnd(01W10D00D",
+                                         "imageAtomicAnd(01W10D00E",
+                                         "texture3D(00J20B00B",
+                                         "texture1DLod(00g00B00B",
+                                         "textureQueryLevels(00X",
+                                         "textureQueryLevels(00Y",
+                                         "textureQueryLevels(00Z",
+                                         "dot(30B30B",
+                                         "textureQueryLevels(00T",
+                                         "textureQueryLevels(00U",
+                                         "textureQueryLevels(00R",
+                                         "textureQueryLevels(00S",
+                                         "gl_MaxTextureImageUnits",
+                                         "usubBorrow(20E20E20E",
+                                         "textureProj(00t30B00B",
+                                         "shadow1DProj(00m30B00B",
+                                         "clamp(30B00B00B",
+                                         "texture2DRectProj(00O30B",
+                                         "imageAtomicMax(01B20D00E",
+                                         "max(10D00D",
+                                         "textureGradOffset(00n20B10B10B10D",
+                                         "clamp(00D00D00D",
+                                         "floor(30B",
+                                         "floor(30C",
+                                         "imageStore(01P10D30E",
+                                         "textureProjGradOffset(00S30B20B20B20D",
+                                         "reflect(30C30C",
+                                         "gl_PointCoord",
+                                         "imageAtomicOr(01D20D00E",
+                                         "textureGatherOffset(00v10B10D",
+                                         "imageAtomicOr(01D20D00D",
+                                         "packDouble2x32(10E",
+                                         "clamp(10B00B00B",
+                                         "imageStore(01F20D30D",
+                                         "texelFetchOffset(00S20D00D20D",
+                                         "lessThan(10D10D",
+                                         "textureSize(00g00D",
+                                         "textureGatherOffset(00U20B10D00D",
+                                         "textureGatherOffset(00q10B10D00D",
+                                         "textureGather(00I10B00D",
+                                         "texture1DProjLod(00g30B00B",
+                                         "texelFetch(00V10D00D",
+                                         "imageAtomicExchange(01h00D00E",
+                                         "imageAtomicExchange(01h00D00D",
+                                         "atan(30B30B",
+                                         "imageAtomicExchange(01h00D00B",
+                                         "textureGatherOffsets(00R10B70D",
+                                         "imageAtomicMax(01a20D00E",
+                                         "textureProjLod(00g30B00B",
+                                         "max(00B00B",
+                                         "imageAtomicOr(01J20D00E",
+                                         "imageAtomicOr(01J20D00D",
+                                         "imageAtomicMax(01F20D00E",
+                                         "imageAtomicMax(01F20D00D",
+                                         "exp2(20B",
+                                         "smoothstep(30C30C30C",
+                                         "imageAtomicExchange(00z10D00B",
+                                         "imageAtomicExchange(00z10D00E",
+                                         "imageAtomicExchange(00z10D00D",
+                                         "textureProj(00q20B",
+                                         "textureProjLod(00t10B00B",
+                                         "imageAtomicExchange(01K00D00E",
+                                         "imageAtomicExchange(01K00D00B",
+                                         "gl_MaxCombinedTextureImageUnits",
+                                         "textureSize(00k00D",
+                                         "reflect(20B20B",
+                                         "imageAtomicXor(01V20D00D00E",
+                                         "imageAtomicXor(01V20D00D00D",
+                                         "equal(10F10F",
+                                         "imageLoad(01f00D",
+                                         "acos(30B",
+                                         "dFdx(10B",
+                                         "bitfieldReverse(30E",
+                                         "bitfieldReverse(30D",
+                                         "texture1DProj(00g30B",
+                                         "fract(00C",
+                                         "fract(00B",
+                                         "min(30E00E",
+                                         "gl_MinProgramTexelOffset",
+                                         "interpolateAtOffset(20B10B",
+                                         "gl_MaxGeometryTotalOutputComponents",
+                                         "reflect(30B30B",
+                                         "textureGatherOffsets(00I10B70D00D",
+                                         "interpolateAtCentroid(30B",
+                                         "textureGather(00s30B",
+                                         "imageAtomicXor(01X10D00E",
+                                         "imageAtomicXor(01X10D00D",
+                                         "imageStore(01Z20D30B",
+                                         "texture1D(00g00B00B",
+                                         "pow(00B00B",
+                                         "mod(00B00B",
+                                         "faceforward(30C30C30C",
+                                         "roundEven(10B",
+                                         "roundEven(10C",
+                                         "atanh(30B",
+                                         "textureLod(00K20B00B",
+                                         "bitCount(20D",
+                                         "bitCount(20E",
+                                         "texelFetch(00L20D00D",
+                                         "dFdxFine(00B",
+                                         "distance(20B20B",
+                                         "textureGradOffset(00q10B10B10B10D",
+                                         "uaddCarry(30E30E30E",
+                                         "textureSize(00U00D",
+                                         "textureProjOffset(00o10B00D00B",
+                                         "gl_MaxCombinedImageUniforms",
+                                         "atomicCounterXor(00G00E",
+                                         "imageAtomicOr(01g00D00D",
+                                         "imageAtomicOr(01g00D00E",
+                                         "gl_GlobalInvocationID",
+                                         "gl_VertexID",
+                                         "imageAtomicMin(01L00D00E",
+                                         "smoothstep(20C20C20C",
+                                         "imageAtomicCompSwap(01U20D00D00D00D",
+                                         "atomicOr(00E00E",
+                                         "imageAtomicExchange(01T20D00D00B",
+                                         "mix(10B10B10F",
+                                         "reflect(10C10C",
+                                         "mix(10B10B10B",
+                                         "textureProj(00Y30B00B",
+                                         "imageAtomicMax(01I20D00D",
+                                         "imageAtomicMax(01I20D00E",
+                                         "frexp(20B20D",
+                                         "textureGatherOffset(00I10B10D00D",
+                                         "notEqual(20E20E",
+                                         "textureLodOffset(00d20B00B10D",
+                                         "inverse(A0B",
+                                         "textureProjGrad(00X20B10B10B",
+                                         "imageLoad(01J20D",
+                                         "textureSize(00Y00D",
+                                         "atan(20B20B",
+                                         "usubBorrow(00E00E00E",
+                                         "imageAtomicXor(01M00D00E",
+                                         "imageAtomicXor(01M00D00D",
+                                         "dFdyFine(30B",
+                                         "textureQueryLod(00s20B",
+                                         "imageAtomicAnd(01N10D00D",
+                                         "texture(00v10B",
+                                         "subpassLoad(01n00D",
+                                         "textureProjLodOffset(00g10B00B00D",
+                                         "step(10C10C",
+                                         "textureQueryLod(00x20B",
+                                         "fma(10B10B10B",
+                                         "smoothstep(00B00B10B",
+                                         "imageAtomicCompSwap(01a20D00D00D",
+                                         "imageSize(01N",
+                                         "textureLod(00u10B00B",
+                                         "textureProjGradOffset(00m30B00B00B00D",
+                                         "fwidthCoarse(00B",
+                                         "dFdyCoarse(20B",
+                                         "textureProjGradOffset(00o30B00B00B00D",
+                                         "textureProj(00g30B00B",
+                                         "bitfieldExtract(00E00D00D",
+                                         "imageStore(01I20D30D",
+                                         "distance(30C30C",
+                                         "any(20F",
+                                         "textureGatherOffsets(00L20B70D",
+                                         "textureLod(00g00B00B",
+                                         "sin(10B",
+                                         "textureSize(00N00D",
+                                         "mod(20B20B",
+                                         "imageAtomicOr(01h00D00E",
+                                         "imageAtomicOr(01h00D00D",
+                                         "textureGrad(00k30B20B20B",
+                                         "textureProjOffset(00o10B00D",
+                                         "imageAtomicMin(01A10D00E",
+                                         "imageAtomicMin(01A10D00D",
+                                         "textureGradOffset(00f30B10B10B10D",
+                                         "max(20D20D",
+                                         "max(10D10D",
+                                         "imageAtomicCompSwap(01N10D00E00E",
+                                         "textureGradOffset(00t00B00B00B00D",
+                                         "refract(30B30B00B",
+                                         "floor(20C",
+                                         "floor(20B",
+                                         "texelFetchOffset(00t00D00D00D",
+                                         "imageAtomicOr(01a20D00E",
+                                         "matrixCompMult(F0BF0B",
+                                         "umulExtended(10E10E10E10E",
+                                         "texture(00d20B00B",
+                                         "imageAtomicAdd(01Z20D00D",
+                                         "imageAtomicAdd(01Z20D00E",
+                                         "umulExtended(30E30E30E30E",
+                                         "textureGatherOffsets(00q10B70D00D",
+                                         "textureGradOffset(00Y20B20B20B20D",
+                                         "textureGatherOffset(00a20B10D",
+                                         "textureGrad(00f30B10B10B",
+                                         "atomicCounterSubtract(00G00E",
+                                         "imageAtomicXor(01C20D00E",
+                                         "modf(20B20B",
+                                         "imageAtomicAnd(01Y10D00D",
+                                         "imageAtomicAnd(01Y10D00E",
+                                         "noise1(00B",
+                                         "imageLoad(01M00D",
+                                         "imageAtomicCompSwap(01L00D00E00E",
+                                         "length(30C",
+                                         "length(30B",
+                                         "mod(30B30B",
+                                         "mix(10C10C10F",
+                                         "imageAtomicMin(00z10D00E",
+                                         "imageAtomicMin(00z10D00D",
+                                         "exp2(30B",
+                                         "allInvocations(00F",
+                                         "max(20C00C",
+                                         "texture3DProj(00J30B00B",
+                                         "imageLoad(01Q10D00D",
+                                         "textureProjLod(00X30B00B",
+                                         "textureProjGradOffset(00I30B10B10B10D",
+                                         "cosh(30B",
+                                         "textureProj(00q30B",
+                                         "textureOffset(00S20B20D00B",
+                                         "usubBorrow(30E30E30E",
+                                         "textureProjOffset(00R20B10D00B",
+                                         "imageAtomicXor(01f00D00D",
+                                         "imageAtomicXor(01f00D00E",
+                                         "textureOffset(00t00B00D00B",
+                                         "textureOffset(00i20B00D00B",
+                                         "texture3DProj(00J30B",
+                                         "matrixCompMult(B0BB0B",
+                                         "lessThan(30B30B",
+                                         "cross(20B20B",
+                                         "imageSize(01O",
+                                         "textureGrad(00q10B10B10B",
+                                         "clamp(20B00B00B",
+                                         "dFdx(00B",
+                                         "findLSB(00D",
+                                         "textureProjLodOffset(00o30B00B00D",
+                                         "textureProj(00R20B00B",
+                                         "acos(20B",
+                                         "texelFetch(00r00D",
+                                         "imageAtomicAnd(01B20D00D",
+                                         "max(20B20B",
+                                         "lessThan(20E20E",
+                                         "textureProjOffset(00g10B00D00B",
+                                         "equal(30F30F",
+                                         "sign(00C",
+                                         "cosh(00B",
+                                         "bitfieldExtract(00D00D00D",
+                                         "imageAtomicMin(01E20D00D",
+                                         "imageAtomicMin(01E20D00E",
+                                         "textureLod(00Z20B00B",
+                                         "sign(00D",
+                                         "textureOffset(00Y20B20D",
+                                         "transpose(60B",
+                                         "imageAtomicExchange(01L00D00E",
+                                         "imageAtomicAdd(01O10D00D",
+                                         "imageAtomicAdd(01O10D00E",
+                                         "faceforward(00B00B00B",
+                                         "gl_NumWorkGroups",
+                                         "imageAtomicOr(01O10D00E",
+                                         "imageAtomicOr(01O10D00D",
+                                         "imageAtomicAdd(01b20D00D",
+                                         "interpolateAtCentroid(20B",
+                                         "textureProjLodOffset(00R30B00B10D",
+                                         "textureGrad(00h10B00B00B",
+                                         "imageAtomicExchange(01U20D00D00B",
+                                         "texture1DProj(00g30B00B",
+                                         "textureQueryLod(00h00B",
+                                         "imageAtomicExchange(01U20D00D00E",
+                                         "modf(00C00C",
+                                         "textureProjLod(00t30B00B",
+                                         "textureOffset(00o00B00D",
+                                         "imageAtomicExchange(01U20D00D00D",
+                                         "textureGather(00U20B",
+                                         "imageStore(01H20D30B",
+                                         "texelFetch(00Q20D00D",
+                                         "roundEven(00C",
+                                         "roundEven(00B",
+                                         "texelFetchOffset(00O10D10D",
+                                         "atanh(20B",
+                                         "clamp(10E00E00E",
+                                         "dFdxFine(30B",
+                                         "imageAtomicAdd(01L00D00E",
+                                         "textureQueryLod(00J20B",
+                                         "textureProjOffset(00X30B10D",
+                                         "gl_MaxFragmentUniformVectors",
+                                         "texture2DProjLod(00I30B00B",
+                                         "interpolateAtOffset(10B10B",
+                                         "max(10C10C",
+                                         "texelFetch(00g00D00D",
+                                         "abs(30B",
+                                         "bitfieldInsert(10E10E00D00D",
+                                         "packSnorm4x8(30B",
+                                         "mix(10B10B00B",
+                                         "imageSize(01b",
+                                         "clamp(30D30D30D",
+                                         "textureQueryLod(00d10B",
+                                         "mod(10C00C",
+                                         "imageAtomicMax(01G20D00D",
+                                         "imageAtomicMax(01G20D00E",
+                                         "imageStore(01R10D00D30D",
+                                         "determinant(F0B",
+                                         "transpose(A0B",
+                                         "pow(20B20B",
+                                         "imageSize(01g",
+                                         "imageAtomicExchange(01G20D00B",
+                                         "imageSize(01e",
+                                         "imageAtomicExchange(01G20D00D",
+                                         "imageAtomicExchange(01G20D00E",
+                                         "imageLoad(01Y10D",
+                                         "imageAtomicMax(01g00D00D",
+                                         "imageAtomicMax(01g00D00E",
+                                         "textureProj(00v30B",
+                                         "textureProjGrad(00O20B10B10B",
+                                         "log2(20B",
+                                         "dot(30C30C",
+                                         "fwidthCoarse(10B",
+                                         "textureProjOffset(00I20B10D00B",
+                                         "textureGatherOffsets(00U20B70D00D",
+                                         "notEqual(10F10F",
+                                         "textureGatherOffsets(00O10B70D",
+                                         "smoothstep(00B00B00B",
+                                         "textureProjLodOffset(00d30B00B10D",
+                                         "imageAtomicAnd(01P10D00E",
+                                         "imageAtomicAnd(01P10D00D",
+                                         "textureProjLodOffset(00I30B00B10D",
+                                         "gl_MaxCombinedAtomicCounters",
+                                         "bitfieldInsert(10D10D00D00D",
+                                         "imageAtomicAdd(00y10D00E",
+                                         "imageAtomicAdd(00y10D00D",
+                                         "imageAtomicAnd(01Q10D00D00E",
+                                         "imageAtomicAnd(01Q10D00D00D",
+                                         "imageAtomicCompSwap(01L00D00D00D",
+                                         "textureGather(00k30B",
+                                         "texture(00J20B",
+                                         "lessThanEqual(10D10D",
+                                         "textureProjOffset(00o30B00D00B",
+                                         "gl_MaxVaryingVectors",
+                                         "textureSize(00d00D",
+                                         "sin(00B",
+                                         "imageLoad(01N10D",
+                                         "uaddCarry(10E10E10E",
+                                         "imageAtomicOr(01Z20D00E",
+                                         "imageAtomicOr(01Z20D00D",
+                                         "mix(10C10C00C",
+                                         "atomicCounterIncrement(00G",
+                                         "imageAtomicAdd(01J20D00D",
+                                         "imageAtomicAdd(01J20D00E",
+                                         "imageAtomicCompSwap(01S10D00D00D00D",
+                                         "imageAtomicMax(01W10D00E",
+                                         "textureProj(00o10B00B",
+                                         "imageAtomicAdd(01U20D00D00D",
+                                         "imageAtomicAdd(01U20D00D00E",
+                                         "textureProjOffset(00m30B00D",
+                                         "imageAtomicExchange(01Y10D00B",
+                                         "equal(10E10E",
+                                         "imageAtomicExchange(01Y10D00E",
+                                         "imageAtomicExchange(01Y10D00D",
+                                         "imageAtomicExchange(01O10D00B",
+                                         "imageAtomicExchange(01O10D00E",
+                                         "textureProjOffset(00J30B20D",
+                                         "imageAtomicXor(01D20D00D",
+                                         "imageAtomicXor(01D20D00E",
+                                         "notEqual(10E10E",
+                                         "min(10C10C",
+                                         "textureProjGrad(00t10B00B00B",
+                                         "textureGather(00q20B00D",
+                                         "imageAtomicAnd(01B20D00E",
+                                         "imageAtomicAdd(01S10D00D00E",
+                                         "imageAtomicCompSwap(01O10D00D00D",
+                                         "shadow1DProjLod(00m30B00B",
+                                         "imageAtomicMax(01f00D00E",
+                                         "imageAtomicMax(01f00D00D",
+                                         "texture(00u20B00B",
+                                         "textureLodOffset(00R10B00B10D",
+                                         "trunc(10B",
+                                         "trunc(10C",
+                                         "gl_MaxComputeAtomicCounters",
+                                         "texelFetch(00u10D00D",
+                                         "dot(20C20C",
+                                         "gl_DepthRangeParameters",
+                                         "textureGather(00f20B",
+                                         "textureGatherOffsets(00L20B70D00D",
+                                         "noise1(10B",
+                                         "textureProjGrad(00g30B00B00B",
+                                         "shadow2DProj(00d30B",
+                                         "textureProj(00d30B00B",
+                                         "sign(10B",
+                                         "max(00E00E",
+                                         "texture(00a20B00B",
+                                         "textureProj(00o10B",
+                                         "refract(20C20C00B",
+                                         "textureProj(00M20B00B",
+                                         "imageLoad(01A10D",
+                                         "textureProjOffset(00X30B10D00B",
+                                         "exp2(00B",
+                                         "imageAtomicExchange(01H20D00B",
+                                         "texelFetchOffset(00u10D00D00D",
+                                         "imageAtomicCompSwap(01H20D00E00E",
+                                         "imageAtomicExchange(01H20D00E",
+                                         "imageAtomicExchange(01H20D00D",
+                                         "textureGatherOffset(00q10B10D",
+                                         "textureGather(00a20B00D",
+                                         "imageStore(01Q10D00D30B",
+                                         "ldexp(00C00D",
+                                         "textureSize(00s00D",
+                                         "imageAtomicXor(01P10D00E",
+                                         "imageAtomicOr(01I20D00D",
+                                         "texture(00N10B00B",
+                                         "gl_PrimitiveID",
+                                         "imageAtomicOr(01X10D00D",
+                                         "imageAtomicCompSwap(01Y10D00D00D",
+                                         "imageAtomicOr(01X10D00E",
+                                         "textureProjGrad(00I30B10B10B",
+                                         "gl_Layer",
+                                         "textureOffset(00d20B10D",
+                                         "dFdx(30B",
+                                         "imageAtomicMin(01V20D00D00D",
+                                         "imageAtomicMin(01V20D00D00E",
+                                         "gl_LastFragColor",
+                                         "textureProjGradOffset(00t30B00B00B00D",
+                                         "min(20E20E",
+                                         "asin(20B",
+                                         "imageAtomicCompSwap(01U20D00D00E00E",
+                                         "texture(00l30B00B",
+                                         "texture1DProjLod(00g10B00B",
+                                         "fwidth(10B",
+                                         "dFdy(00B",
+                                         "shadow2DLod(00d20B00B",
+                                         "texture1DProj(00g10B",
+                                         "lessThan(30E30E",
+                                         "imulExtended(30D30D30D30D",
+                                         "transpose(70B",
+                                         "imulExtended(00D00D00D00D",
+                                         "textureGatherOffsets(00q10B70D",
+                                         "imageAtomicAdd(01F20D00D",
+                                         "imageAtomicAdd(01F20D00E",
+                                         "texture(00S20B00B",
+                                         "textureLod(00Y20B00B",
+                                         "faceforward(10C10C10C",
+                                         "textureQueryLod(00u00B",
+                                         "min(20D00D",
+                                         "imageAtomicCompSwap(01P10D00D00D",
+                                         "uintBitsToFloat(00E",
+                                         "dFdxFine(20B",
+                                         "imageAtomicMin(01L00D00D",
+                                         "imageAtomicExchange(01g00D00D",
+                                         "bitfieldInsert(20D20D00D00D",
+                                         "mix(30B30B00B",
+                                         "textureQueryLod(00U10B",
+                                         "imageAtomicAnd(01N10D00E",
+                                         "tanh(00B",
+                                         "imageStore(00y10D30B",
+                                         "max(10C00C",
+                                         "matrixCompMult(D0BD0B",
+                                         "textureGatherOffsets(00v10B70D00D",
+                                         "gl_MaxComputeUniformComponents",
+                                         "imageAtomicAnd(01X10D00E",
+                                         "shadow2DProjLod(00d30B00B",
+                                         "imageAtomicAnd(01X10D00D",
+                                         "min(30B30B",
+                                         "reflect(20C20C",
+                                         "texelFetch(00h10D00D",
+                                         "memoryBarrierAtomicCounter(",
+                                         "bitfieldInsert(00E00E00D00D",
+                                         "imageAtomicMin(01Z20D00E",
+                                         "imageAtomicMin(01Z20D00D",
+                                         "imageAtomicAdd(01b20D00E",
+                                         "imageAtomicMin(01a20D00E",
+                                         "textureGrad(00d20B10B10B",
+                                         "atan(10B",
+                                         "imageAtomicMax(01T20D00D00D",
+                                         "imageAtomicMax(01T20D00D00E",
+                                         "imageAtomicCompSwap(01g00D00D00D",
+                                         "clamp(30C30C30C",
+                                         "textureProj(00v20B",
+                                         "step(00B10B",
+                                         "textureProjLod(00I20B00B",
+                                         "rgb_2_yuv(20B00H",
+                                         "imageStore(01B20D30B",
+                                         "imageLoad(01P10D",
+                                         "texture(00T20B",
+                                         "log2(10B",
+                                         "imageAtomicAnd(01D20D00D",
+                                         "imageAtomicAnd(01D20D00E",
+                                         "findLSB(20E",
+                                         "findLSB(20D",
+                                         "imageAtomicMin(01f00D00E",
+                                         "imageAtomicMin(01f00D00D",
+                                         "noise2(30B",
+                                         "imageAtomicOr(01U20D00D00E",
+                                         "greaterThanEqual(10B10B",
+                                         "imageAtomicXor(01K00D00D",
+                                         "clamp(10D10D10D",
+                                         "texelFetch(00M10D00D",
+                                         "textureQueryLod(00Y20B",
+                                         "transpose(F0B",
+                                         "textureOffset(00Y20B20D00B",
+                                         "textureGradOffset(00S20B20B20B20D",
+                                         "imageAtomicOr(01U20D00D00D",
+                                         "clamp(30E30E30E",
+                                         "textureSize(00R00D",
+                                         "imageAtomicAdd(01f00D00D",
+                                         "acosh(10B",
+                                         "imageAtomicAdd(01f00D00E",
+                                         "imageLoad(01b20D",
+                                         "textureOffset(00L20B10D00B",
+                                         "mod(20B00B",
+                                         "imageLoad(01U20D00D",
+                                         "textureProjLod(00J30B00B",
+                                         "subpassLoad(01i",
+                                         "subpassLoad(01k",
+                                         "transpose(90B",
+                                         "mix(30C30C00C",
+                                         "atomicAnd(00E00E",
+                                         "max(20D00D",
+                                         "texelFetchOffset(00I10D00D10D",
+                                         "textureQueryLod(00L10B",
+                                         "atomicCounter(00G",
+                                         "textureGrad(00m20B00B00B",
+                                         "noise3(20B",
+                                         "bitfieldInsert(30D30D00D00D",
+                                         "min(10C00C",
+                                         "greaterThan(10D10D",
+                                         "bitfieldExtract(10E00D00D",
+                                         "textureGradOffset(00h10B00B00B00D",
+                                         "imageAtomicMax(01V20D00D00D",
+                                         "texture2D(00I10B00B",
+                                         "greaterThan(20D20D",
+                                         "noise1(20B",
+                                         "textureProjLodOffset(00t10B00B00D",
+                                         "textureProjOffset(00O20B10D",
+                                         "trunc(00B",
+                                         "length(10C",
+                                         "length(10B",
+                                         "imageLoad(01R10D00D",
+                                         "imageAtomicAdd(01H20D00D",
+                                         "imageAtomicAdd(01H20D00E",
+                                         "subpassLoad(01j",
+                                         "dot(00B00B",
+                                         "tan(30B",
+                                         "textureLod(00T20B00B",
+                                         "textureProjGrad(00R30B10B10B",
+                                         "exp2(10B",
+                                         "textureProjOffset(00X20B10D00B",
+                                         "textureProjGradOffset(00X30B10B10B10D",
+                                         "matrixCompMult(A0BA0B",
+                                         "textureGatherOffsets(00v10B70D",
+                                         "textureGrad(00S20B20B20B",
+                                         "round(30B",
+                                         "round(30C",
+                                         "anyInvocation(00F",
+                                         "textureGrad(00x30B20B20B",
+                                         "imageAtomicCompSwap(01D20D00E00E",
+                                         "textureProjLod(00o30B00B",
+                                         "smoothstep(00C00C10C",
+                                         "interpolateAtSample(00B00D",
+                                         "dFdx(20B",
+                                         "texture(00L20B",
+                                         "barrier(",
+                                         "imageAtomicAdd(01a20D00D",
+                                         "textureGather(00k30B00D",
+                                         "findMSB(20D",
+                                         "textureGatherOffset(00L20B10D",
+                                         "imageAtomicMin(01S10D00D00D",
+                                         "imageAtomicMin(01S10D00D00E",
+                                         "textureProjOffset(00S30B20D00B",
+                                         "imageAtomicAdd(01D20D00D",
+                                         "normalize(10C",
+                                         "unpackSnorm4x8(00E",
+                                         "imageLoad(01C20D",
+                                         "imageAtomicMax(01C20D00D",
+                                         "imageAtomicMax(01C20D00E",
+                                         "textureGather(00l30B00B",
+                                         "normalize(10B",
+                                         "asin(30B",
+                                         "isnan(20B",
+                                         "isnan(20C",
+                                         "fwidth(00B",
+                                         "dFdy(10B",
+                                         "imageAtomicAdd(01P10D00E",
+                                         "imageAtomicAdd(01P10D00D",
+                                         "max(30E00E",
+                                         "textureLod(00d20B00B",
+                                         "textureOffset(00q10B10D",
+                                         "gl_LastFragData",
+                                         "mod(10B00B",
+                                         "texture(00g00B00B",
+                                         "uintBitsToFloat(10E",
+                                         "textureProjOffset(00t30B00D",
+                                         "matrixCompMult(70B70B",
+                                         "imageAtomicAdd(01I20D00D",
+                                         "imageAtomicMax(01M00D00D",
+                                         "imageAtomicMax(01M00D00E",
+                                         "textureLod(00k30B00B",
+                                         "imageAtomicAdd(01E20D00D",
+                                         "textureLodOffset(00Y20B00B20D",
+                                         "refract(00C00C00B",
+                                         "log2(00B",
+                                         "tanh(10B",
+                                         "imageAtomicMin(01I20D00E",
+                                         "textureLod(00h10B00B",
+                                         "imageStore(01b20D30E",
+                                         "textureGather(00O20B00D",
+                                         "gl_LocalInvocationID",
+                                         "clamp(00B00B00B",
+                                         "textureGather(00d10B",
+                                         "gl_MaxGeometryAtomicCounterBuffers",
+                                         "textureOffset(00p10B00D00B",
+                                         "imageAtomicExchange(01f00D00B",
+                                         "clamp(10C10C10C",
+                                         "outerProduct(20B10B",
+                                         "textureProjOffset(00t10B00D",
+                                         "isinf(20C",
+                                         "textureGrad(00e30B20B20B",
+                                         "textureSize(00J00D",
+                                         "textureQueryLod(00Z20B",
+                                         "dot(10C10C",
+                                         "textureProjGrad(00n30B10B10B",
+                                         "imageAtomicMin(01U20D00D00E",
+                                         "imageAtomicMin(01U20D00D00D",
+                                         "texture2DProjLodEXT(00I30B00B",
+                                         "imageAtomicMax(01N10D00D",
+                                         "imageAtomicMax(01N10D00E",
+                                         "imageAtomicAnd(01b20D00D",
+                                         "step(00B00B",
+                                         "texture2DLodEXT(00I10B00B",
+                                         "texture(00K20B00B",
+                                         "textureProjGradOffset(00n30B10B10B10D",
+                                         "textureGrad(00J20B20B20B",
+                                         "imageAtomicCompSwap(01V20D00D00E00E",
+                                         "textureOffset(00U20B10D00B",
+                                         "intBitsToFloat(10D",
+                                         "min(20C20C",
+                                         "findLSB(10D",
+                                         "textureProjLodOffset(00Y30B00B20D",
+                                         "imageAtomicMax(01h00D00E",
+                                         "texture3D(00J20B",
+                                         "gl_SecondaryFragDataEXT",
+                                         "imageAtomicAdd(01X10D00E",
+                                         "faceforward(20C20C20C",
+                                         "imageAtomicAnd(01O10D00E",
+                                         "imageAtomicAdd(01X10D00D",
+                                         "textureGather(00n10B00B",
+                                         "textureGather(00X10B00D",
+                                         "imageAtomicMax(01L00D00E",
+                                         "imageAtomicMax(01L00D00D",
+                                         "imageAtomicXor(01G20D00E",
+                                         "imageAtomicXor(01G20D00D",
+                                         "textureOffset(00a20B10D",
+                                         "imageAtomicExchange(01X10D00B",
+                                         "min(30E30E",
+                                         "texture2DProj(00I30B00B",
+                                         "textureQueryLod(00X10B",
+                                         "imageAtomicAnd(01I20D00E",
+                                         "textureCubeGradEXT(00K20B20B20B",
+                                         "min(00B00B",
+                                         "textureGradOffset(00o00B00B00B00D",
+                                         "mix(30C30C30F",
+                                         "mix(30C30C30C",
+                                         "gl_WorkGroupID",
+                                         "degrees(00B",
+                                         "imageAtomicMax(01J20D00E",
+                                         "imageAtomicMax(01J20D00D",
+                                         "imageAtomicMin(01D20D00D",
+                                         "atomicExchange(00D00D",
+                                         "textureOffset(00m20B00D00B",
+                                         "gl_MaxGeometryAtomicCounters",
+                                         "textureOffset(00f30B10D",
+                                         "imageAtomicExchange(01a20D00D",
+                                         "imageAtomicExchange(01a20D00E",
+                                         "imageAtomicExchange(01a20D00B",
+                                         "matrixCompMult(60B60B",
+                                         "imageAtomicCompSwap(00z10D00D00D",
+                                         "textureProj(00t30B",
+                                         "textureProjGradOffset(00t10B00B00B00D",
+                                         "unpackSnorm2x16(00E",
+                                         "lessThan(30D30D",
+                                         "atan(00B00B",
+                                         "textureQueryLod(00S20B",
+                                         "notEqual(10B10B",
+                                         "imageLoad(01G20D",
+                                         "trunc(30B",
+                                         "trunc(30C",
+                                         "length(00B",
+                                         "length(00C",
+                                         "imageAtomicAnd(01H20D00D",
+                                         "imageAtomicAnd(01H20D00E",
+                                         "textureProj(00X30B00B",
+                                         "imageAtomicExchange(01O10D00D",
+                                         "imageAtomicCompSwap(01C20D00E00E",
+                                         "tan(00B",
+                                         "min(20E00E",
+                                         "textureLod(00x30B00B",
+                                         "textureSize(00j",
+                                         "textureSize(00n",
+                                         "imageAtomicXor(01F20D00D",
+                                         "textureSize(00c",
+                                         "textureSize(00b",
+                                         "min(20B20B",
+                                         "textureSize(00q",
+                                         "textureSize(00r",
+                                         "textureSize(00w",
+                                         "textureSize(00v",
+                                         "bitfieldInsert(20E20E00D00D",
+                                         "gl_MaxProgramTexelOffset",
+                                         "textureSize(00O",
+                                         "imageAtomicAnd(01a20D00E",
+                                         "imageAtomicMin(01g00D00D",
+                                         "trunc(00C",
+                                         "imageAtomicAnd(01a20D00D",
+                                         "textureSize(00Q",
+                                         "textureSize(00P",
+                                         "imageAtomicAdd(01M00D00E",
+                                         "imageAtomicAdd(01M00D00D",
+                                         "textureSize(00W",
+                                         "textureProjLod(00X20B00B",
+                                         "smoothstep(00C00C00C",
+                                         "atomicCounterAnd(00G00E",
+                                         "faceforward(30B30B30B",
+                                         "distance(20C20C",
+                                         "atomicCounterAdd(00G00E",
+                                         "imageStore(01O10D30D",
+                                         "texture(00X10B",
+                                         "ceil(00C",
+                                         "ceil(00B",
+                                         "distance(00B00B",
+                                         "texelFetch(00O10D",
+                                         "imageAtomicMin(01N10D00D",
+                                         "imageAtomicMin(01N10D00E",
+                                         "imageAtomicExchange(01C20D00D",
+                                         "imageAtomicExchange(01C20D00E",
+                                         "textureGrad(00s30B20B20B",
+                                         "textureGather(00I10B",
+                                         "imageAtomicExchange(01C20D00B",
+                                         "min(30D30D",
+                                         "findMSB(30E",
+                                         "findMSB(30D",
+                                         "textureGradOffset(00R10B10B10B10D",
+                                         "fwidth(30B",
+                                         "textureGrad(00K20B20B20B",
+                                         "texelFetch(00S20D00D",
+                                         "max(10B00B",
+                                         "textureProjGradOffset(00R30B10B10B10D",
+                                         "texelFetchOffset(00L20D00D10D",
+                                         "isnan(30C",
+                                         "transpose(50B",
+                                         "greaterThanEqual(20D20D",
+                                         "asinh(00B",
+                                         "gl_PrimitiveIDIn",
+                                         "textureGather(00Z20B",
+                                         "textureGrad(00p10B00B00B",
+                                         "textureProjOffset(00v30B10D",
+                                         "greaterThan(20B20B",
+                                         "min(20D20D",
+                                         "texelFetchOffset(00g00D00D00D",
+                                         "imageAtomicCompSwap(01g00D00E00E",
+                                         "imageAtomicCompSwap(01Q10D00D00E00E",
+                                         "imageAtomicXor(01O10D00D",
+                                         "imageAtomicXor(01O10D00E",
+                                         "tanh(20B",
+                                         "textureProj(00m30B00B",
+                                         "sin(20B",
+                                         "smoothstep(00C00C30C",
+                                         "textureSize(00l00D",
+                                         "textureLod(00o00B00B",
+                                         "imageAtomicMin(01K00D00D",
+                                         "imageAtomicMin(01K00D00E",
+                                         "textureOffset(00I10B10D00B",
+                                         "imageAtomicAnd(00z10D00D",
+                                         "imageAtomicAnd(00z10D00E",
+                                         "gl_MaxAtomicCounterBufferSize",
+                                         "textureOffset(00J20B20D00B",
+                                         "lessThanEqual(20E20E",
+                                         "gl_BaseVertex",
+                                         "textureOffset(00g00B00D",
+                                         "textureProj(00g30B",
+                                         "imageLoad(01Z20D",
+                                         "bitfieldInsert(30E30E00D00D",
+                                         "bitfieldExtract(20E00D00D",
+                                         "uintBitsToFloat(20E",
+                                         "unpackUnorm4x8(00E",
+                                         "mod(10B10B",
+                                         "gl_LocalInvocationIndex",
+                                         "imageAtomicAdd(01W10D00D",
+                                         "imageAtomicAdd(01W10D00E",
+                                         "gl_MaxVertexImageUniforms",
+                                         "equal(20D20D",
+                                         "gl_MaxCombinedAtomicCounterBuffers",
+                                         "mix(10E10E10F",
+                                         "textureGather(00R10B00D",
+                                         "textureSize(00Z00D",
+                                         "bitfieldExtract(30D00D00D",
+                                         "imageAtomicXor(01J20D00D",
+                                         "imageAtomicXor(01J20D00E",
+                                         "imageStore(01T20D00D30B",
+                                         "intBitsToFloat(00D",
+                                         "textureLodOffset(00m20B00B00D",
+                                         "findLSB(00E",
+                                         "texelFetch(00p10D00D",
+                                         "textureGather(00d10B00B",
+                                         "shadow2DProj(00d30B00B",
+                                         "inversesqrt(10B",
+                                         "inversesqrt(10C",
+                                         "abs(30D",
+                                         "transpose(D0B",
+                                         "abs(30C",
+                                         "textureProjGrad(00O30B10B10B",
+                                         "imageAtomicMax(01Z20D00D",
+                                         "",
+                                         "imageLoad(01E20D",
+                                         "textureProj(00N20B00B",
+                                         "gl_FragData",
+                                         "dFdxCoarse(20B",
+                                         "clamp(20E00E00E",
+                                         "textureProj(00d30B",
+                                         "gl_MaxVertexOutputVectors",
+                                         "shadow1D(00m20B",
+                                         "textureOffset(00u10B00D",
+                                         "cosh(10B",
+                                         "sign(10C",
+                                         "imageAtomicAnd(01G20D00E",
+                                         "imageAtomicAnd(01G20D00D",
+                                         "sign(10D",
+                                         "umulExtended(00E00E00E00E",
+                                         "gl_MaxVertexAttribs",
+                                         "",
+                                         "texture(00a20B",
+                                         "imageAtomicAdd(01T20D00D00E",
+                                         "imageAtomicAdd(01T20D00D00D",
+                                         "imageAtomicExchange(01g00D00B",
+                                         "ldexp(10B10D",
+                                         "textureProjOffset(00g30B00D",
+                                         "texture(00Z20B",
+                                         "degrees(10B",
+                                         "texture(00K20B",
+                                         "sinh(10B",
+                                         "texture(00m20B",
+                                         "imageAtomicXor(01C20D00D",
+                                         "not(30F",
+                                         "textureProjLodOffset(00I20B00B10D",
+                                         "textureGather(00K20B",
+                                         "textureGatherOffset(00R10B10D",
+                                         "memoryBarrierShared(",
+                                         "clamp(20B20B20B",
+                                         "texelFetch(00W20D00D",
+                                         "textureProjLod(00g10B00B",
+                                         "trunc(20C",
+                                         "trunc(20B",
+                                         "textureProjOffset(00I30B10D00B",
+                                         "max(00C00C",
+                                         "tan(10B",
+                                         "texture(00g00B",
+                                         "textureLodOffset(00L20B00B10D",
+                                         "textureLodOffset(00u10B00B00D",
+                                         "imageAtomicAnd(00y10D00E",
+                                         "imageAtomicAnd(00y10D00D",
+                                         "isinf(20B",
+                                         "dFdyCoarse(10B",
+                                         "textureGatherOffset(00X10B10D00D",
+                                         "min(10E10E",
+                                         "memoryBarrierImage(",
+                                         "round(10B",
+                                         "round(10C",
+                                         "textureProjLodOffset(00m30B00B00D",
+                                         "textureProjGradOffset(00g10B00B00B00D",
+                                         "textureProj(00R30B",
+                                         "shadow1DProj(00m30B",
+                                         "texture(00f30B00B",
+                                         "fma(00B00B00B",
+                                         "imageAtomicOr(01b20D00E",
+                                         "imageAtomicOr(01b20D00D",
+                                         "textureGatherOffset(00v10B10D00D",
+                                         "atomicMax(00E00E",
+                                         "imageAtomicMin(01B20D00E",
+                                         "imageAtomicMin(01B20D00D",
+                                         "textureQueryLod(00t00B",
+                                         "textureProjOffset(00R30B10D",
+                                         "textureProj(00X30B",
+                                         "findMSB(00D",
+                                         "findMSB(00E",
+                                         "textureProjOffset(00X20B10D",
+                                         "imageAtomicCompSwap(01X10D00D00D",
+                                         "frexp(30C30D",
+                                         "mix(10C10C10C",
+                                         "min(30D00D",
+                                         "texture(00M10B00B",
+                                         "fwidth(20B",
+                                         "imageAtomicOr(01S10D00D00D",
+                                         "imageAtomicOr(01S10D00D00E",
+                                         "mod(30C00C",
+                                         "imageAtomicAdd(01A10D00D",
+                                         "imageAtomicAdd(01A10D00E",
+                                         "texture(00o00B00B",
+                                         "imageAtomicOr(01H20D00E",
+                                         "imageAtomicOr(01H20D00D",
+                                         "cos(20B",
+                                         "textureGather(00T20B",
+                                         "textureProjGradOffset(00J30B20B20B20D",
+                                         "asinh(10B",
+                                         "texelFetchOffset(00v10D10D",
+                                         "imageAtomicXor(01E20D00E",
+                                         "imageAtomicXor(01E20D00D"};
+
+// Flat array of offsets from a symbol into the rules table.
+constexpr uint16_t kMangledOffsets[] = {
+    0,     // textureProj_00R30B00B
+    2,     // interpolateAtOffset_30B10B
+    3,     // textureProjOffset_00g10B00D
+    4,     // imageAtomicOr_00z10D00D
+    5,     // texture2DProj_00I20B
+    7,     // textureProjGradOffset_00v30B10B10B10D
+    8,     // texelFetch_00o00D00D
+    9,     // imageLoad_01g00D
+    10,    // imageLoad_01I20D
+    12,    // tanh_30B
+    14,    // imageAtomicCompSwap_01E20D00D00D
+    15,    // textureQueryLod_00m00B
+    16,    // imageAtomicCompSwap_01f00D00D00D
+    17,    // not_10F
+    19,    // findMSB_20E
+    21,    // lessThanEqual_30B30B
+    23,    // imageAtomicAdd_00z10D00E
+    24,    // textureLod_00t00B00B
+    25,    // textureProjGradOffset_00O30B10B10B10D
+    26,    // outerProduct_20B30B
+    28,    // imageAtomicOr_00z10D00E
+    29,    // imageAtomicAnd_01f00D00D
+    30,    // imageAtomicAnd_01f00D00E
+    31,    // imageSamples_01V
+    32,    // imageSamples_01U
+    33,    // imageSamples_01T
+    34,    // imageSamples_01S
+    35,    // mix_20B20B00B
+    37,    // imageSamples_01Q
+    38,    // textureLodOffset_00o00B00B00D
+    39,    // uintBitsToFloat_30E
+    41,    // imageAtomicExchange_01R10D00D00B
+    42,    // textureSize_00K00D
+    44,    // textureSize_00h00D
+    45,    // gl_MaxAtomicCounterBindings
+    47,    // texelFetchOffset_00q10D10D
+    48,    // greaterThanEqual_10E10E
+    50,    // texture_00d20B
+    52,    // atan_10B10B
+    54,    // clamp_30B30B30B
+    56,    // imageAtomicCompSwap_01a20D00E00E
+    57,    // imageAtomicCompSwap_01R10D00D00D00D
+    58,    // textureLodOffset_00a20B00B10D
+    60,    // imageStore_01K00D30B
+    61,    // greaterThanEqual_20B20B
+    63,    // imageLoad_01F20D
+    65,    // ceil_10C
+    66,    // imageAtomicCompSwap_01b20D00D00D
+    67,    // imageAtomicAnd_01A10D00D
+    68,    // imageAtomicAdd_01D20D00E
+    69,    // atomicAdd_00D00D
+    71,    // textureSize_00p00D
+    72,    // floatBitsToUint_20B
+    74,    // textureProjOffset_00t30B00D00B
+    75,    // imageAtomicOr_01Q10D00D00D
+    76,    // imageAtomicOr_01Q10D00D00E
+    77,    // mix_20D20D20F
+    78,    // degrees_20B
+    80,    // imageAtomicMin_01Y10D00D
+    81,    // imageAtomicAnd_01Z20D00D
+    82,    // imageAtomicCompSwap_01D20D00D00D
+    83,    // min_00C00C
+    84,    // imageAtomicMax_01S10D00D00E
+    85,    // imageAtomicXor_01R10D00D00E
+    86,    // imageAtomicXor_01Q10D00D00E
+    87,    // inversesqrt_00C
+    88,    // inversesqrt_00B
+    90,    // imageAtomicXor_01Q10D00D00D
+    91,    // texelFetchOffset_00J20D00D20D
+    93,    // textureProjGrad_00S30B20B20B
+    95,    // equal_10D10D
+    97,    // max_30D00D
+    99,    // groupMemoryBarrier_
+    101,   // imageAtomicOr_01N10D00D
+    102,   // imageAtomicOr_01N10D00E
+    103,   // imageAtomicExchange_01b20D00E
+    104,   // imageAtomicExchange_01b20D00D
+    105,   // step_20C20C
+    106,   // texelFetch_00I10D00D
+    108,   // mod_00C00C
+    109,   // transpose_E0B
+    111,   // imageAtomicMin_01R10D00D00E
+    112,   // imageAtomicMin_01R10D00D00D
+    113,   // textureGatherOffsets_00f20B00B70D
+    114,   // textureGather_00O20B
+    115,   // textureProjOffset_00Y30B20D00B
+    117,   // modf_10B10B
+    119,   // imageAtomicMax_01K00D00D
+    120,   // imageAtomicMax_01K00D00E
+    121,   // determinant_50B
+    122,   // imageAtomicCompSwap_01J20D00E00E
+    123,   // textureProj_00g10B00B
+    124,   // lessThan_20B20B
+    126,   // gl_MaxFragmentInputVectors
+    128,   // sign_20C
+    129,   // cosh_20B
+    131,   // sign_20D
+    133,   // atanh_00B
+    135,   // imageAtomicAnd_01V20D00D00E
+    136,   // imageAtomicAnd_01V20D00D00D
+    137,   // textureProj_00t10B
+    138,   // texture_00p20B00B
+    139,   // fma_10C10C10C
+    140,   // imageAtomicXor_01Y10D00D
+    141,   // imageAtomicXor_01Y10D00E
+    142,   // imageAtomicExchange_01N10D00D
+    143,   // imageAtomicAnd_01C20D00E
+    144,   // textureOffset_00d20B10D00B
+    146,   // textureOffset_00m20B00D
+    147,   // imageAtomicAnd_01C20D00D
+    148,   // lessThan_10E10E
+    150,   // imageAtomicCompSwap_01A10D00D00D
+    151,   // textureGrad_00X00B00B00B
+    152,   // textureProjLodOffset_00t30B00B00D
+    153,   // fma_30C30C30C
+    154,   // textureGrad_00v10B10B10B
+    155,   // textureProj_00N30B00B
+    156,   // step_00C00C
+    157,   // gl_MaxCombinedShaderOutputResources
+    159,   // texture_00I10B00B
+    161,   // texelFetch_00j00D
+    162,   // lessThan_20D20D
+    164,   // clamp_20C20C20C
+    165,   // imageAtomicXor_00z10D00E
+    166,   // all_10F
+    168,   // dFdyCoarse_00B
+    169,   // isinf_30B
+    171,   // textureGatherOffset_00a20B10D00D
+    173,   // textureGatherOffset_00I10B10D
+    175,   // textureProjOffset_00q30B10D
+    176,   // textureOffset_00L20B10D
+    178,   // lessThanEqual_30E30E
+    180,   // min_10E00E
+    182,   // imageAtomicXor_01a20D00E
+    183,   // imageAtomicXor_01a20D00D
+    184,   // textureProjOffset_00S30B20D
+    186,   // round_00C
+    187,   // round_00B
+    189,   // greaterThan_30D30D
+    191,   // texture_00U20B
+    193,   // imageAtomicCompSwap_01P10D00E00E
+    194,   // smoothstep_00C00C20C
+    195,   // texture2DRect_00O10B
+    196,   // imageAtomicAdd_01K00D00E
+    197,   // imageAtomicAdd_01K00D00D
+    198,   // noise2_20B
+    199,   // gl_MaxGeometryOutputVertices
+    200,   // step_20B20B
+    202,   // imageAtomicAnd_01b20D00E
+    203,   // findMSB_10E
+    205,   // findMSB_10D
+    207,   // interpolateAtOffset_00B10B
+    208,   // texture_00t00B
+    209,   // textureLodOffset_00S20B00B20D
+    211,   // textureQueryLod_00p00B
+    212,   // imageStore_00z10D30D
+    214,   // outerProduct_10B20B
+    216,   // fwidthFine_10B
+    217,   // cos_30B
+    219,   // unpackHalf2x16_00E
+    221,   // imageStore_01J20D30E
+    223,   // outerProduct_10B10B
+    225,   // imageAtomicOr_01M00D00D
+    226,   // gl_MaxComputeTextureImageUnits
+    228,   // imageAtomicMax_01Y10D00E
+    229,   // imageAtomicMax_01Y10D00D
+    230,   // sin_30B
+    232,   // imageAtomicAnd_01O10D00D
+    233,   // imageAtomicCompSwap_01Q10D00D00D00D
+    234,   // textureGather_00L20B00D
+    236,   // imageStore_01A10D30E
+    238,   // imageAtomicXor_01H20D00D
+    239,   // imageAtomicXor_01H20D00E
+    240,   // shadow1D_00m20B00B
+    241,   // max_10E10E
+    243,   // max_30B30B
+    245,   // clamp_10E10E10E
+    247,   // texture_00N10B
+    248,   // textureProjGrad_00t30B00B00B
+    249,   // imageAtomicOr_01E20D00D
+    250,   // imageAtomicOr_01E20D00E
+    251,   // texelFetchOffset_00a20D00D10D
+    253,   // imageLoad_01V20D00D
+    254,   // not_20F
+    256,   // imageAtomicExchange_01F20D00D
+    257,   // imageAtomicMax_01Q10D00D00D
+    258,   // imageAtomicMax_01Q10D00D00E
+    259,   // imageAtomicExchange_01F20D00B
+    260,   // imageStore_01L00D30D
+    261,   // outerProduct_20B20B
+    263,   // textureProjLodOffset_00R20B00B10D
+    265,   // textureOffset_00p10B00D
+    266,   // texture_00h20B
+    267,   // imageAtomicXor_01B20D00D
+    268,   // imageAtomicXor_01B20D00E
+    269,   // textureProjGrad_00J30B20B20B
+    271,   // imageAtomicOr_01R10D00D00E
+    272,   // imageAtomicOr_01R10D00D00D
+    273,   // textureLod_00X10B00B
+    275,   // gl_InvocationID
+    276,   // imageAtomicAnd_01R10D00D00D
+    277,   // imageAtomicAdd_01E20D00E
+    278,   // radians_10B
+    280,   // textureGatherOffset_00n10B00B10D
+    281,   // noise2_10B
+    282,   // textureQueryLod_00a10B
+    283,   // textureGather_00e20B00B
+    285,   // distance_10B10B
+    287,   // textureGrad_00Z20B20B20B
+    289,   // sign_00B
+    291,   // bitfieldReverse_00D
+    293,   // bitfieldReverse_00E
+    295,   // bitfieldExtract_30E00D00D
+    297,   // textureLod_00I10B00B
+    299,   // greaterThanEqual_10D10D
+    301,   // imageStore_01f00D30B
+    302,   // imageAtomicCompSwap_01I20D00E00E
+    303,   // degrees_30B
+    305,   // inversesqrt_30B
+    307,   // inversesqrt_30C
+    308,   // imageAtomicMin_01I20D00D
+    309,   // textureGather_00v20B00D
+    310,   // intBitsToFloat_20D
+    312,   // exp_20B
+    314,   // imageAtomicMax_01A10D00E
+    315,   // imageAtomicMax_01A10D00D
+    316,   // acosh_00B
+    318,   // log_10B
+    320,   // textureProjLodOffset_00S30B00B20D
+    322,   // textureGather_00L20B
+    324,   // textureProj_00n30B
+    325,   // textureQueryLod_00i00B
+    326,   // texture_00p20B
+    327,   // outerProduct_30B20B
+    329,   // texture_00S20B
+    331,   // atomicXor_00D00D
+    333,   // texelFetch_00Y20D00D
+    335,   // imageAtomicOr_01P10D00D
+    336,   // imageAtomicOr_01P10D00E
+    337,   // imageAtomicXor_01N10D00E
+    338,   // imageAtomicXor_01N10D00D
+    339,   // bitfieldExtract_10D00D00D
+    341,   // sign_30B
+    343,   // sign_30C
+    344,   // sign_30D
+    346,   // texture_00Y20B00B
+    348,   // dFdy_20B
+    351,   // textureProj_00Y30B
+    353,   // textureOffset_00X10B10D00B
+    355,   // memoryBarrierBuffer_
+    357,   // isinf_00B
+    359,   // isinf_00C
+    360,   // clamp_20D00D00D
+    362,   // texture2DProj_00I20B00B
+    364,   // mod_30B00B
+    366,   // imageAtomicAnd_01A10D00E
+    367,   // textureGatherOffsets_00O10B70D00D
+    368,   // textureGather_00f20B00B
+    370,   // textureProj_00m30B
+    371,   // greaterThan_20E20E
+    373,   // textureProjLod_00I30B00B
+    375,   // refract_00B00B00B
+    377,   // gl_MaxGeometryImageUniforms
+    378,   // imageAtomicMin_00y10D00D
+    379,   // imageAtomicMin_00y10D00E
+    380,   // imageAtomicMin_01X10D00D
+    381,   // imageAtomicMin_01X10D00E
+    382,   // textureSize_00e00D
+    384,   // texelFetch_00a20D00D
+    386,   // step_00C10C
+    387,   // frexp_30B30D
+    389,   // imageAtomicMin_01Y10D00E
+    390,   // texture_00t00B00B
+    391,   // min_30C00C
+    392,   // imageAtomicCompSwap_01X10D00E00E
+    393,   // texture_00I10B
+    395,   // gl_InstanceID
+    397,   // normalize_20B
+    399,   // normalize_20C
+    400,   // imageAtomicCompSwap_01H20D00D00D
+    401,   // inverse_F0B
+    403,   // imageLoad_01K00D
+    404,   // frexp_20C20D
+    405,   // atan_00B
+    407,   // textureGatherOffset_00R10B10D00D
+    409,   // imageAtomicMin_01h00D00E
+    410,   // imageAtomicMin_01h00D00D
+    411,   // greaterThan_30E30E
+    413,   // imageStore_01U20D00D30D
+    414,   // texelFetchOffset_00p10D00D00D
+    415,   // imageAtomicAnd_01J20D00D
+    416,   // imageAtomicAnd_01J20D00E
+    417,   // gl_DepthRange
+    419,   // imageAtomicMax_01S10D00D00D
+    420,   // imageAtomicCompSwap_01K00D00D00D
+    421,   // textureProj_00o30B
+    422,   // imageAtomicAdd_01I20D00E
+    423,   // bitfieldExtract_20D00D00D
+    425,   // texture_00L20B00B
+    427,   // imageAtomicOr_01L00D00E
+    428,   // imageAtomicOr_01L00D00D
+    429,   // mix_30D30D30F
+    430,   // imageAtomicExchange_01Z20D00B
+    431,   // imageAtomicExchange_01Z20D00E
+    432,   // imageAtomicExchange_01Z20D00D
+    433,   // imageAtomicExchange_01f00D00E
+    434,   // imageAtomicExchange_01f00D00D
+    435,   // imageLoad_01h00D
+    436,   // imageAtomicCompSwap_01E20D00E00E
+    437,   // textureProjOffset_00O30B10D
+    438,   // floor_10B
+    440,   // floor_10C
+    441,   // imageAtomicMax_01R10D00D00E
+    442,   // imageAtomicMax_01R10D00D00D
+    443,   // textureProjLodOffset_00o10B00B00D
+    444,   // textureGather_00x30B00D
+    445,   // interpolateAtSample_10B00D
+    446,   // imageAtomicMin_01F20D00E
+    447,   // imageAtomicMin_01F20D00D
+    448,   // outerProduct_10B30B
+    450,   // imageAtomicCompSwap_01O10D00E00E
+    451,   // cos_00B
+    453,   // imageAtomicXor_01F20D00E
+    454,   // frexp_00C00D
+    455,   // atomicCounterCompSwap_00G00E00E
+    456,   // textureOffset_00a20B10D00B
+    458,   // textureGather_00X10B
+    460,   // textureOffset_00R10B10D00B
+    462,   // textureGatherOffset_00d10B00B10D
+    464,   // gl_MaxFragmentImageUniforms
+    466,   // textureSize_00i00D
+    467,   // equal_20E20E
+    469,   // uaddCarry_00E00E00E
+    471,   // textureQueryLod_00T20B
+    472,   // textureCube_00K20B
+    474,   // imageAtomicMax_01U20D00D00E
+    475,   // imageAtomicMax_01U20D00D00D
+    476,   // matrixCompMult_90B90B
+    477,   // imageAtomicMin_01T20D00D00D
+    478,   // imageAtomicMin_01T20D00D00E
+    479,   // textureGradOffset_00p10B00B00B00D
+    480,   // textureProjLodOffset_00g30B00B00D
+    481,   // clamp_30E00E00E
+    483,   // asin_00B
+    485,   // textureProjOffset_00J30B20D00B
+    487,   // imageLoad_01W10D
+    488,   // texelFetch_00w00D
+    489,   // imageAtomicExchange_01b20D00B
+    490,   // notEqual_30E30E
+    492,   // lessThanEqual_10E10E
+    494,   // inversesqrt_20C
+    495,   // inversesqrt_20B
+    497,   // textureLod_00i20B00B
+    498,   // textureOffset_00u10B00D00B
+    499,   // reflect_00C00C
+    500,   // atomicAdd_00E00E
+    502,   // intBitsToFloat_30D
+    504,   // textureProjGradOffset_00v20B10B10B10D
+    505,   // textureGrad_00X10B10B10B
+    507,   // greaterThanEqual_30E30E
+    509,   // mix_20B20B20F
+    511,   // gl_MaxVertexAtomicCounters
+    513,   // mix_20B20B20B
+    515,   // any_10F
+    517,   // textureProjGradOffset_00d30B10B10B10D
+    519,   // imageLoad_01X10D
+    520,   // textureProjOffset_00I30B10D
+    522,   // imageAtomicExchange_01W10D00B
+    523,   // imageAtomicExchange_01W10D00E
+    524,   // imageAtomicExchange_01W10D00D
+    525,   // textureOffset_00X10B10D
+    527,   // imageAtomicXor_01K00D00E
+    528,   // texture_00R10B
+    530,   // imageAtomicAnd_01Z20D00E
+    531,   // imageStore_01M00D30E
+    532,   // radians_00B
+    534,   // imageStore_01Y10D30E
+    535,   // step_10B10B
+    537,   // gl_MaxDualSourceDrawBuffersEXT
+    538,   // imageAtomicAdd_01Y10D00D
+    539,   // imageAtomicAdd_01Y10D00E
+    540,   // bitfieldReverse_10E
+    542,   // bitfieldReverse_10D
+    544,   // imageStore_01g00D30D
+    545,   // textureProjGradOffset_00q20B10B10B10D
+    546,   // imageAtomicExchange_01S10D00D00E
+    547,   // atomicXor_00E00E
+    549,   // mix_00C00C00F
+    550,   // textureLodOffset_00g00B00B00D
+    551,   // greaterThan_30B30B
+    553,   // gl_MaxFragmentAtomicCounters
+    555,   // faceforward_20B20B20B
+    557,   // textureSize_00x00D
+    558,   // textureProj_00S30B00B
+    560,   // fma_20B20B20B
+    561,   // textureProjLod_00o10B00B
+    562,   // imageAtomicMin_01J20D00E
+    563,   // outerProduct_30B30B
+    565,   // exp_30B
+    567,   // bitCount_10E
+    569,   // bitCount_10D
+    571,   // log_00B
+    573,   // mix_00F00F00F
+    574,   // imageAtomicCompSwap_01M00D00D00D
+    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,   // textureOffset_00n20B10D
+    666,   // atan_30B
+    668,   // textureGatherOffsets_00R10B70D00D
+    669,   // imageAtomicMax_01b20D00D
+    670,   // ceil_10B
+    672,   // textureSize_00S00D
+    674,   // imageAtomicExchange_01S10D00D00B
+    675,   // atomicCounterDecrement_00G
+    677,   // ceil_30B
+    679,   // textureSize_00t00D
+    680,   // memoryBarrier_
+    682,   // texture_00f30B
+    684,   // imageSamples_01R
+    685,   // texelFetch_00R10D00D
+    687,   // sign_20B
+    689,   // smoothstep_30B30B30B
+    691,   // textureGrad_00R10B10B10B
+    693,   // min_00D00D
+    695,   // textureProj_00t10B00B
+    696,   // imageAtomicCompSwap_01W10D00E00E
+    697,   // imageAtomicAdd_01V20D00D00E
+    698,   // ldexp_20B20D
+    700,   // greaterThanEqual_30D30D
+    702,   // imageLoad_01D20D
+    704,   // findLSB_10E
+    706,   // texture_00Z20B00B
+    708,   // imageAtomicXor_01S10D00D00E
+    709,   // imageAtomicXor_01S10D00D00D
+    710,   // cos_10B
+    712,   // texelFetch_00v10D
+    713,   // texture_00e30B
+    715,   // imageStore_01W10D30B
+    716,   // textureSize_00T00D
+    718,   // imageAtomicAnd_01g00D00E
+    719,   // textureSize_00u00D
+    720,   // textureProjGradOffset_00Y30B20B20B20D
+    722,   // noise3_30B
+    723,   // textureGrad_00T20B20B20B
+    725,   // texture1DProj_00g10B00B
+    726,   // textureProjOffset_00d30B10D00B
+    728,   // textureGatherOffsets_00X10B70D
+    729,   // imageAtomicXor_01U20D00D00D
+    730,   // imageAtomicXor_01U20D00D00E
+    731,   // imageAtomicAdd_01h00D00D
+    732,   // imageAtomicAdd_01h00D00E
+    733,   // matrixCompMult_50B50B
+    735,   // equal_30B30B
+    737,   // imageAtomicExchange_01E20D00B
+    738,   // textureLod_00U20B00B
+    740,   // imageAtomicXor_01I20D00E
+    741,   // imageAtomicXor_01I20D00D
+    742,   // textureOffset_00h10B00D
+    743,   // textureLod_00p10B00B
+    744,   // max_20C20C
+    745,   // max_10B10B
+    747,   // gl_PointSize
+    749,   // imageAtomicCompSwap_01B20D00E00E
+    750,   // asin_10B
+    752,   // sinh_00B
+    754,   // imageAtomicAdd_01g00D00D
+    755,   // imageAtomicCompSwap_01h00D00E00E
+    756,   // textureOffset_00S20B20D
+    758,   // fma_20C20C20C
+    759,   // imageAtomicCompSwap_01N10D00D00D
+    760,   // textureProj_00R20B
+    762,   // greaterThan_10E10E
+    764,   // imageAtomicAnd_01M00D00E
+    765,   // imageAtomicAnd_01M00D00D
+    766,   // EmitVertex_
+    768,   // smoothstep_20B20B20B
+    770,   // textureSamples_00b
+    771,   // textureOffset_00J20B20D
+    773,   // texelFetch_00J20D00D
+    775,   // imageAtomicExchange_01V20D00D00E
+    776,   // imageAtomicExchange_01V20D00D00B
+    777,   // imageAtomicCompSwap_01Y10D00E00E
+    778,   // imageAtomicExchange_00y10D00B
+    779,   // imageAtomicExchange_00y10D00D
+    780,   // imageAtomicExchange_00y10D00E
+    781,   // gl_ViewID_OVR
+    782,   // radians_30B
+    784,   // fract_30B
+    786,   // imageAtomicAdd_01B20D00D
+    787,   // imageAtomicAdd_01B20D00E
+    788,   // imageAtomicMin_01H20D00E
+    789,   // uaddCarry_20E20E20E
+    791,   // textureProjGrad_00X30B10B10B
+    793,   // textureSamples_00P
+    794,   // textureProjOffset_00v20B10D
+    795,   // shadow2D_00d20B00B
+    796,   // texelFetchOffset_00o00D00D00D
+    797,   // textureSamples_00V
+    798,   // textureSamples_00W
+    799,   // textureProjGrad_00q30B10B10B
+    800,   // textureGatherOffset_00O10B10D
+    801,   // clamp_10D00D00D
+    803,   // gl_MaxComputeImageUniforms
+    805,   // textureLod_00L20B00B
+    807,   // imageAtomicExchange_01A10D00B
+    808,   // imageAtomicCompSwap_01V20D00D00D00D
+    809,   // imageAtomicExchange_01A10D00E
+    810,   // imageAtomicExchange_01A10D00D
+    811,   // imageAtomicXor_01b20D00D
+    812,   // texture_00n20B
+    813,   // ldexp_20C20D
+    814,   // clamp_00E00E00E
+    816,   // length_20B
+    818,   // ldexp_00B00D
+    820,   // imageAtomicExchange_01N10D00E
+    821,   // bitfieldInsert_00D00D00D00D
+    823,   // textureProjGrad_00Y30B20B20B
+    825,   // roundEven_30B
+    827,   // roundEven_30C
+    828,   // acosh_20B
+    830,   // atanh_10B
+    832,   // length_20C
+    833,   // clamp_10B10B10B
+    835,   // textureGatherOffset_00L20B10D00D
+    837,   // bitCount_00D
+    839,   // bitCount_00E
+    841,   // imageAtomicExchange_01N10D00B
+    842,   // floatBitsToInt_30B
+    844,   // max_20B00B
+    846,   // imageAtomicAdd_00z10D00D
+    847,   // texelFetchOffset_00Y20D00D20D
+    849,   // atomicExchange_00E00E
+    851,   // imageAtomicXor_01h00D00D
+    852,   // imageAtomicXor_01h00D00E
+    853,   // ldexp_30C30D
+    854,   // texture_00o00B
+    855,   // textureGatherOffsets_00X10B70D00D
+    856,   // lessThanEqual_20B20B
+    858,   // min_10B00B
+    860,   // textureQueryLod_00f10B
+    861,   // smoothstep_10C10C10C
+    862,   // textureGatherOffsets_00U20B70D
+    863,   // imageAtomicAnd_01L00D00D
+    864,   // imageAtomicAnd_01L00D00E
+    865,   // mix_30F30F30F
+    866,   // abs_20D
+    868,   // abs_20C
+    869,   // abs_20B
+    871,   // lessThanEqual_10B10B
+    873,   // imageAtomicOr_01f00D00E
+    874,   // imageAtomicOr_01f00D00D
+    875,   // imageAtomicOr_01a20D00D
+    876,   // mix_00B00B00B
+    878,   // mix_00B00B00F
+    880,   // textureGather_00s30B00D
+    881,   // textureProj_00I20B
+    883,   // imageAtomicExchange_01B20D00B
+    884,   // textureLodOffset_00p10B00B00D
+    885,   // gl_MaxVertexAtomicCounterBuffers
+    887,   // unpackDouble2x32_00C
+    888,   // acos_00B
+    890,   // textureGradOffset_00J20B20B20B20D
+    892,   // fma_00C00C00C
+    893,   // texture2DGradEXT_00I10B10B10B
+    894,   // imageAtomicCompSwap_01G20D00D00D
+    895,   // imageAtomicAnd_01I20D00D
+    896,   // texture2DProjGradEXT_00I30B10B10B
+    897,   // fma_30B30B30B
+    898,   // imageAtomicAdd_01L00D00D
+    899,   // texture_00i20B00B
+    900,   // gl_MaxComputeWorkGroupCount
+    902,   // clamp_20C00C00C
+    903,   // imageAtomicMax_01X10D00E
+    904,   // imageAtomicCompSwap_00y10D00E00E
+    905,   // mix_30E30E30F
+    906,   // imageAtomicMax_01b20D00E
+    907,   // imageAtomicMin_01G20D00D
+    908,   // imageAtomicMin_01G20D00E
+    909,   // textureGatherOffsets_00I10B70D
+    910,   // imageAtomicExchange_01S10D00D00D
+    911,   // atan_20B
+    913,   // imageAtomicCompSwap_01Z20D00E00E
+    914,   // interpolateAtSample_30B00D
+    915,   // dFdxCoarse_30B
+    916,   // texture_00M10B
+    917,   // min_10B10B
+    919,   // textureLodOffset_00h10B00B00D
+    920,   // EndStreamPrimitive_00D
+    921,   // pow_10B10B
+    923,   // texture_00Y20B
+    925,   // imageAtomicXor_01P10D00D
+    926,   // texture_00X10B00B
+    928,   // frexp_00B00D
+    930,   // texture2D_00I10B
+    932,   // imageLoad_01O10D
+    933,   // ceil_20C
+    934,   // ceil_20B
+    936,   // imageAtomicMin_01b20D00E
+    937,   // imageAtomicMin_01b20D00D
+    938,   // imageAtomicMax_01P10D00D
+    939,   // imageAtomicMax_01P10D00E
+    940,   // imageAtomicExchange_01P10D00B
+    941,   // textureProjOffset_00R20B10D
+    943,   // imageStore_01V20D00D30E
+    944,   // imageAtomicCompSwap_01T20D00D00E00E
+    945,   // subpassLoad_01m00D
+    946,   // textureOffset_00I10B10D
+    948,   // min_20B00B
+    950,   // reflect_00B00B
+    952,   // noise4_10B
+    953,   // sqrt_10C
+    954,   // sqrt_10B
+    956,   // imageAtomicXor_01Z20D00D
+    957,   // imageAtomicXor_01Z20D00E
+    958,   // clamp_20E20E20E
+    960,   // textureGradOffset_00g00B00B00B00D
+    961,   // textureGather_00q20B
+    962,   // noise3_00B
+    963,   // imageAtomicOr_01G20D00D
+    964,   // imageAtomicOr_01G20D00E
+    965,   // imageAtomicMin_01C20D00D
+    966,   // imageAtomicMin_01C20D00E
+    967,   // imageAtomicAnd_01F20D00E
+    968,   // textureProjLod_00d30B00B
+    970,   // imageStore_01a20D30D
+    971,   // imageLoad_01H20D
+    973,   // textureProjGradOffset_00I20B10B10B10D
+    975,   // interpolateAtSample_20B00D
+    976,   // reflect_10B10B
+    978,   // refract_10B10B00B
+    980,   // imageAtomicMax_01h00D00D
+    981,   // mix_20C20C20F
+    982,   // imageAtomicExchange_01X10D00D
+    983,   // imageAtomicExchange_01X10D00E
+    984,   // mix_20C20C20C
+    985,   // textureOffset_00v10B10D
+    986,   // imageAtomicMin_01P10D00D
+    987,   // sinh_30B
+    989,   // textureSize_00m00D
+    990,   // textureQueryLod_00e20B
+    991,   // asinh_20B
+    993,   // imageAtomicAdd_01C20D00D
+    994,   // imageAtomicCompSwap_01I20D00D00D
+    995,   // textureProj_00O20B
+    997,   // imageAtomicCompSwap_01M00D00E00E
+    998,   // frexp_10B10D
+    1000,  // inverse_50B
+    1002,  // dot_10B10B
+    1004,  // imageAtomicExchange_01T20D00D00D
+    1005,  // imageAtomicExchange_01T20D00D00E
+    1006,  // noise2_00B
+    1007,  // textureProjGradOffset_00o10B00B00B00D
+    1008,  // radians_20B
+    1010,  // atomicCompSwap_00E00E00E
+    1012,  // textureGrad_00I00B00B00B
+    1013,  // textureGrad_00Y20B20B20B
+    1015,  // gl_MaxVertexUniformVectors
+    1017,  // textureOffset_00o00B00D00B
+    1018,  // ftransform_
+    1019,  // textureProj_00X20B
+    1021,  // textureProjOffset_00n30B10D
+    1022,  // gl_MaxGeometryUniformComponents
+    1023,  // greaterThanEqual_20E20E
+    1025,  // textureProj_00M20B
+    1026,  // texture3DProjLod_00J30B00B
+    1028,  // isinf_30C
+    1029,  // imageAtomicAdd_01S10D00D00D
+    1030,  // mix_10D10D10F
+    1031,  // textureProjGrad_00g10B00B00B
+    1032,  // log_20B
+    1034,  // imageAtomicMax_01D20D00E
+    1035,  // imageAtomicMax_01D20D00D
+    1036,  // textureOffset_00h10B00D00B
+    1037,  // modf_30B30B
+    1039,  // roundEven_20C
+    1040,  // roundEven_20B
+    1042,  // outerProduct_30B10B
+    1044,  // textureProj_00J30B
+    1046,  // imageAtomicOr_00y10D00D
+    1047,  // imageAtomicOr_00y10D00E
+    1048,  // imageAtomicOr_01F20D00E
+    1049,  // imageAtomicOr_01F20D00D
+    1050,  // textureLodOffset_00t00B00B00D
+    1051,  // floatBitsToInt_20B
+    1053,  // texelFetch_00U20D00D
+    1055,  // max_00D00D
+    1057,  // atomicMin_00E00E
+    1059,  // imageAtomicMin_01Q10D00D00D
+    1060,  // imageAtomicMin_01Q10D00D00E
+    1061,  // textureGradOffset_00v10B10B10B10D
+    1062,  // textureGrad_00n20B10B10B
+    1063,  // imageLoad_01S10D00D
+    1064,  // max_20E20E
+    1066,  // imageAtomicCompSwap_01F20D00D00D
+    1067,  // abs_10D
+    1069,  // abs_10B
+    1071,  // abs_10C
+    1072,  // gl_FragDepthEXT
+    1073,  // imageAtomicAdd_01V20D00D00D
+    1074,  // modf_30C30C
+    1075,  // imageAtomicExchange_01g00D00E
+    1076,  // textureGrad_00i20B00B00B
+    1077,  // textureProj_00g10B
+    1078,  // equal_20B20B
+    1080,  // textureProjLodOffset_00X20B00B10D
+    1082,  // max_30C00C
+    1083,  // imageAtomicMax_01W10D00D
+    1084,  // textureGatherOffsets_00a20B70D00D
+    1085,  // texture_00U20B00B
+    1087,  // textureProj_00I30B
+    1089,  // mix_00E00E00F
+    1090,  // imageAtomicCompSwap_01h00D00D00D
+    1091,  // mix_00D00D00F
+    1092,  // textureProjOffset_00q20B10D
+    1093,  // texture_00i20B
+    1094,  // textureGradOffset_00a20B10B10B10D
+    1096,  // smoothstep_00B00B20B
+    1098,  // textureLod_00s30B00B
+    1099,  // imageAtomicOr_01C20D00D
+    1100,  // imageAtomicOr_01C20D00E
+    1101,  // imageAtomicXor_01g00D00E
+    1102,  // notEqual_30B30B
+    1104,  // imageAtomicCompSwap_01W10D00D00D
+    1105,  // textureGatherOffset_00f20B00B10D
+    1107,  // imageLoad_01T20D00D
+    1108,  // imageSize_00y
+    1110,  // imageAtomicMin_01W10D00E
+    1111,  // imageSize_00z
+    1113,  // mod_10C10C
+    1114,  // imageAtomicXor_01g00D00D
+    1115,  // faceforward_00C00C00C
+    1116,  // textureGrad_00a20B10B10B
+    1118,  // imageAtomicXor_01R10D00D00D
+    1119,  // imageAtomicXor_01T20D00D00E
+    1120,  // dFdxCoarse_00B
+    1121,  // imageAtomicMin_01a20D00D
+    1122,  // texture_00J20B00B
+    1124,  // refract_20B20B00B
+    1126,  // ceil_30C
+    1127,  // gl_MaxGeometryOutputComponents
+    1128,  // noise1_30B
+    1129,  // log2_30B
+    1131,  // textureProjGrad_00d30B10B10B
+    1133,  // mod_20C20C
+    1134,  // fract_30C
+    1135,  // texelFetch_00t00D00D
+    1136,  // imageAtomicXor_01L00D00D
+    1137,  // max_30E30E
+    1139,  // gl_MaxFragmentAtomicCounterBuffers
+    1141,  // gl_in
+    1142,  // noise4_00B
+    1143,  // distance_10C10C
+    1144,  // textureProjLodOffset_00J30B00B20D
+    1146,  // imageAtomicMax_01H20D00E
+    1147,  // imageAtomicMax_01H20D00D
+    1148,  // imageStore_01h00D30E
+    1149,  // textureGatherOffsets_00d10B00B70D
+    1150,  // texelFetch_00c20D00D
+    1152,  // sqrt_00B
+    1154,  // sqrt_00C
+    1155,  // textureProjLod_00R30B00B
+    1157,  // noise3_10B
+    1158,  // texelFetch_00q10D
+    1159,  // imageAtomicAnd_01F20D00D
+    1160,  // textureLod_00m20B00B
+    1161,  // textureProjOffset_00m30B00D00B
+    1162,  // textureProjGrad_00v30B10B10B
+    1163,  // clamp_20D20D20D
+    1165,  // imageAtomicMin_01P10D00E
+    1166,  // imageAtomicAdd_01C20D00E
+    1167,  // clamp_00C00C00C
+    1168,  // imageAtomicCompSwap_01b20D00E00E
+    1169,  // max_10E00E
+    1171,  // textureGrad_00U20B10B10B
+    1173,  // imageAtomicCompSwap_01B20D00D00D
+    1174,  // imageLoad_00z10D
+    1176,  // clamp_30C00C00C
+    1177,  // sinh_20B
+    1179,  // matrixCompMult_E0BE0B
+    1180,  // fwidthFine_00B
+    1181,  // gl_PerVertex
+    1182,  // textureGradOffset_00m20B00B00B00D
+    1183,  // textureQueryLevels_00p
+    1184,  // gl_WorkGroupSize
+    1186,  // asinh_30B
+    1188,  // cross_20C20C
+    1189,  // textureGather_00a20B
+    1191,  // textureProjGradOffset_00O20B10B10B10D
+    1192,  // pow_30B30B
+    1194,  // imageAtomicCompSwap_01G20D00E00E
+    1195,  // smoothstep_10B10B10B
+    1197,  // textureProj_00O30B
+    1199,  // imageAtomicAdd_01Q10D00D00E
+    1200,  // textureQueryLod_00R10B
+    1201,  // imageAtomicCompSwap_01T20D00D00D00D
+    1202,  // imageAtomicAdd_01R10D00D00D
+    1203,  // imageAtomicAdd_01R10D00D00E
+    1204,  // imageAtomicExchange_01E20D00D
+    1205,  // imageAtomicExchange_01E20D00E
+    1206,  // isnan_00B
+    1208,  // isnan_00C
+    1209,  // imulExtended_10D10D10D10D
+    1211,  // textureProjGrad_00o10B00B00B
+    1212,  // refract_10C10C00B
+    1213,  // min_00E00E
+    1215,  // texture2DProj_00I30B
+    1217,  // textureGradOffset_00I10B10B10B10D
+    1219,  // textureLodOffset_00J20B00B20D
+    1221,  // notEqual_20B20B
+    1223,  // atomicCompSwap_00D00D00D
+    1225,  // imageAtomicOr_01W10D00E
+    1226,  // imageAtomicOr_01W10D00D
+    1227,  // textureOffset_00i20B00D
+    1228,  // dFdyFine_00B
+    1229,  // textureLod_00a20B00B
+    1231,  // textureProj_00N30B
+    1232,  // refract_30C30C00B
+    1233,  // equal_30D30D
+    1235,  // packSnorm2x16_10B
+    1237,  // floatBitsToUint_30B
+    1239,  // imageLoad_00y10D
+    1241,  // textureOffset_00R10B10D
+    1243,  // textureProjGrad_00q20B10B10B
+    1244,  // textureProjGradOffset_00R20B10B10B10D
+    1246,  // ldexp_30B30D
+    1248,  // max_30B00B
+    1250,  // imageAtomicAdd_01Q10D00D00D
+    1251,  // atomicCounterOr_00G00E
+    1252,  // step_30B30B
+    1254,  // imageAtomicOr_01T20D00D00D
+    1255,  // imageAtomicOr_01T20D00D00E
+    1256,  // textureProj_00I30B00B
+    1258,  // imageAtomicExchange_01D20D00E
+    1259,  // textureOffset_00g00B00D00B
+    1260,  // imageAtomicExchange_01D20D00B
+    1261,  // imageAtomicMin_01g00D00E
+    1262,  // abs_00D
+    1264,  // abs_00C
+    1265,  // abs_00B
+    1267,  // textureLod_00R10B00B
+    1269,  // dFdxCoarse_10B
+    1270,  // texture1D_00g00B
+    1271,  // frexp_10C10D
+    1272,  // imageAtomicMax_01B20D00D
+    1273,  // imageAtomicAdd_01g00D00E
+    1274,  // texture2DLod_00I10B00B
+    1276,  // textureProjGradOffset_00X20B10B10B10D
+    1278,  // round_20C
+    1279,  // EndPrimitive_
+    1281,  // step_00B30B
+    1283,  // round_20B
+    1285,  // equal_30E30E
+    1287,  // imageAtomicCompSwap_01R10D00D00E00E
+    1288,  // step_00C20C
+    1289,  // dot_00C00C
+    1290,  // max_30C30C
+    1291,  // atomicOr_00D00D
+    1293,  // texture2DProj_00M20B
+    1294,  // notEqual_10D10D
+    1296,  // textureSize_00V
+    1299,  // imageAtomicAnd_01h00D00D
+    1300,  // min_20C00C
+    1301,  // imageAtomicAdd_01G20D00E
+    1302,  // imageAtomicAdd_01G20D00D
+    1303,  // findLSB_30D
+    1305,  // findLSB_30E
+    1307,  // textureProj_00X20B00B
+    1309,  // shadow2D_00d20B
+    1310,  // imageAtomicAdd_01N10D00E
+    1311,  // imageAtomicAdd_01N10D00D
+    1312,  // textureGatherOffset_00U20B10D
+    1314,  // faceforward_10B10B10B
+    1316,  // imageAtomicAnd_01h00D00E
+    1317,  // min_10D00D
+    1319,  // imageAtomicOr_01B20D00E
+    1320,  // imageAtomicOr_01B20D00D
+    1321,  // EmitStreamVertex_00D
+    1322,  // imageAtomicCompSwap_01J20D00D00D
+    1323,  // all_20F
+    1325,  // imageSize_01J
+    1327,  // imageSize_01K
+    1328,  // imageSize_01H
+    1330,  // imageSize_01I
+    1332,  // packHalf2x16_10B
+    1334,  // textureProj_00I20B00B
+    1336,  // imageSize_01L
+    1337,  // imageSize_01M
+    1338,  // imageSize_01B
+    1340,  // imageSize_01C
+    1342,  // imageSize_01A
+    1344,  // imageSize_01F
+    1346,  // imageSize_01G
+    1348,  // imageSize_01D
+    1350,  // imageSize_01E
+    1352,  // imageSize_01Z
+    1353,  // imageAtomicExchange_01L00D00B
+    1354,  // imageAtomicMax_01Z20D00E
+    1355,  // texelFetch_00X10D00D
+    1357,  // notEqual_30F30F
+    1359,  // imageSize_01R
+    1360,  // imageSize_01S
+    1361,  // imageSize_01P
+    1362,  // imageSize_01Q
+    1363,  // imageSize_01V
+    1364,  // textureQueryLod_00g00B
+    1365,  // imageSize_01T
+    1366,  // imageSize_01U
+    1367,  // imageSize_01h
+    1368,  // fract_20C
+    1369,  // fract_20B
+    1371,  // textureGatherOffset_00X10B10D
+    1373,  // imageSize_01c
+    1374,  // imageSize_01a
+    1375,  // imageSize_01f
+    1376,  // texture2DProjGradEXT_00I20B10B10B
+    1377,  // imageSize_01d
+    1378,  // textureLod_00S20B00B
+    1380,  // step_30C30C
+    1381,  // imageAtomicMin_01J20D00D
+    1382,  // gl_FragDepth
+    1384,  // textureGather_00x30B
+    1385,  // mix_30B30B30F
+    1387,  // mix_30B30B30B
+    1389,  // textureGather_00Z20B00D
+    1391,  // noise4_30B
+    1392,  // sqrt_30C
+    1393,  // sqrt_30B
+    1395,  // imageStore_01E20D30B
+    1397,  // exp_00B
+    1399,  // max_30D30D
+    1401,  // gl_MaxGeometryTextureImageUnits
+    1402,  // interpolateAtCentroid_10B
+    1403,  // texture_00q10B
+    1404,  // textureSize_00M00D
+    1405,  // textureSamples_00c
+    1406,  // angle_BaseInstance
+    1407,  // mix_10F10F10F
+    1408,  // textureGradOffset_00U20B10B10B10D
+    1410,  // gl_Position
+    1413,  // textureGradOffset_00O10B10B10B10D
+    1414,  // textureProj_00M30B
+    1415,  // textureGradOffset_00L20B10B10B10D
+    1417,  // imageAtomicExchange_01V20D00D00D
+    1418,  // imageAtomicExchange_01J20D00B
+    1419,  // imageAtomicExchange_01J20D00E
+    1420,  // imageAtomicExchange_01J20D00D
+    1421,  // textureQueryLod_00l20B
+    1422,  // imageAtomicOr_01M00D00E
+    1423,  // dot_20B20B
+    1425,  // textureProjGrad_00v20B10B10B
+    1426,  // textureProjLod_00S30B00B
+    1428,  // textureProjGrad_00R20B10B10B
+    1430,  // imageAtomicMax_00z10D00E
+    1431,  // imageAtomicMax_00z10D00D
+    1432,  // normalize_30C
+    1433,  // normalize_30B
+    1435,  // textureOffset_00O10B10D
+    1436,  // textureProjGrad_00I20B10B10B
+    1438,  // textureGather_00e20B
+    1439,  // imageAtomicMax_01V20D00D00E
+    1440,  // texture2D_00M10B
+    1441,  // imageAtomicAdd_01a20D00E
+    1442,  // fwidthFine_30B
+    1443,  // textureGather_00K20B00D
+    1445,  // textureCubeLodEXT_00K20B00B
+    1446,  // textureGather_00T20B00D
+    1448,  // textureProj_00N20B
+    1449,  // textureQueryLod_00I10B
+    1450,  // imageAtomicCompSwap_01A10D00E00E
+    1451,  // dFdyFine_10B
+    1452,  // modf_10C10C
+    1453,  // imageAtomicMax_01E20D00D
+    1454,  // imageAtomicMax_01E20D00E
+    1455,  // textureProjLodOffset_00X30B00B10D
+    1457,  // textureProjLod_00m30B00B
+    1458,  // textureProjOffset_00g30B00D00B
+    1459,  // texelFetchOffset_00U20D00D10D
+    1461,  // imageAtomicCompSwap_00z10D00E00E
+    1462,  // imageAtomicMin_01D20D00E
+    1463,  // textureProjGradOffset_00q30B10B10B10D
+    1464,  // textureGradOffset_00d20B10B10B10D
+    1466,  // fwidthCoarse_20B
+    1467,  // textureProjOffset_00d30B10D
+    1469,  // equal_20F20F
+    1471,  // Empty
+    1471,  // mix_20C20C00C
+    1472,  // usubBorrow_10E10E10E
+    1474,  // imageStore_01S10D00D30E
+    1475,  // equal_10B10B
+    1477,  // imageAtomicExchange_01Q10D00D00D
+    1478,  // imageAtomicExchange_01Q10D00D00E
+    1479,  // imageAtomicExchange_01Q10D00D00B
+    1480,  // textureLodOffset_00U20B00B10D
+    1482,  // isnan_10C
+    1483,  // isnan_10B
+    1485,  // imageAtomicMin_01H20D00D
+    1486,  // imageAtomicXor_01A10D00D
+    1487,  // imageAtomicXor_01A10D00E
+    1488,  // imageAtomicCompSwap_01C20D00D00D
+    1489,  // textureGrad_00R00B00B00B
+    1490,  // imageAtomicXor_01W10D00D
+    1491,  // imageAtomicXor_01W10D00E
+    1492,  // atomicMin_00D00D
+    1494,  // textureSize_00X00D
+    1496,  // greaterThan_10B10B
+    1498,  // mix_00C00C00C
+    1499,  // clamp_30D00D00D
+    1501,  // mix_20E20E20F
+    1502,  // floatBitsToInt_10B
+    1504,  // textureProjOffset_00R30B10D00B
+    1506,  // textureGather_00U20B00D
+    1508,  // floatBitsToInt_00B
+    1510,  // imageLoad_01a20D
+    1511,  // floatBitsToUint_00B
+    1513,  // min_30C30C
+    1514,  // textureSamples_00Q
+    1515,  // textureGradOffset_00i20B00B00B00D
+    1516,  // imageAtomicXor_00z10D00D
+    1517,  // texture2DRectProj_00O20B
+    1518,  // modf_20C20C
+    1519,  // tan_20B
+    1521,  // floor_00C
+    1522,  // floor_00B
+    1524,  // imageAtomicMax_01O10D00E
+    1525,  // imageAtomicMax_01O10D00D
+    1526,  // mod_30C30C
+    1527,  // gl_DrawID
+    1528,  // textureOffset_00t00B00D
+    1529,  // texture3DLod_00J20B00B
+    1531,  // texture_00R10B00B
+    1533,  // modf_00B00B
+    1535,  // notEqual_20D20D
+    1537,  // imageAtomicExchange_01R10D00D00E
+    1538,  // imageAtomicExchange_01R10D00D00D
+    1539,  // ldexp_10C10D
+    1540,  // imageAtomicXor_00y10D00E
+    1541,  // imageAtomicXor_00y10D00D
+    1542,  // determinant_A0B
+    1543,  // textureLodOffset_00i20B00B00D
+    1544,  // imageStore_01D20D30E
+    1546,  // shadow1DLod_00m20B00B
+    1547,  // imageAtomicOr_01I20D00E
+    1548,  // distance_00C00C
+    1549,  // isnan_30B
+    1551,  // textureProjOffset_00o30B00D
+    1552,  // lessThanEqual_30D30D
+    1554,  // textureProj_00M30B00B
+    1555,  // texture2DProj_00M30B
+    1556,  // atomicCounterMax_00G00E
+    1557,  // atomicCounterExchange_00G00E
+    1558,  // textureGrad_00I10B10B10B
+    1560,  // step_00B20B
+    1562,  // texture2DProjLod_00I20B00B
+    1564,  // step_00C30C
+    1565,  // yuv_2_rgb_20B00H
+    1566,  // texelFetch_00b10D00D
+    1569,  // textureProj_00J30B00B
+    1571,  // textureGather_00R10B
+    1573,  // imageAtomicCompSwap_01K00D00E00E
+    1574,  // imageAtomicOr_01V20D00D00D
+    1575,  // imageAtomicOr_01V20D00D00E
+    1576,  // imageAtomicExchange_01P10D00D
+    1577,  // imageLoad_01L00D
+    1578,  // min_10D10D
+    1580,  // all_30F
+    1582,  // imageAtomicExchange_01P10D00E
+    1583,  // imageAtomicMax_01a20D00D
+    1584,  // imageAtomicAnd_01S10D00D00E
+    1585,  // imageAtomicAnd_01S10D00D00D
+    1586,  // angle_BaseVertex
+    1587,  // bitfieldReverse_20D
+    1589,  // bitfieldReverse_20E
+    1591,  // imageAtomicExchange_01I20D00D
+    1592,  // imageAtomicExchange_01I20D00E
+    1593,  // imageAtomicExchange_01I20D00B
+    1594,  // gl_MaxGeometryInputComponents
+    1595,  // texture_00u20B
+    1596,  // textureGather_00v20B
+    1597,  // fract_10B
+    1599,  // fract_10C
+    1600,  // textureGatherOffset_00O10B10D00D
+    1601,  // textureQueryLod_00K20B
+    1602,  // textureLodOffset_00I10B00B10D
+    1604,  // imageAtomicCompSwap_01S10D00D00E00E
+    1605,  // noise4_20B
+    1606,  // textureOffset_00U20B10D
+    1608,  // min_30B00B
+    1610,  // imageAtomicMax_00y10D00D
+    1611,  // imageAtomicMax_00y10D00E
+    1612,  // atomicAnd_00D00D
+    1614,  // gl_FragColor
+    1616,  // exp_10B
+    1618,  // bitCount_30E
+    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,  // textureGatherOffsets_00n10B00B70D
+    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,  // textureProj_00q20B
+    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,  // texelFetch_00r00D
+    2068,  // imageAtomicAnd_01B20D00D
+    2069,  // max_20B20B
+    2071,  // lessThan_20E20E
+    2073,  // textureProjOffset_00g10B00D00B
+    2074,  // equal_30F30F
+    2076,  // sign_00C
+    2077,  // cosh_00B
+    2079,  // bitfieldExtract_00D00D00D
+    2081,  // imageAtomicMin_01E20D00D
+    2082,  // imageAtomicMin_01E20D00E
+    2083,  // textureLod_00Z20B00B
+    2085,  // sign_00D
+    2087,  // textureOffset_00Y20B20D
+    2089,  // transpose_60B
+    2091,  // imageAtomicExchange_01L00D00E
+    2092,  // imageAtomicAdd_01O10D00D
+    2093,  // imageAtomicAdd_01O10D00E
+    2094,  // faceforward_00B00B00B
+    2096,  // gl_NumWorkGroups
+    2098,  // imageAtomicOr_01O10D00E
+    2099,  // imageAtomicOr_01O10D00D
+    2100,  // imageAtomicAdd_01b20D00D
+    2101,  // interpolateAtCentroid_20B
+    2102,  // textureProjLodOffset_00R30B00B10D
+    2104,  // textureGrad_00h10B00B00B
+    2105,  // imageAtomicExchange_01U20D00D00B
+    2106,  // texture1DProj_00g30B00B
+    2107,  // textureQueryLod_00h00B
+    2108,  // imageAtomicExchange_01U20D00D00E
+    2109,  // modf_00C00C
+    2110,  // textureProjLod_00t30B00B
+    2111,  // textureOffset_00o00B00D
+    2112,  // imageAtomicExchange_01U20D00D00D
+    2113,  // textureGather_00U20B
+    2115,  // imageStore_01H20D30B
+    2117,  // texelFetch_00Q20D00D
+    2119,  // roundEven_00C
+    2120,  // roundEven_00B
+    2122,  // texelFetchOffset_00O10D10D
+    2123,  // atanh_20B
+    2125,  // clamp_10E00E00E
+    2127,  // dFdxFine_30B
+    2128,  // imageAtomicAdd_01L00D00E
+    2129,  // textureQueryLod_00J20B
+    2130,  // textureProjOffset_00X30B10D
+    2132,  // gl_MaxFragmentUniformVectors
+    2134,  // texture2DProjLod_00I30B00B
+    2136,  // interpolateAtOffset_10B10B
+    2137,  // max_10C10C
+    2138,  // texelFetch_00g00D00D
+    2139,  // abs_30B
+    2141,  // bitfieldInsert_10E10E00D00D
+    2143,  // packSnorm4x8_30B
+    2145,  // mix_10B10B00B
+    2147,  // imageSize_01b
+    2148,  // clamp_30D30D30D
+    2150,  // textureQueryLod_00d10B
+    2151,  // mod_10C00C
+    2152,  // imageAtomicMax_01G20D00D
+    2153,  // imageAtomicMax_01G20D00E
+    2154,  // imageStore_01R10D00D30D
+    2155,  // determinant_F0B
+    2156,  // transpose_A0B
+    2158,  // pow_20B20B
+    2160,  // imageSize_01g
+    2161,  // imageAtomicExchange_01G20D00B
+    2162,  // imageSize_01e
+    2163,  // imageAtomicExchange_01G20D00D
+    2164,  // imageAtomicExchange_01G20D00E
+    2165,  // imageLoad_01Y10D
+    2166,  // imageAtomicMax_01g00D00D
+    2167,  // imageAtomicMax_01g00D00E
+    2168,  // textureProj_00v30B
+    2169,  // textureProjGrad_00O20B10B10B
+    2170,  // log2_20B
+    2172,  // dot_30C30C
+    2173,  // fwidthCoarse_10B
+    2174,  // textureProjOffset_00I20B10D00B
+    2176,  // textureGatherOffsets_00U20B70D00D
+    2177,  // notEqual_10F10F
+    2179,  // textureGatherOffsets_00O10B70D
+    2180,  // smoothstep_00B00B00B
+    2182,  // textureProjLodOffset_00d30B00B10D
+    2184,  // imageAtomicAnd_01P10D00E
+    2185,  // imageAtomicAnd_01P10D00D
+    2186,  // textureProjLodOffset_00I30B00B10D
+    2188,  // gl_MaxCombinedAtomicCounters
+    2190,  // bitfieldInsert_10D10D00D00D
+    2192,  // imageAtomicAdd_00y10D00E
+    2193,  // imageAtomicAdd_00y10D00D
+    2194,  // imageAtomicAnd_01Q10D00D00E
+    2195,  // imageAtomicAnd_01Q10D00D00D
+    2196,  // imageAtomicCompSwap_01L00D00D00D
+    2197,  // textureGather_00k30B
+    2198,  // texture_00J20B
+    2200,  // lessThanEqual_10D10D
+    2202,  // textureProjOffset_00o30B00D00B
+    2203,  // gl_MaxVaryingVectors
+    2205,  // textureSize_00d00D
+    2207,  // sin_00B
+    2209,  // imageLoad_01N10D
+    2210,  // uaddCarry_10E10E10E
+    2212,  // imageAtomicOr_01Z20D00E
+    2213,  // imageAtomicOr_01Z20D00D
+    2214,  // mix_10C10C00C
+    2215,  // atomicCounterIncrement_00G
+    2217,  // imageAtomicAdd_01J20D00D
+    2218,  // imageAtomicAdd_01J20D00E
+    2219,  // imageAtomicCompSwap_01S10D00D00D00D
+    2220,  // imageAtomicMax_01W10D00E
+    2221,  // textureProj_00o10B00B
+    2222,  // imageAtomicAdd_01U20D00D00D
+    2223,  // imageAtomicAdd_01U20D00D00E
+    2224,  // textureProjOffset_00m30B00D
+    2225,  // imageAtomicExchange_01Y10D00B
+    2226,  // equal_10E10E
+    2228,  // imageAtomicExchange_01Y10D00E
+    2229,  // imageAtomicExchange_01Y10D00D
+    2230,  // imageAtomicExchange_01O10D00B
+    2231,  // imageAtomicExchange_01O10D00E
+    2232,  // textureProjOffset_00J30B20D
+    2234,  // imageAtomicXor_01D20D00D
+    2235,  // imageAtomicXor_01D20D00E
+    2236,  // notEqual_10E10E
+    2238,  // min_10C10C
+    2239,  // textureProjGrad_00t10B00B00B
+    2240,  // textureGather_00q20B00D
+    2241,  // imageAtomicAnd_01B20D00E
+    2242,  // imageAtomicAdd_01S10D00D00E
+    2243,  // imageAtomicCompSwap_01O10D00D00D
+    2244,  // shadow1DProjLod_00m30B00B
+    2245,  // imageAtomicMax_01f00D00E
+    2246,  // imageAtomicMax_01f00D00D
+    2247,  // texture_00u20B00B
+    2248,  // textureLodOffset_00R10B00B10D
+    2250,  // trunc_10B
+    2252,  // trunc_10C
+    2253,  // gl_MaxComputeAtomicCounters
+    2255,  // texelFetch_00u10D00D
+    2256,  // dot_20C20C
+    2257,  // gl_DepthRangeParameters
+    2259,  // textureGather_00f20B
+    2260,  // textureGatherOffsets_00L20B70D00D
+    2261,  // noise1_10B
+    2262,  // textureProjGrad_00g30B00B00B
+    2263,  // shadow2DProj_00d30B
+    2264,  // textureProj_00d30B00B
+    2266,  // sign_10B
+    2268,  // max_00E00E
+    2270,  // texture_00a20B00B
+    2272,  // textureProj_00o10B
+    2273,  // refract_20C20C00B
+    2274,  // textureProj_00M20B00B
+    2275,  // imageLoad_01A10D
+    2277,  // textureProjOffset_00X30B10D00B
+    2279,  // exp2_00B
+    2281,  // imageAtomicExchange_01H20D00B
+    2282,  // texelFetchOffset_00u10D00D00D
+    2283,  // imageAtomicCompSwap_01H20D00E00E
+    2284,  // imageAtomicExchange_01H20D00E
+    2285,  // imageAtomicExchange_01H20D00D
+    2286,  // textureGatherOffset_00q10B10D
+    2287,  // textureGather_00a20B00D
+    2289,  // imageStore_01Q10D00D30B
+    2290,  // ldexp_00C00D
+    2291,  // textureSize_00s00D
+    2292,  // imageAtomicXor_01P10D00E
+    2293,  // imageAtomicOr_01I20D00D
+    2294,  // texture_00N10B00B
+    2295,  // gl_PrimitiveID
+    2297,  // imageAtomicOr_01X10D00D
+    2298,  // imageAtomicCompSwap_01Y10D00D00D
+    2299,  // imageAtomicOr_01X10D00E
+    2300,  // textureProjGrad_00I30B10B10B
+    2302,  // gl_Layer
+    2304,  // textureOffset_00d20B10D
+    2306,  // dFdx_30B
+    2309,  // imageAtomicMin_01V20D00D00D
+    2310,  // imageAtomicMin_01V20D00D00E
+    2311,  // gl_LastFragColor
+    2312,  // textureProjGradOffset_00t30B00B00B00D
+    2313,  // min_20E20E
+    2315,  // asin_20B
+    2317,  // imageAtomicCompSwap_01U20D00D00E00E
+    2318,  // texture_00l30B00B
+    2319,  // texture1DProjLod_00g10B00B
+    2320,  // fwidth_10B
+    2323,  // dFdy_00B
+    2326,  // shadow2DLod_00d20B00B
+    2327,  // texture1DProj_00g10B
+    2328,  // lessThan_30E30E
+    2330,  // imulExtended_30D30D30D30D
+    2332,  // transpose_70B
+    2334,  // imulExtended_00D00D00D00D
+    2336,  // textureGatherOffsets_00q10B70D
+    2337,  // imageAtomicAdd_01F20D00D
+    2338,  // imageAtomicAdd_01F20D00E
+    2339,  // texture_00S20B00B
+    2341,  // textureLod_00Y20B00B
+    2343,  // faceforward_10C10C10C
+    2344,  // textureQueryLod_00u00B
+    2345,  // min_20D00D
+    2347,  // imageAtomicCompSwap_01P10D00D00D
+    2348,  // uintBitsToFloat_00E
+    2350,  // dFdxFine_20B
+    2351,  // imageAtomicMin_01L00D00D
+    2352,  // imageAtomicExchange_01g00D00D
+    2353,  // bitfieldInsert_20D20D00D00D
+    2355,  // mix_30B30B00B
+    2357,  // textureQueryLod_00U10B
+    2358,  // imageAtomicAnd_01N10D00E
+    2359,  // tanh_00B
+    2361,  // imageStore_00y10D30B
+    2363,  // max_10C00C
+    2364,  // matrixCompMult_D0BD0B
+    2365,  // textureGatherOffsets_00v10B70D00D
+    2366,  // gl_MaxComputeUniformComponents
+    2368,  // imageAtomicAnd_01X10D00E
+    2369,  // shadow2DProjLod_00d30B00B
+    2370,  // imageAtomicAnd_01X10D00D
+    2371,  // min_30B30B
+    2373,  // reflect_20C20C
+    2374,  // texelFetch_00h10D00D
+    2375,  // memoryBarrierAtomicCounter_
+    2377,  // bitfieldInsert_00E00E00D00D
+    2379,  // imageAtomicMin_01Z20D00E
+    2380,  // imageAtomicMin_01Z20D00D
+    2381,  // imageAtomicAdd_01b20D00E
+    2382,  // imageAtomicMin_01a20D00E
+    2383,  // textureGrad_00d20B10B10B
+    2385,  // atan_10B
+    2387,  // imageAtomicMax_01T20D00D00D
+    2388,  // imageAtomicMax_01T20D00D00E
+    2389,  // imageAtomicCompSwap_01g00D00D00D
+    2390,  // clamp_30C30C30C
+    2391,  // textureProj_00v20B
+    2392,  // step_00B10B
+    2394,  // textureProjLod_00I20B00B
+    2396,  // rgb_2_yuv_20B00H
+    2397,  // imageStore_01B20D30B
+    2399,  // imageLoad_01P10D
+    2400,  // texture_00T20B
+    2402,  // log2_10B
+    2404,  // imageAtomicAnd_01D20D00D
+    2405,  // imageAtomicAnd_01D20D00E
+    2406,  // findLSB_20E
+    2408,  // findLSB_20D
+    2410,  // imageAtomicMin_01f00D00E
+    2411,  // imageAtomicMin_01f00D00D
+    2412,  // noise2_30B
+    2413,  // imageAtomicOr_01U20D00D00E
+    2414,  // greaterThanEqual_10B10B
+    2416,  // imageAtomicXor_01K00D00D
+    2417,  // clamp_10D10D10D
+    2419,  // texelFetch_00M10D00D
+    2420,  // textureQueryLod_00Y20B
+    2421,  // transpose_F0B
+    2423,  // textureOffset_00Y20B20D00B
+    2425,  // textureGradOffset_00S20B20B20B20D
+    2427,  // imageAtomicOr_01U20D00D00D
+    2428,  // clamp_30E30E30E
+    2430,  // textureSize_00R00D
+    2432,  // imageAtomicAdd_01f00D00D
+    2433,  // acosh_10B
+    2435,  // imageAtomicAdd_01f00D00E
+    2436,  // imageLoad_01b20D
+    2437,  // textureOffset_00L20B10D00B
+    2439,  // mod_20B00B
+    2441,  // imageLoad_01U20D00D
+    2442,  // textureProjLod_00J30B00B
+    2444,  // subpassLoad_01i
+    2445,  // subpassLoad_01k
+    2446,  // transpose_90B
+    2448,  // mix_30C30C00C
+    2449,  // atomicAnd_00E00E
+    2451,  // max_20D00D
+    2453,  // texelFetchOffset_00I10D00D10D
+    2455,  // textureQueryLod_00L10B
+    2456,  // atomicCounter_00G
+    2458,  // textureGrad_00m20B00B00B
+    2459,  // noise3_20B
+    2460,  // bitfieldInsert_30D30D00D00D
+    2462,  // min_10C00C
+    2463,  // greaterThan_10D10D
+    2465,  // bitfieldExtract_10E00D00D
+    2467,  // textureGradOffset_00h10B00B00B00D
+    2468,  // imageAtomicMax_01V20D00D00D
+    2469,  // texture2D_00I10B00B
+    2471,  // greaterThan_20D20D
+    2473,  // noise1_20B
+    2474,  // textureProjLodOffset_00t10B00B00D
+    2475,  // textureProjOffset_00O20B10D
+    2476,  // trunc_00B
+    2478,  // length_10C
+    2479,  // length_10B
+    2481,  // imageLoad_01R10D00D
+    2482,  // imageAtomicAdd_01H20D00D
+    2483,  // imageAtomicAdd_01H20D00E
+    2484,  // subpassLoad_01j
+    2485,  // dot_00B00B
+    2487,  // tan_30B
+    2489,  // textureLod_00T20B00B
+    2491,  // textureProjGrad_00R30B10B10B
+    2493,  // exp2_10B
+    2495,  // textureProjOffset_00X20B10D00B
+    2497,  // textureProjGradOffset_00X30B10B10B10D
+    2499,  // matrixCompMult_A0BA0B
+    2501,  // textureGatherOffsets_00v10B70D
+    2502,  // textureGrad_00S20B20B20B
+    2504,  // round_30B
+    2506,  // round_30C
+    2507,  // anyInvocation_00F
+    2508,  // textureGrad_00x30B20B20B
+    2509,  // imageAtomicCompSwap_01D20D00E00E
+    2510,  // textureProjLod_00o30B00B
+    2511,  // smoothstep_00C00C10C
+    2512,  // interpolateAtSample_00B00D
+    2513,  // dFdx_20B
+    2516,  // texture_00L20B
+    2518,  // barrier_
+    2520,  // imageAtomicAdd_01a20D00D
+    2521,  // textureGather_00k30B00D
+    2522,  // findMSB_20D
+    2524,  // textureGatherOffset_00L20B10D
+    2526,  // imageAtomicMin_01S10D00D00D
+    2527,  // imageAtomicMin_01S10D00D00E
+    2528,  // textureProjOffset_00S30B20D00B
+    2530,  // imageAtomicAdd_01D20D00D
+    2531,  // normalize_10C
+    2532,  // unpackSnorm4x8_00E
+    2534,  // imageLoad_01C20D
+    2536,  // imageAtomicMax_01C20D00D
+    2537,  // imageAtomicMax_01C20D00E
+    2538,  // textureGather_00l30B00B
+    2539,  // normalize_10B
+    2541,  // asin_30B
+    2543,  // isnan_20B
+    2545,  // isnan_20C
+    2546,  // fwidth_00B
+    2549,  // dFdy_10B
+    2552,  // imageAtomicAdd_01P10D00E
+    2553,  // imageAtomicAdd_01P10D00D
+    2554,  // max_30E00E
+    2556,  // textureLod_00d20B00B
+    2558,  // textureOffset_00q10B10D
+    2559,  // gl_LastFragData
+    2561,  // mod_10B00B
+    2563,  // texture_00g00B00B
+    2564,  // uintBitsToFloat_10E
+    2566,  // textureProjOffset_00t30B00D
+    2567,  // matrixCompMult_70B70B
+    2568,  // imageAtomicAdd_01I20D00D
+    2569,  // imageAtomicMax_01M00D00D
+    2570,  // imageAtomicMax_01M00D00E
+    2571,  // textureLod_00k30B00B
+    2572,  // imageAtomicAdd_01E20D00D
+    2573,  // textureLodOffset_00Y20B00B20D
+    2575,  // refract_00C00C00B
+    2576,  // log2_00B
+    2578,  // tanh_10B
+    2580,  // imageAtomicMin_01I20D00E
+    2581,  // textureLod_00h10B00B
+    2582,  // imageStore_01b20D30E
+    2583,  // textureGather_00O20B00D
+    2584,  // gl_LocalInvocationID
+    2586,  // clamp_00B00B00B
+    2588,  // textureGather_00d10B
+    2589,  // gl_MaxGeometryAtomicCounterBuffers
+    2590,  // textureOffset_00p10B00D00B
+    2591,  // imageAtomicExchange_01f00D00B
+    2592,  // clamp_10C10C10C
+    2593,  // outerProduct_20B10B
+    2595,  // textureProjOffset_00t10B00D
+    2596,  // isinf_20C
+    2597,  // textureGrad_00e30B20B20B
+    2599,  // textureSize_00J00D
+    2601,  // textureQueryLod_00Z20B
+    2602,  // dot_10C10C
+    2603,  // textureProjGrad_00n30B10B10B
+    2604,  // imageAtomicMin_01U20D00D00E
+    2605,  // imageAtomicMin_01U20D00D00D
+    2606,  // texture2DProjLodEXT_00I30B00B
+    2607,  // imageAtomicMax_01N10D00D
+    2608,  // imageAtomicMax_01N10D00E
+    2609,  // imageAtomicAnd_01b20D00D
+    2610,  // step_00B00B
+    2612,  // texture2DLodEXT_00I10B00B
+    2613,  // texture_00K20B00B
+    2615,  // textureProjGradOffset_00n30B10B10B10D
+    2616,  // textureGrad_00J20B20B20B
+    2618,  // imageAtomicCompSwap_01V20D00D00E00E
+    2619,  // textureOffset_00U20B10D00B
+    2621,  // intBitsToFloat_10D
+    2623,  // min_20C20C
+    2624,  // findLSB_10D
+    2626,  // textureProjLodOffset_00Y30B00B20D
+    2628,  // imageAtomicMax_01h00D00E
+    2629,  // texture3D_00J20B
+    2631,  // gl_SecondaryFragDataEXT
+    2632,  // imageAtomicAdd_01X10D00E
+    2633,  // faceforward_20C20C20C
+    2634,  // imageAtomicAnd_01O10D00E
+    2635,  // imageAtomicAdd_01X10D00D
+    2636,  // textureGather_00n10B00B
+    2637,  // textureGather_00X10B00D
+    2639,  // imageAtomicMax_01L00D00E
+    2640,  // imageAtomicMax_01L00D00D
+    2641,  // imageAtomicXor_01G20D00E
+    2642,  // imageAtomicXor_01G20D00D
+    2643,  // textureOffset_00a20B10D
+    2645,  // imageAtomicExchange_01X10D00B
+    2646,  // min_30E30E
+    2648,  // texture2DProj_00I30B00B
+    2650,  // textureQueryLod_00X10B
+    2651,  // imageAtomicAnd_01I20D00E
+    2652,  // textureCubeGradEXT_00K20B20B20B
+    2653,  // min_00B00B
+    2655,  // textureGradOffset_00o00B00B00B00D
+    2656,  // mix_30C30C30F
+    2657,  // mix_30C30C30C
+    2658,  // gl_WorkGroupID
+    2660,  // degrees_00B
+    2662,  // imageAtomicMax_01J20D00E
+    2663,  // imageAtomicMax_01J20D00D
+    2664,  // imageAtomicMin_01D20D00D
+    2665,  // atomicExchange_00D00D
+    2667,  // textureOffset_00m20B00D00B
+    2668,  // gl_MaxGeometryAtomicCounters
+    2669,  // textureOffset_00f30B10D
+    2670,  // imageAtomicExchange_01a20D00D
+    2671,  // imageAtomicExchange_01a20D00E
+    2672,  // imageAtomicExchange_01a20D00B
+    2673,  // matrixCompMult_60B60B
+    2674,  // imageAtomicCompSwap_00z10D00D00D
+    2675,  // textureProj_00t30B
+    2676,  // textureProjGradOffset_00t10B00B00B00D
+    2677,  // unpackSnorm2x16_00E
+    2679,  // lessThan_30D30D
+    2681,  // atan_00B00B
+    2683,  // textureQueryLod_00S20B
+    2684,  // notEqual_10B10B
+    2686,  // imageLoad_01G20D
+    2688,  // trunc_30B
+    2690,  // trunc_30C
+    2691,  // length_00B
+    2693,  // length_00C
+    2694,  // imageAtomicAnd_01H20D00D
+    2695,  // imageAtomicAnd_01H20D00E
+    2696,  // textureProj_00X30B00B
+    2698,  // imageAtomicExchange_01O10D00D
+    2699,  // imageAtomicCompSwap_01C20D00E00E
+    2700,  // tan_00B
+    2702,  // min_20E00E
+    2704,  // textureLod_00x30B00B
+    2705,  // textureSize_00j
+    2706,  // textureSize_00n
+    2707,  // imageAtomicXor_01F20D00D
+    2708,  // textureSize_00c
+    2710,  // textureSize_00b
+    2713,  // min_20B20B
+    2715,  // textureSize_00q
+    2716,  // textureSize_00r
+    2717,  // textureSize_00w
+    2718,  // textureSize_00v
+    2719,  // bitfieldInsert_20E20E00D00D
+    2721,  // gl_MaxProgramTexelOffset
+    2723,  // textureSize_00O
+    2724,  // imageAtomicAnd_01a20D00E
+    2725,  // imageAtomicMin_01g00D00D
+    2726,  // trunc_00C
+    2727,  // imageAtomicAnd_01a20D00D
+    2728,  // textureSize_00Q
+    2730,  // textureSize_00P
+    2733,  // imageAtomicAdd_01M00D00E
+    2734,  // imageAtomicAdd_01M00D00D
+    2735,  // textureSize_00W
+    2737,  // textureProjLod_00X20B00B
+    2739,  // smoothstep_00C00C00C
+    2740,  // atomicCounterAnd_00G00E
+    2741,  // faceforward_30B30B30B
+    2743,  // distance_20C20C
+    2744,  // atomicCounterAdd_00G00E
+    2745,  // imageStore_01O10D30D
+    2746,  // texture_00X10B
+    2748,  // ceil_00C
+    2749,  // ceil_00B
+    2751,  // distance_00B00B
+    2753,  // texelFetch_00O10D
+    2754,  // imageAtomicMin_01N10D00D
+    2755,  // imageAtomicMin_01N10D00E
+    2756,  // imageAtomicExchange_01C20D00D
+    2757,  // imageAtomicExchange_01C20D00E
+    2758,  // textureGrad_00s30B20B20B
+    2759,  // textureGather_00I10B
+    2761,  // imageAtomicExchange_01C20D00B
+    2762,  // min_30D30D
+    2764,  // findMSB_30E
+    2766,  // findMSB_30D
+    2768,  // textureGradOffset_00R10B10B10B10D
+    2770,  // fwidth_30B
+    2773,  // textureGrad_00K20B20B20B
+    2775,  // texelFetch_00S20D00D
+    2777,  // max_10B00B
+    2779,  // textureProjGradOffset_00R30B10B10B10D
+    2781,  // texelFetchOffset_00L20D00D10D
+    2783,  // isnan_30C
+    2784,  // transpose_50B
+    2786,  // greaterThanEqual_20D20D
+    2788,  // asinh_00B
+    2790,  // gl_PrimitiveIDIn
+    2791,  // textureGather_00Z20B
+    2793,  // textureGrad_00p10B00B00B
+    2794,  // textureProjOffset_00v30B10D
+    2795,  // greaterThan_20B20B
+    2797,  // min_20D20D
+    2799,  // texelFetchOffset_00g00D00D00D
+    2800,  // imageAtomicCompSwap_01g00D00E00E
+    2801,  // imageAtomicCompSwap_01Q10D00D00E00E
+    2802,  // imageAtomicXor_01O10D00D
+    2803,  // imageAtomicXor_01O10D00E
+    2804,  // tanh_20B
+    2806,  // textureProj_00m30B00B
+    2807,  // sin_20B
+    2809,  // smoothstep_00C00C30C
+    2810,  // textureSize_00l00D
+    2811,  // textureLod_00o00B00B
+    2812,  // imageAtomicMin_01K00D00D
+    2813,  // imageAtomicMin_01K00D00E
+    2814,  // textureOffset_00I10B10D00B
+    2816,  // imageAtomicAnd_00z10D00D
+    2817,  // imageAtomicAnd_00z10D00E
+    2818,  // gl_MaxAtomicCounterBufferSize
+    2820,  // textureOffset_00J20B20D00B
+    2822,  // lessThanEqual_20E20E
+    2824,  // gl_BaseVertex
+    2825,  // textureOffset_00g00B00D
+    2826,  // textureProj_00g30B
+    2827,  // imageLoad_01Z20D
+    2828,  // bitfieldInsert_30E30E00D00D
+    2830,  // bitfieldExtract_20E00D00D
+    2832,  // uintBitsToFloat_20E
+    2834,  // unpackUnorm4x8_00E
+    2836,  // mod_10B10B
+    2838,  // gl_LocalInvocationIndex
+    2840,  // imageAtomicAdd_01W10D00D
+    2841,  // imageAtomicAdd_01W10D00E
+    2842,  // gl_MaxVertexImageUniforms
+    2844,  // equal_20D20D
+    2846,  // gl_MaxCombinedAtomicCounterBuffers
+    2848,  // mix_10E10E10F
+    2849,  // textureGather_00R10B00D
+    2851,  // textureSize_00Z00D
+    2853,  // bitfieldExtract_30D00D00D
+    2855,  // imageAtomicXor_01J20D00D
+    2856,  // imageAtomicXor_01J20D00E
+    2857,  // imageStore_01T20D00D30B
+    2858,  // intBitsToFloat_00D
+    2860,  // textureLodOffset_00m20B00B00D
+    2861,  // findLSB_00E
+    2863,  // texelFetch_00p10D00D
+    2864,  // textureGather_00d10B00B
+    2866,  // shadow2DProj_00d30B00B
+    2867,  // inversesqrt_10B
+    2869,  // inversesqrt_10C
+    2870,  // abs_30D
+    2872,  // transpose_D0B
+    2874,  // abs_30C
+    2875,  // textureProjGrad_00O30B10B10B
+    2876,  // imageAtomicMax_01Z20D00D
+    2877,  // Empty
+    2877,  // imageLoad_01E20D
+    2879,  // textureProj_00N20B00B
+    2880,  // gl_FragData
+    2882,  // dFdxCoarse_20B
+    2883,  // clamp_20E00E00E
+    2885,  // textureProj_00d30B
+    2887,  // gl_MaxVertexOutputVectors
+    2889,  // shadow1D_00m20B
+    2890,  // textureOffset_00u10B00D
+    2891,  // cosh_10B
+    2893,  // sign_10C
+    2894,  // imageAtomicAnd_01G20D00E
+    2895,  // imageAtomicAnd_01G20D00D
+    2896,  // sign_10D
+    2898,  // umulExtended_00E00E00E00E
+    2900,  // gl_MaxVertexAttribs
+    2902,  // Empty
+    2902,  // texture_00a20B
+    2904,  // imageAtomicAdd_01T20D00D00E
+    2905,  // imageAtomicAdd_01T20D00D00D
+    2906,  // imageAtomicExchange_01g00D00B
+    2907,  // ldexp_10B10D
+    2909,  // textureProjOffset_00g30B00D
+    2910,  // texture_00Z20B
+    2912,  // degrees_10B
+    2914,  // texture_00K20B
+    2916,  // sinh_10B
+    2918,  // texture_00m20B
+    2919,  // imageAtomicXor_01C20D00D
+    2920,  // not_30F
+    2922,  // textureProjLodOffset_00I20B00B10D
+    2924,  // textureGather_00K20B
+    2926,  // textureGatherOffset_00R10B10D
+    2928,  // memoryBarrierShared_
+    2930,  // clamp_20B20B20B
+    2932,  // texelFetch_00W20D00D
+    2934,  // textureProjLod_00g10B00B
+    2935,  // trunc_20C
+    2936,  // trunc_20B
+    2938,  // textureProjOffset_00I30B10D00B
+    2940,  // max_00C00C
+    2941,  // tan_10B
+    2943,  // texture_00g00B
+    2944,  // textureLodOffset_00L20B00B10D
+    2946,  // textureLodOffset_00u10B00B00D
+    2947,  // imageAtomicAnd_00y10D00E
+    2948,  // imageAtomicAnd_00y10D00D
+    2949,  // isinf_20B
+    2951,  // dFdyCoarse_10B
+    2952,  // textureGatherOffset_00X10B10D00D
+    2954,  // min_10E10E
+    2956,  // memoryBarrierImage_
+    2958,  // round_10B
+    2960,  // round_10C
+    2961,  // textureProjLodOffset_00m30B00B00D
+    2962,  // textureProjGradOffset_00g10B00B00B00D
+    2963,  // textureProj_00R30B
+    2965,  // shadow1DProj_00m30B
+    2966,  // texture_00f30B00B
+    2967,  // fma_00B00B00B
+    2968,  // imageAtomicOr_01b20D00E
+    2969,  // imageAtomicOr_01b20D00D
+    2970,  // textureGatherOffset_00v10B10D00D
+    2971,  // atomicMax_00E00E
+    2973,  // imageAtomicMin_01B20D00E
+    2974,  // imageAtomicMin_01B20D00D
+    2975,  // textureQueryLod_00t00B
+    2976,  // textureProjOffset_00R30B10D
+    2978,  // textureProj_00X30B
+    2980,  // findMSB_00D
+    2982,  // findMSB_00E
+    2984,  // textureProjOffset_00X20B10D
+    2986,  // imageAtomicCompSwap_01X10D00D00D
+    2987,  // frexp_30C30D
+    2988,  // mix_10C10C10C
+    2989,  // min_30D00D
+    2991,  // texture_00M10B00B
+    2992,  // fwidth_20B
+    2995,  // imageAtomicOr_01S10D00D00D
+    2996,  // imageAtomicOr_01S10D00D00E
+    2997,  // mod_30C00C
+    2998,  // imageAtomicAdd_01A10D00D
+    2999,  // imageAtomicAdd_01A10D00E
+    3000,  // texture_00o00B00B
+    3001,  // imageAtomicOr_01H20D00E
+    3002,  // imageAtomicOr_01H20D00D
+    3003,  // cos_20B
+    3005,  // textureGather_00T20B
+    3007,  // textureProjGradOffset_00J30B20B20B20D
+    3009,  // asinh_10B
+    3011,  // texelFetchOffset_00v10D10D
+    3012,  // imageAtomicXor_01E20D00E
+    3013,  // imageAtomicXor_01E20D00D
+};
+
+using Ext = TExtension;
+
+// Flat array of all unmangled name identifiers.
 constexpr UnmangledEntry unmangled[] = {
-    UnmangledEntry(ImmutableString("all"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProj"),
-                   &UnmangledBuiltIns::OES_EGL_image_external_essl3,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackUnorm4x8"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageAtomicCompSwap"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("fwidth"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("rgb_2_yuv"),
-                   &UnmangledBuiltIns::EXT_YUV_target,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounterIncrement"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("yuv_2_rgb"),
-                   &UnmangledBuiltIns::EXT_YUV_target,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("findLSB"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("shadow1DProjLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("textureCubeGradEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("memoryBarrierImage"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packSnorm4x8"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("inverse"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   140,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureCubeLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("imageAtomicAdd"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture"),
-                   &UnmangledBuiltIns::OES_EGL_image_external_essl3,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("frexp"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("degrees"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imulExtended"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DProjGradEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicAnd"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjGradOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("roundEven"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DProjLodEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("memoryBarrierAtomicCounter"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("dFdxFine"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("ceil"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture1D"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounterXor"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("not"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DRectProj"),
-                   &UnmangledBuiltIns::ARB_texture_rectangle,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("mod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("floatBitsToInt"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   330,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("radians"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("smoothstep"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjGrad"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   140,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureQueryLevels"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("lessThan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("dFdy"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("modf"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackSnorm4x8"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("round"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   130,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("clamp"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackDouble2x32"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounterOr"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("findMSB"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DRect"),
-                   &UnmangledBuiltIns::ARB_texture_rectangle,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("acosh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("interpolateAtOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("cosh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageAtomicXor"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("uaddCarry"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageAtomicOr"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageLoad"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("asin"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("isnan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicMax"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("bitfieldReverse"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("dFdx"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("memoryBarrierShared"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::COMPUTE),
-    UnmangledEntry(ImmutableString("shadow2DProj"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("faceforward"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("abs"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("allInvocations"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("max"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("subpassLoad"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounterAnd"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackSnorm2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("log2"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureGrad"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("barrier"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::COMPUTE),
-    UnmangledEntry(ImmutableString("texture2DProj"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("atomicCounterDecrement"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("lessThanEqual"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("transpose"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   120,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("step"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("sinh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   130,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("trunc"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("cos"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("interpolateAtSample"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("EmitStreamVertex"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::GEOMETRY),
-    UnmangledEntry(ImmutableString("shadow2DProjLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("equal"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DLodEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("usubBorrow"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texelFetchOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("length"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureSize"),
-                   &UnmangledBuiltIns::OES_EGL_image_external_essl3,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("acos"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("uintBitsToFloat"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   330,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packUnorm2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackHalf2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("matrixCompMult"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("pow"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicExchange"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DProjLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("ldexp"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("floatBitsToUint"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   330,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureCubeLodEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("imageStore"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureGatherOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureProjLodOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("log"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("bitCount"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("dFdyFine"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("exp2"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCompSwap"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageSamples"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("fract"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounterSubtract"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("EmitVertex"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   150,
-                   Shader::GEOMETRY),
-    UnmangledEntry(ImmutableString("shadow1DLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("textureGatherOffsets"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("fma"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("EndStreamPrimitive"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::GEOMETRY),
-    UnmangledEntry(ImmutableString("determinant"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureGather"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture3DLod"),
-                   &UnmangledBuiltIns::OES_texture_3D,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("greaterThanEqual"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("shadow1D"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("greaterThan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("bitfieldInsert"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture3DProj"),
-                   &UnmangledBuiltIns::OES_texture_3D,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("packUnorm4x8"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("sign"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("inversesqrt"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("noise1"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("distance"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("dFdxCoarse"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("noise2"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("tanh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DGradEXT"),
-                   &UnmangledBuiltIns::EXT_shader_texture_lod,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("memoryBarrier"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture1DProjLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("fwidthCoarse"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("atomicCounterMax"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounterMin"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounter"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("intBitsToFloat"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   330,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("bitfieldExtract"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture3DProjLod"),
-                   &UnmangledBuiltIns::OES_texture_3D,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("atomicAdd"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("asinh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2D"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("memoryBarrierBuffer"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("tan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("any"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicXor"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("normalize"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("shadow1DProj"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageAtomicAnd"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("dFdyCoarse"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("floor"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureLodOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("fwidthFine"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("atanh"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureSamples"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("cross"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("sqrt"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicCounterCompSwap"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("mix"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("ftransform"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("atomicCounterAdd"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("sin"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("shadow2D"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("anyInvocation"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("shadow2DLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("imageAtomicMin"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("allInvocationsEqual"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureGradOffset"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atan"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("unpackUnorm2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureQueryLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("imageAtomicMax"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture1DProj"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("interpolateAtCentroid"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("reflect"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("isinf"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture3D"),
-                   &UnmangledBuiltIns::OES_texture_3D,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   -1,
-                   Shader::FRAGMENT),
-    UnmangledEntry(ImmutableString("umulExtended"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("atomicOr"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texelFetch"),
-                   &UnmangledBuiltIns::OES_EGL_image_external_essl3,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   -1,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("EndPrimitive"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   150,
-                   Shader::GEOMETRY),
-    UnmangledEntry(ImmutableString("atomicCounterExchange"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   460,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("noise4"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("notEqual"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("outerProduct"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   120,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packDouble2x32"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageSize"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("refract"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("noise3"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("min"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   130,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("textureCube"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packSnorm2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture1DLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("exp"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   0,
-                   0,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("groupMemoryBarrier"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::COMPUTE),
-    UnmangledEntry(ImmutableString("atomicMin"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   310,
-                   430,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("imageAtomicExchange"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   450,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("packHalf2x16"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   300,
-                   420,
-                   Shader::ALL),
-    UnmangledEntry(ImmutableString("texture2DLod"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   100,
-                   0,
-                   Shader::VERTEX),
-    UnmangledEntry(ImmutableString("dot"),
-                   &UnmangledBuiltIns::UNDEFINED,
-                   &UnmangledBuiltIns::UNDEFINED,
-                   -1,
-                   400,
-                   Shader::ALL)};
+    {"all", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"textureProj", Ext::OES_EGL_image_external_essl3, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"unpackUnorm4x8", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"imageAtomicCompSwap", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"fwidth", Ext::UNDEFINED, Ext::UNDEFINED, 300, 0, Shader::FRAGMENT},
+    {"rgb_2_yuv", Ext::EXT_YUV_target, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"atomicCounterIncrement", Ext::UNDEFINED, Ext::UNDEFINED, 310, 420, Shader::ALL},
+    {"yuv_2_rgb", Ext::EXT_YUV_target, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"findLSB", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"shadow1DProjLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::VERTEX},
+    {"textureCubeGradEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"memoryBarrierImage", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"packSnorm4x8", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"inverse", Ext::UNDEFINED, Ext::UNDEFINED, 300, 140, Shader::ALL},
+    {"textureCubeLod", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::VERTEX},
+    {"imageAtomicAdd", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"texture", Ext::OES_EGL_image_external_essl3, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"frexp", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"degrees", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"imulExtended", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texture2DProjGradEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"atomicAnd", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"textureProjGradOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 130, Shader::ALL},
+    {"roundEven", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"texture2DProjLodEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"memoryBarrierAtomicCounter", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"dFdxFine", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::FRAGMENT},
+    {"ceil", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"texture1D", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"atomicCounterXor", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"not", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"texture2DRectProj", Ext::ARB_texture_rectangle, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"mod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"floatBitsToInt", Ext::UNDEFINED, Ext::UNDEFINED, 300, 330, Shader::ALL},
+    {"radians", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"smoothstep", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"textureProjGrad", Ext::UNDEFINED, Ext::UNDEFINED, -1, 140, Shader::ALL},
+    {"textureQueryLevels", Ext::UNDEFINED, Ext::UNDEFINED, -1, 430, Shader::ALL},
+    {"lessThan", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"dFdy", Ext::UNDEFINED, Ext::UNDEFINED, 300, 0, Shader::FRAGMENT},
+    {"modf", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"unpackSnorm4x8", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"round", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"textureOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 130, Shader::FRAGMENT},
+    {"clamp", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"unpackDouble2x32", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"atomicCounterOr", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"findMSB", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texture2DRect", Ext::ARB_texture_rectangle, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"acosh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"interpolateAtOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::FRAGMENT},
+    {"cosh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"imageAtomicXor", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"uaddCarry", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"imageAtomicOr", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"imageLoad", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"asin", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"isnan", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"atomicMax", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"bitfieldReverse", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"dFdx", Ext::UNDEFINED, Ext::UNDEFINED, 300, 0, Shader::FRAGMENT},
+    {"memoryBarrierShared", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::COMPUTE},
+    {"shadow2DProj", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"textureLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"faceforward", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"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},
+    {"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},
+    {"textureGrad", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"barrier", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::COMPUTE},
+    {"texture2DProj", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::FRAGMENT},
+    {"atomicCounterDecrement", Ext::UNDEFINED, Ext::UNDEFINED, 310, 420, Shader::ALL},
+    {"lessThanEqual", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"transpose", Ext::UNDEFINED, Ext::UNDEFINED, 300, 120, Shader::ALL},
+    {"step", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"sinh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"textureProjOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 130, Shader::FRAGMENT},
+    {"trunc", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"cos", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"interpolateAtSample", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::FRAGMENT},
+    {"EmitStreamVertex", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::GEOMETRY},
+    {"shadow2DProjLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::VERTEX},
+    {"equal", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"texture2DLodEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"usubBorrow", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texelFetchOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 130, Shader::ALL},
+    {"length", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"textureSize", Ext::OES_EGL_image_external_essl3, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"acos", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"uintBitsToFloat", Ext::UNDEFINED, Ext::UNDEFINED, 300, 330, Shader::ALL},
+    {"packUnorm2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 400, Shader::ALL},
+    {"unpackHalf2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 420, Shader::ALL},
+    {"matrixCompMult", Ext::UNDEFINED, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"pow", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"texture2DProjLod", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::VERTEX},
+    {"ldexp", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"floatBitsToUint", Ext::UNDEFINED, Ext::UNDEFINED, 300, 330, Shader::ALL},
+    {"textureProjLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 130, Shader::ALL},
+    {"textureCubeLodEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"imageStore", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"textureGatherOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"textureProjLodOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 130, Shader::ALL},
+    {"log", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"bitCount", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"dFdyFine", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::FRAGMENT},
+    {"exp2", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"atomicCompSwap", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"imageSamples", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::ALL},
+    {"fract", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"atomicCounterSubtract", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"EmitVertex", Ext::UNDEFINED, Ext::UNDEFINED, -1, 150, Shader::GEOMETRY},
+    {"shadow1DLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::VERTEX},
+    {"textureGatherOffsets", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"fma", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"EndStreamPrimitive", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::GEOMETRY},
+    {"determinant", Ext::UNDEFINED, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"textureGather", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"texture3DLod", Ext::OES_texture_3D, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"greaterThanEqual", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"shadow1D", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"greaterThan", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"bitfieldInsert", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texture3DProj", Ext::OES_texture_3D, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"packUnorm4x8", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"sign", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"inversesqrt", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"noise1", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"distance", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"dFdxCoarse", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::FRAGMENT},
+    {"noise2", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"tanh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"texture2DGradEXT", Ext::EXT_shader_texture_lod, Ext::UNDEFINED, 100, -1, Shader::ALL},
+    {"memoryBarrier", Ext::UNDEFINED, Ext::UNDEFINED, 310, 420, Shader::ALL},
+    {"texture1DProjLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::VERTEX},
+    {"fwidthCoarse", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::FRAGMENT},
+    {"atomicCounterMax", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"atomicCounterMin", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"atomicCounter", Ext::UNDEFINED, Ext::UNDEFINED, 310, 420, Shader::ALL},
+    {"intBitsToFloat", Ext::UNDEFINED, Ext::UNDEFINED, 300, 330, Shader::ALL},
+    {"bitfieldExtract", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"texture3DProjLod", Ext::OES_texture_3D, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"atomicAdd", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"asinh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"texture2D", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::FRAGMENT},
+    {"memoryBarrierBuffer", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"tan", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"any", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"atomicXor", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"normalize", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"shadow1DProj", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"imageAtomicAnd", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"dFdyCoarse", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::FRAGMENT},
+    {"floor", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"textureLodOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 130, Shader::ALL},
+    {"fwidthFine", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::FRAGMENT},
+    {"atanh", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"textureSamples", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::ALL},
+    {"cross", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"sqrt", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"atomicCounterCompSwap", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"mix", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::ALL},
+    {"ftransform", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::VERTEX},
+    {"atomicCounterAdd", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"sin", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"shadow2D", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"anyInvocation", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"shadow2DLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::VERTEX},
+    {"atomicExchange", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"imageAtomicMin", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"allInvocationsEqual", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"textureGradOffset", Ext::UNDEFINED, Ext::UNDEFINED, -1, 130, Shader::ALL},
+    {"atan", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"unpackUnorm2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 400, Shader::ALL},
+    {"textureQueryLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::FRAGMENT},
+    {"imageAtomicMax", Ext::UNDEFINED, Ext::UNDEFINED, -1, 420, Shader::ALL},
+    {"texture1DProj", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"interpolateAtCentroid", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::FRAGMENT},
+    {"reflect", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"isinf", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"texture3D", Ext::OES_texture_3D, Ext::UNDEFINED, 100, -1, Shader::FRAGMENT},
+    {"umulExtended", Ext::UNDEFINED, Ext::UNDEFINED, 310, 400, Shader::ALL},
+    {"atomicOr", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"texelFetch", Ext::OES_EGL_image_external_essl3, Ext::UNDEFINED, 300, -1, Shader::ALL},
+    {"EndPrimitive", Ext::UNDEFINED, Ext::UNDEFINED, -1, 150, Shader::GEOMETRY},
+    {"atomicCounterExchange", Ext::UNDEFINED, Ext::UNDEFINED, -1, 460, Shader::ALL},
+    {"noise4", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"notEqual", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"outerProduct", Ext::UNDEFINED, Ext::UNDEFINED, 300, 120, Shader::ALL},
+    {"packDouble2x32", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"imageSize", Ext::UNDEFINED, Ext::UNDEFINED, -1, 430, Shader::ALL},
+    {"refract", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL},
+    {"noise3", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::ALL},
+    {"min", Ext::UNDEFINED, Ext::UNDEFINED, 300, 130, Shader::ALL},
+    {"textureCube", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::ALL},
+    {"packSnorm2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 420, Shader::ALL},
+    {"texture1DLod", Ext::UNDEFINED, Ext::UNDEFINED, -1, 0, Shader::VERTEX},
+    {"exp", Ext::UNDEFINED, Ext::UNDEFINED, 0, 0, Shader::ALL},
+    {"groupMemoryBarrier", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::COMPUTE},
+    {"atomicMin", Ext::UNDEFINED, Ext::UNDEFINED, 310, 430, Shader::ALL},
+    {"imageAtomicExchange", Ext::UNDEFINED, Ext::UNDEFINED, -1, 450, Shader::ALL},
+    {"packHalf2x16", Ext::UNDEFINED, Ext::UNDEFINED, 300, 420, Shader::ALL},
+    {"texture2DLod", Ext::UNDEFINED, Ext::UNDEFINED, 100, 0, Shader::VERTEX},
+    {"dot", Ext::UNDEFINED, Ext::UNDEFINED, -1, 400, Shader::ALL}};
 
 }  // namespace BuiltInArray
 
@@ -59174,184 +30383,181 @@
     TStructure *gl_DepthRangeParameters =
         new TStructure(BuiltInId::gl_DepthRangeParameters, BuiltInName::gl_DepthRangeParameters,
                        TExtension::UNDEFINED, fields_gl_DepthRangeParameters);
-    mVar_gl_DepthRangeParameters = gl_DepthRangeParameters;
-    TType *type_gl_DepthRange    = new TType(gl_DepthRangeParameters, false);
+    m_gl_DepthRangeParameters = gl_DepthRangeParameters;
+    TType *type_gl_DepthRange = new TType(gl_DepthRangeParameters, false);
     type_gl_DepthRange->setQualifier(EvqUniform);
     type_gl_DepthRange->realize();
-    mVar_gl_DepthRange =
-        new TVariable(BuiltInId::gl_DepthRange, BuiltInName::gl_DepthRange, SymbolType::BuiltIn,
-                      TExtension::UNDEFINED, type_gl_DepthRange);
-    mVar_gl_MaxVertexAttribs = new TVariable(
+    m_gl_DepthRange       = new TVariable(BuiltInId::gl_DepthRange, BuiltInName::gl_DepthRange,
+                                    SymbolType::BuiltIn, TExtension::UNDEFINED, type_gl_DepthRange);
+    m_gl_MaxVertexAttribs = new TVariable(
         BuiltInId::gl_MaxVertexAttribs, BuiltInName::gl_MaxVertexAttribs, SymbolType::BuiltIn,
         TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexAttribs);
-        static_cast<TVariable *>(mVar_gl_MaxVertexAttribs)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexAttribs)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexUniformVectors =
+    m_gl_MaxVertexUniformVectors =
         new TVariable(BuiltInId::gl_MaxVertexUniformVectors,
                       BuiltInName::gl_MaxVertexUniformVectors, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexUniformVectors);
-        static_cast<TVariable *>(mVar_gl_MaxVertexUniformVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexUniformVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexTextureImageUnits =
+    m_gl_MaxVertexTextureImageUnits =
         new TVariable(BuiltInId::gl_MaxVertexTextureImageUnits,
                       BuiltInName::gl_MaxVertexTextureImageUnits, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxVertexTextureImageUnits)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedTextureImageUnits =
+    m_gl_MaxCombinedTextureImageUnits =
         new TVariable(BuiltInId::gl_MaxCombinedTextureImageUnits,
                       BuiltInName::gl_MaxCombinedTextureImageUnits, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedTextureImageUnits)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxCombinedTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxTextureImageUnits =
+    m_gl_MaxTextureImageUnits =
         new TVariable(BuiltInId::gl_MaxTextureImageUnits, BuiltInName::gl_MaxTextureImageUnits,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxTextureImageUnits)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentUniformVectors =
+    m_gl_MaxFragmentUniformVectors =
         new TVariable(BuiltInId::gl_MaxFragmentUniformVectors,
                       BuiltInName::gl_MaxFragmentUniformVectors, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentUniformVectors);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentUniformVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxFragmentUniformVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVaryingVectors = new TVariable(
+    m_gl_MaxVaryingVectors = new TVariable(
         BuiltInId::gl_MaxVaryingVectors, BuiltInName::gl_MaxVaryingVectors, SymbolType::BuiltIn,
         TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVaryingVectors);
-        static_cast<TVariable *>(mVar_gl_MaxVaryingVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVaryingVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxDrawBuffers = new TVariable(
+    m_gl_MaxDrawBuffers = new TVariable(
         BuiltInId::gl_MaxDrawBuffers, BuiltInName::gl_MaxDrawBuffers, SymbolType::BuiltIn,
         TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxDrawBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxDrawBuffers)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxDrawBuffers)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxDualSourceDrawBuffersEXT = new TVariable(
+    m_gl_MaxDualSourceDrawBuffersEXT = new TVariable(
         BuiltInId::gl_MaxDualSourceDrawBuffersEXT, BuiltInName::gl_MaxDualSourceDrawBuffersEXT,
         SymbolType::BuiltIn, TExtension::EXT_blend_func_extended,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxDualSourceDrawBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxDualSourceDrawBuffersEXT)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxDualSourceDrawBuffersEXT)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexOutputVectors =
+    m_gl_MaxVertexOutputVectors =
         new TVariable(BuiltInId::gl_MaxVertexOutputVectors, BuiltInName::gl_MaxVertexOutputVectors,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexOutputVectors);
-        static_cast<TVariable *>(mVar_gl_MaxVertexOutputVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexOutputVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentInputVectors =
+    m_gl_MaxFragmentInputVectors =
         new TVariable(BuiltInId::gl_MaxFragmentInputVectors,
                       BuiltInName::gl_MaxFragmentInputVectors, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentInputVectors);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentInputVectors)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxFragmentInputVectors)->shareConstPointer(unionArray);
     }
-    mVar_gl_MinProgramTexelOffset =
+    m_gl_MinProgramTexelOffset =
         new TVariable(BuiltInId::gl_MinProgramTexelOffset, BuiltInName::gl_MinProgramTexelOffset,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MinProgramTexelOffset);
-        static_cast<TVariable *>(mVar_gl_MinProgramTexelOffset)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MinProgramTexelOffset)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxProgramTexelOffset =
+    m_gl_MaxProgramTexelOffset =
         new TVariable(BuiltInId::gl_MaxProgramTexelOffset, BuiltInName::gl_MaxProgramTexelOffset,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxProgramTexelOffset);
-        static_cast<TVariable *>(mVar_gl_MaxProgramTexelOffset)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxProgramTexelOffset)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxImageUnits = new TVariable(
-        BuiltInId::gl_MaxImageUnits, BuiltInName::gl_MaxImageUnits, SymbolType::BuiltIn,
-        TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
+    m_gl_MaxImageUnits = new TVariable(BuiltInId::gl_MaxImageUnits, BuiltInName::gl_MaxImageUnits,
+                                       SymbolType::BuiltIn, TExtension::UNDEFINED,
+                                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxImageUnits)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexImageUniforms =
+    m_gl_MaxVertexImageUniforms =
         new TVariable(BuiltInId::gl_MaxVertexImageUniforms, BuiltInName::gl_MaxVertexImageUniforms,
                       SymbolType::BuiltIn, TExtension::UNDEFINED,
                       StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxVertexImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentImageUniforms =
+    m_gl_MaxFragmentImageUniforms =
         new TVariable(BuiltInId::gl_MaxFragmentImageUniforms,
                       BuiltInName::gl_MaxFragmentImageUniforms, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxFragmentImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeImageUniforms =
+    m_gl_MaxComputeImageUniforms =
         new TVariable(BuiltInId::gl_MaxComputeImageUniforms,
                       BuiltInName::gl_MaxComputeImageUniforms, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxComputeImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedImageUniforms =
+    m_gl_MaxCombinedImageUniforms =
         new TVariable(BuiltInId::gl_MaxCombinedImageUniforms,
                       BuiltInName::gl_MaxCombinedImageUniforms, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxCombinedImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedShaderOutputResources =
+    m_gl_MaxCombinedShaderOutputResources =
         new TVariable(BuiltInId::gl_MaxCombinedShaderOutputResources,
                       BuiltInName::gl_MaxCombinedShaderOutputResources, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedShaderOutputResources);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedShaderOutputResources)
+        static_cast<TVariable *>(m_gl_MaxCombinedShaderOutputResources)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeWorkGroupCount =
+    m_gl_MaxComputeWorkGroupCount =
         new TVariable(BuiltInId::gl_MaxComputeWorkGroupCount,
                       BuiltInName::gl_MaxComputeWorkGroupCount, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpHigh, EvqConst, 3, 1>());
@@ -59361,9 +30567,9 @@
         {
             unionArray[index].setIConst(resources.MaxComputeWorkGroupCount[index]);
         }
-        static_cast<TVariable *>(mVar_gl_MaxComputeWorkGroupCount)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeWorkGroupCount)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeWorkGroupSize =
+    m_gl_MaxComputeWorkGroupSize =
         new TVariable(BuiltInId::gl_MaxComputeWorkGroupSize,
                       BuiltInName::gl_MaxComputeWorkGroupSize, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpHigh, EvqConst, 3, 1>());
@@ -59373,206 +30579,200 @@
         {
             unionArray[index].setIConst(resources.MaxComputeWorkGroupSize[index]);
         }
-        static_cast<TVariable *>(mVar_gl_MaxComputeWorkGroupSize)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeWorkGroupSize)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeUniformComponents =
+    m_gl_MaxComputeUniformComponents =
         new TVariable(BuiltInId::gl_MaxComputeUniformComponents,
                       BuiltInName::gl_MaxComputeUniformComponents, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeUniformComponents);
-        static_cast<TVariable *>(mVar_gl_MaxComputeUniformComponents)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeUniformComponents)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeTextureImageUnits =
+    m_gl_MaxComputeTextureImageUnits =
         new TVariable(BuiltInId::gl_MaxComputeTextureImageUnits,
                       BuiltInName::gl_MaxComputeTextureImageUnits, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxComputeTextureImageUnits)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeAtomicCounters =
+    m_gl_MaxComputeAtomicCounters =
         new TVariable(BuiltInId::gl_MaxComputeAtomicCounters,
                       BuiltInName::gl_MaxComputeAtomicCounters, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxComputeAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxComputeAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxComputeAtomicCounterBuffers =
+    m_gl_MaxComputeAtomicCounterBuffers =
         new TVariable(BuiltInId::gl_MaxComputeAtomicCounterBuffers,
                       BuiltInName::gl_MaxComputeAtomicCounterBuffers, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxComputeAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxComputeAtomicCounterBuffers)
+        static_cast<TVariable *>(m_gl_MaxComputeAtomicCounterBuffers)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexAtomicCounters =
+    m_gl_MaxVertexAtomicCounters =
         new TVariable(BuiltInId::gl_MaxVertexAtomicCounters,
                       BuiltInName::gl_MaxVertexAtomicCounters, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxVertexAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentAtomicCounters =
+    m_gl_MaxFragmentAtomicCounters =
         new TVariable(BuiltInId::gl_MaxFragmentAtomicCounters,
                       BuiltInName::gl_MaxFragmentAtomicCounters, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxFragmentAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedAtomicCounters =
+    m_gl_MaxCombinedAtomicCounters =
         new TVariable(BuiltInId::gl_MaxCombinedAtomicCounters,
                       BuiltInName::gl_MaxCombinedAtomicCounters, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxCombinedAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxAtomicCounterBindings =
+    m_gl_MaxAtomicCounterBindings =
         new TVariable(BuiltInId::gl_MaxAtomicCounterBindings,
                       BuiltInName::gl_MaxAtomicCounterBindings, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxAtomicCounterBindings);
-        static_cast<TVariable *>(mVar_gl_MaxAtomicCounterBindings)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxAtomicCounterBindings)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxVertexAtomicCounterBuffers =
+    m_gl_MaxVertexAtomicCounterBuffers =
         new TVariable(BuiltInId::gl_MaxVertexAtomicCounterBuffers,
                       BuiltInName::gl_MaxVertexAtomicCounterBuffers, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxVertexAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxVertexAtomicCounterBuffers)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxVertexAtomicCounterBuffers)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxFragmentAtomicCounterBuffers =
+    m_gl_MaxFragmentAtomicCounterBuffers =
         new TVariable(BuiltInId::gl_MaxFragmentAtomicCounterBuffers,
                       BuiltInName::gl_MaxFragmentAtomicCounterBuffers, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxFragmentAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxFragmentAtomicCounterBuffers)
+        static_cast<TVariable *>(m_gl_MaxFragmentAtomicCounterBuffers)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxCombinedAtomicCounterBuffers =
+    m_gl_MaxCombinedAtomicCounterBuffers =
         new TVariable(BuiltInId::gl_MaxCombinedAtomicCounterBuffers,
                       BuiltInName::gl_MaxCombinedAtomicCounterBuffers, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxCombinedAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxCombinedAtomicCounterBuffers)
+        static_cast<TVariable *>(m_gl_MaxCombinedAtomicCounterBuffers)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxAtomicCounterBufferSize =
+    m_gl_MaxAtomicCounterBufferSize =
         new TVariable(BuiltInId::gl_MaxAtomicCounterBufferSize,
                       BuiltInName::gl_MaxAtomicCounterBufferSize, SymbolType::BuiltIn,
                       TExtension::UNDEFINED, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxAtomicCounterBufferSize);
-        static_cast<TVariable *>(mVar_gl_MaxAtomicCounterBufferSize)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxAtomicCounterBufferSize)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryInputComponents = new TVariable(
+    m_gl_MaxGeometryInputComponents = new TVariable(
         BuiltInId::gl_MaxGeometryInputComponents, BuiltInName::gl_MaxGeometryInputComponents,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryInputComponents);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryInputComponents)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryInputComponents)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryOutputComponents = new TVariable(
+    m_gl_MaxGeometryOutputComponents = new TVariable(
         BuiltInId::gl_MaxGeometryOutputComponents, BuiltInName::gl_MaxGeometryOutputComponents,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryOutputComponents);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryOutputComponents)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryOutputComponents)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryImageUniforms = new TVariable(
+    m_gl_MaxGeometryImageUniforms = new TVariable(
         BuiltInId::gl_MaxGeometryImageUniforms, BuiltInName::gl_MaxGeometryImageUniforms,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryImageUniforms);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryImageUniforms)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryImageUniforms)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryTextureImageUnits = new TVariable(
+    m_gl_MaxGeometryTextureImageUnits = new TVariable(
         BuiltInId::gl_MaxGeometryTextureImageUnits, BuiltInName::gl_MaxGeometryTextureImageUnits,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryTextureImageUnits);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryTextureImageUnits)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryTextureImageUnits)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryOutputVertices = new TVariable(
+    m_gl_MaxGeometryOutputVertices = new TVariable(
         BuiltInId::gl_MaxGeometryOutputVertices, BuiltInName::gl_MaxGeometryOutputVertices,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryOutputVertices);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryOutputVertices)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryOutputVertices)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryTotalOutputComponents = new TVariable(
+    m_gl_MaxGeometryTotalOutputComponents = new TVariable(
         BuiltInId::gl_MaxGeometryTotalOutputComponents,
         BuiltInName::gl_MaxGeometryTotalOutputComponents, SymbolType::BuiltIn,
         TExtension::EXT_geometry_shader, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryTotalOutputComponents);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryTotalOutputComponents)
+        static_cast<TVariable *>(m_gl_MaxGeometryTotalOutputComponents)
             ->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryUniformComponents = new TVariable(
+    m_gl_MaxGeometryUniformComponents = new TVariable(
         BuiltInId::gl_MaxGeometryUniformComponents, BuiltInName::gl_MaxGeometryUniformComponents,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryUniformComponents);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryUniformComponents)
-            ->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryUniformComponents)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryAtomicCounters = new TVariable(
+    m_gl_MaxGeometryAtomicCounters = new TVariable(
         BuiltInId::gl_MaxGeometryAtomicCounters, BuiltInName::gl_MaxGeometryAtomicCounters,
         SymbolType::BuiltIn, TExtension::EXT_geometry_shader,
         StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryAtomicCounters);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryAtomicCounters)->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_gl_MaxGeometryAtomicCounters)->shareConstPointer(unionArray);
     }
-    mVar_gl_MaxGeometryAtomicCounterBuffers = new TVariable(
+    m_gl_MaxGeometryAtomicCounterBuffers = new TVariable(
         BuiltInId::gl_MaxGeometryAtomicCounterBuffers,
         BuiltInName::gl_MaxGeometryAtomicCounterBuffers, SymbolType::BuiltIn,
         TExtension::EXT_geometry_shader, StaticType::Get<EbtInt, EbpMedium, EvqConst, 1, 1>());
     {
         TConstantUnion *unionArray = new TConstantUnion[1];
         unionArray[0].setIConst(resources.MaxGeometryAtomicCounterBuffers);
-        static_cast<TVariable *>(mVar_gl_MaxGeometryAtomicCounterBuffers)
+        static_cast<TVariable *>(m_gl_MaxGeometryAtomicCounterBuffers)
             ->shareConstPointer(unionArray);
     }
     TType *type_gl_FragData = new TType(EbtFloat, EbpMedium, EvqFragData, 4);
@@ -59585,31 +30785,31 @@
         type_gl_FragData->makeArray(1u);
     }
     type_gl_FragData->realize();
-    mVar_gl_FragData = new TVariable(BuiltInId::gl_FragData, BuiltInName::gl_FragData,
-                                     SymbolType::BuiltIn, TExtension::UNDEFINED, type_gl_FragData);
+    m_gl_FragData = new TVariable(BuiltInId::gl_FragData, BuiltInName::gl_FragData,
+                                  SymbolType::BuiltIn, TExtension::UNDEFINED, type_gl_FragData);
     TType *type_gl_SecondaryFragDataEXT =
         new TType(EbtFloat, EbpMedium, EvqSecondaryFragDataEXT, 4, 1);
     type_gl_SecondaryFragDataEXT->makeArray(resources.MaxDualSourceDrawBuffers);
     type_gl_SecondaryFragDataEXT->realize();
-    mVar_gl_SecondaryFragDataEXT = new TVariable(
+    m_gl_SecondaryFragDataEXT = new TVariable(
         BuiltInId::gl_SecondaryFragDataEXT, BuiltInName::gl_SecondaryFragDataEXT,
         SymbolType::BuiltIn, TExtension::EXT_blend_func_extended, type_gl_SecondaryFragDataEXT);
     TType *type_gl_FragDepthEXT = new TType(
         EbtFloat, resources.FragmentPrecisionHigh ? EbpHigh : EbpMedium, EvqFragDepthEXT, 1);
     type_gl_FragDepthEXT->realize();
-    mVar_gl_FragDepthEXT =
+    m_gl_FragDepthEXT =
         new TVariable(BuiltInId::gl_FragDepthEXT, BuiltInName::gl_FragDepthEXT, SymbolType::BuiltIn,
                       TExtension::EXT_frag_depth, type_gl_FragDepthEXT);
     TType *type_gl_LastFragData = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1);
     type_gl_LastFragData->makeArray(resources.MaxDrawBuffers);
     type_gl_LastFragData->realize();
-    mVar_gl_LastFragData =
+    m_gl_LastFragData =
         new TVariable(BuiltInId::gl_LastFragData, BuiltInName::gl_LastFragData, SymbolType::BuiltIn,
                       TExtension::EXT_shader_framebuffer_fetch, type_gl_LastFragData);
     TType *type_gl_LastFragDataNV = new TType(EbtFloat, EbpMedium, EvqLastFragData, 4, 1);
     type_gl_LastFragDataNV->makeArray(resources.MaxDrawBuffers);
     type_gl_LastFragDataNV->realize();
-    mVar_gl_LastFragDataNV = new TVariable(
+    m_gl_LastFragDataNV = new TVariable(
         BuiltInId::gl_LastFragDataNV, BuiltInName::gl_LastFragData, SymbolType::BuiltIn,
         TExtension::NV_shader_framebuffer_fetch, type_gl_LastFragDataNV);
     TFieldList *fields_gl_PerVertex = new TFieldList();
@@ -59619,12 +30819,12 @@
     TInterfaceBlock *gl_PerVertex =
         new TInterfaceBlock(BuiltInId::gl_PerVertex, BuiltInName::gl_PerVertex,
                             TExtension::EXT_geometry_shader, fields_gl_PerVertex);
-    mVar_gl_PerVertex = gl_PerVertex;
+    m_gl_PerVertex    = gl_PerVertex;
     TType *type_gl_in = new TType(gl_PerVertex, EvqPerVertexIn, TLayoutQualifier::Create());
     type_gl_in->makeArray(0u);
     type_gl_in->realize();
-    mVar_gl_in = new TVariable(BuiltInId::gl_in, BuiltInName::gl_in, SymbolType::BuiltIn,
-                               TExtension::EXT_geometry_shader, type_gl_in);
+    m_gl_in = new TVariable(BuiltInId::gl_in, BuiltInName::gl_in, SymbolType::BuiltIn,
+                            TExtension::EXT_geometry_shader, type_gl_in);
     TFieldList *fields_gl_PerVertexOutBlock = new TFieldList();
     fields_gl_PerVertexOutBlock->push_back(
         new TField(new TType(EbtFloat, EbpHigh, EvqPosition, 4, 1), BuiltInName::gl_Position,
@@ -59635,103 +30835,21 @@
     TType *type_gl_PositionGS = new TType(EbtFloat, EbpHigh, EvqPosition, 4);
     type_gl_PositionGS->setInterfaceBlock(gl_PerVertexOutBlock);
     type_gl_PositionGS->realize();
-    mVar_gl_PositionGS =
+    m_gl_PositionGS =
         new TVariable(BuiltInId::gl_PositionGS, BuiltInName::gl_Position, SymbolType::BuiltIn,
                       TExtension::EXT_geometry_shader, type_gl_PositionGS);
 }
 
 namespace
 {
-
-bool CheckESSLVersion(int expected, int actual)
+uint16_t GetNextRuleIndex(uint32_t nameHash)
 {
-    // Not supported
-    if (expected == -1)
-        return false;
-
-    // Only ESSL100
-    if (expected == 100)
-        return actual == 100;
-
-    return actual >= expected;
+    if (nameHash == 2135 - 1)
+        return ArraySize(BuiltInArray::kRules);
+    return BuiltInArray::kMangledOffsets[nameHash + 1];
 }
-
-bool CheckGLSLVersion(int expected, int actual)
-{
-    // Not supported
-    if (expected == -1)
-        return false;
-
-    return actual >= expected;
-}
-
-bool CheckShaderType(Shader expected, GLenum actual)
-{
-    switch (expected)
-    {
-        case Shader::ALL:
-            return true;
-        case Shader::FRAGMENT:
-            return actual == GL_FRAGMENT_SHADER;
-        case Shader::VERTEX:
-            return actual == GL_VERTEX_SHADER;
-        case Shader::COMPUTE:
-            return actual == GL_COMPUTE_SHADER;
-        case Shader::GEOMETRY:
-            return actual == GL_GEOMETRY_SHADER;
-        case Shader::GEOMETRY_EXT:
-            return actual == GL_GEOMETRY_SHADER_EXT;
-        case Shader::NOT_COMPUTE:
-            return actual != GL_COMPUTE_SHADER;
-        default:
-            UNREACHABLE();
-            return false;
-    }
-}
-
 }  // namespace
 
-const TSymbol *TSymbolTable::getSymbol(SymbolEntry entry,
-                                       const ImmutableString &name,
-                                       int version) const
-{
-    if (entry.name != name)
-    {
-        return nullptr;
-    }
-    if ((entry.symbol || entry.var) && CheckShaderType(entry.shaderType, mShaderType))
-    {
-        // Non-extension symbol or variable
-        if (!IsDesktopGLSpec(mShaderSpec) && CheckESSLVersion(entry.esslVersion, version))
-        {
-            return entry.symbol ? entry.symbol : this->*(entry.var);
-        }
-        if (IsDesktopGLSpec(mShaderSpec) && CheckGLSLVersion(entry.glslVersion, version))
-        {
-            return entry.symbol ? entry.symbol : this->*(entry.var);
-        }
-    }
-    if (entry.esslExtension && mResources.*(entry.esslExtension) && !IsDesktopGLSpec(mShaderSpec) &&
-        CheckESSLVersion(entry.esslExtVersion, version) &&
-        CheckShaderType(entry.esslExtShaderType, mShaderType))
-    {
-        return entry.esslExtSymbol ? entry.esslExtSymbol : this->*(entry.esslExtVar);
-    }
-    if (entry.glslExtension && mResources.*(entry.glslExtension) && IsDesktopGLSpec(mShaderSpec) &&
-        CheckGLSLVersion(entry.glslExtVersion, version) &&
-        CheckShaderType(entry.glslExtShaderType, mShaderType))
-    {
-        return entry.glslExtSymbol ? entry.glslExtSymbol : this->*(entry.glslExtVar);
-    }
-    if (entry.esslExtension2 && mResources.*(entry.esslExtension2) &&
-        !IsDesktopGLSpec(mShaderSpec) && CheckESSLVersion(entry.esslExtVersion2, version) &&
-        CheckShaderType(entry.esslExtShaderType2, mShaderType))
-    {
-        return entry.esslExtSymbol2 ? entry.esslExtSymbol2 : this->*(entry.esslExtVar2);
-    }
-    return nullptr;
-}
-
 const TSymbol *TSymbolTable::findBuiltIn(const ImmutableString &name, int shaderVersion) const
 {
     if (name.length() > 37)
@@ -59740,42 +30858,31 @@
     uint32_t nameHash = name.mangledNameHash();
     if (nameHash >= 2135)
         return nullptr;
-    return getSymbol(BuiltInArray::mangled[nameHash], name, shaderVersion);
-}
 
-const UnmangledBuiltIn *TSymbolTable::getUnmangled(UnmangledEntry entry,
-                                                   const ImmutableString &name,
-                                                   int version) const
-{
-    if (!CheckShaderType(entry.shaderType, mShaderType))
-    {
+    const char *actualName = BuiltInArray::kMangledNames[nameHash];
+    if (name != actualName)
         return nullptr;
-    }
-    if (entry.name == name)
-    {
-        if (!IsDesktopGLSpec(mShaderSpec) && CheckESSLVersion(entry.esslVersion, version))
-        {
-            return entry.esslUnmangled;
-        }
-        if (IsDesktopGLSpec(mShaderSpec) && CheckGLSLVersion(entry.glslVersion, version))
-        {
-            return entry.glslUnmangled;
-        }
-    }
-    return nullptr;
+
+    uint16_t startIndex = BuiltInArray::kMangledOffsets[nameHash];
+    uint16_t nextIndex  = GetNextRuleIndex(nameHash);
+
+    return FindMangledBuiltIn(mShaderSpec, shaderVersion, mShaderType, mResources, *this,
+                              BuiltInArray::kRules, startIndex, nextIndex);
 }
 
-const UnmangledBuiltIn *TSymbolTable::getUnmangledBuiltInForShaderVersion(
-    const ImmutableString &name,
-    int shaderVersion)
+bool TSymbolTable::isUnmangledBuiltInName(const ImmutableString &name,
+                                          int shaderVersion,
+                                          const TExtensionBehavior &extensions) const
 {
     if (name.length() > 26)
-        return nullptr;
+        return false;
 
     uint32_t nameHash = name.unmangledNameHash();
     if (nameHash >= 207)
-        return nullptr;
-    return getUnmangled(BuiltInArray::unmangled[nameHash], name, shaderVersion);
+        return false;
+
+    return BuiltInArray::unmangled[nameHash].matches(name, mShaderSpec, shaderVersion, mShaderType,
+                                                     extensions);
 }
 
 }  // namespace sh
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.h b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.h
index 8deeae5..7be530d 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.h
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/SymbolTable_autogen.h
@@ -18,59 +18,59 @@
 class TSymbolTableBase
 {
   public:
-    TSymbolTableBase()                                = default;
-    TSymbol *mVar_gl_DepthRangeParameters             = nullptr;
-    TSymbol *mVar_gl_DepthRange                       = nullptr;
-    TSymbol *mVar_gl_MaxVertexAttribs                 = nullptr;
-    TSymbol *mVar_gl_MaxVertexUniformVectors          = nullptr;
-    TSymbol *mVar_gl_MaxVertexTextureImageUnits       = nullptr;
-    TSymbol *mVar_gl_MaxCombinedTextureImageUnits     = nullptr;
-    TSymbol *mVar_gl_MaxTextureImageUnits             = nullptr;
-    TSymbol *mVar_gl_MaxFragmentUniformVectors        = nullptr;
-    TSymbol *mVar_gl_MaxVaryingVectors                = nullptr;
-    TSymbol *mVar_gl_MaxDrawBuffers                   = nullptr;
-    TSymbol *mVar_gl_MaxDualSourceDrawBuffersEXT      = nullptr;
-    TSymbol *mVar_gl_MaxVertexOutputVectors           = nullptr;
-    TSymbol *mVar_gl_MaxFragmentInputVectors          = nullptr;
-    TSymbol *mVar_gl_MinProgramTexelOffset            = nullptr;
-    TSymbol *mVar_gl_MaxProgramTexelOffset            = nullptr;
-    TSymbol *mVar_gl_MaxImageUnits                    = nullptr;
-    TSymbol *mVar_gl_MaxVertexImageUniforms           = nullptr;
-    TSymbol *mVar_gl_MaxFragmentImageUniforms         = nullptr;
-    TSymbol *mVar_gl_MaxComputeImageUniforms          = nullptr;
-    TSymbol *mVar_gl_MaxCombinedImageUniforms         = nullptr;
-    TSymbol *mVar_gl_MaxCombinedShaderOutputResources = nullptr;
-    TSymbol *mVar_gl_MaxComputeWorkGroupCount         = nullptr;
-    TSymbol *mVar_gl_MaxComputeWorkGroupSize          = nullptr;
-    TSymbol *mVar_gl_MaxComputeUniformComponents      = nullptr;
-    TSymbol *mVar_gl_MaxComputeTextureImageUnits      = nullptr;
-    TSymbol *mVar_gl_MaxComputeAtomicCounters         = nullptr;
-    TSymbol *mVar_gl_MaxComputeAtomicCounterBuffers   = nullptr;
-    TSymbol *mVar_gl_MaxVertexAtomicCounters          = nullptr;
-    TSymbol *mVar_gl_MaxFragmentAtomicCounters        = nullptr;
-    TSymbol *mVar_gl_MaxCombinedAtomicCounters        = nullptr;
-    TSymbol *mVar_gl_MaxAtomicCounterBindings         = nullptr;
-    TSymbol *mVar_gl_MaxVertexAtomicCounterBuffers    = nullptr;
-    TSymbol *mVar_gl_MaxFragmentAtomicCounterBuffers  = nullptr;
-    TSymbol *mVar_gl_MaxCombinedAtomicCounterBuffers  = nullptr;
-    TSymbol *mVar_gl_MaxAtomicCounterBufferSize       = nullptr;
-    TSymbol *mVar_gl_MaxGeometryInputComponents       = nullptr;
-    TSymbol *mVar_gl_MaxGeometryOutputComponents      = nullptr;
-    TSymbol *mVar_gl_MaxGeometryImageUniforms         = nullptr;
-    TSymbol *mVar_gl_MaxGeometryTextureImageUnits     = nullptr;
-    TSymbol *mVar_gl_MaxGeometryOutputVertices        = nullptr;
-    TSymbol *mVar_gl_MaxGeometryTotalOutputComponents = nullptr;
-    TSymbol *mVar_gl_MaxGeometryUniformComponents     = nullptr;
-    TSymbol *mVar_gl_MaxGeometryAtomicCounters        = nullptr;
-    TSymbol *mVar_gl_MaxGeometryAtomicCounterBuffers  = nullptr;
-    TSymbol *mVar_gl_FragData                         = nullptr;
-    TSymbol *mVar_gl_SecondaryFragDataEXT             = nullptr;
-    TSymbol *mVar_gl_FragDepthEXT                     = nullptr;
-    TSymbol *mVar_gl_LastFragData                     = nullptr;
-    TSymbol *mVar_gl_LastFragDataNV                   = nullptr;
-    TSymbol *mVar_gl_PerVertex                        = nullptr;
-    TSymbol *mVar_gl_in                               = nullptr;
-    TSymbol *mVar_gl_PositionGS                       = nullptr;
+    TSymbolTableBase()                             = default;
+    TSymbol *m_gl_DepthRangeParameters             = nullptr;
+    TSymbol *m_gl_DepthRange                       = nullptr;
+    TSymbol *m_gl_MaxVertexAttribs                 = nullptr;
+    TSymbol *m_gl_MaxVertexUniformVectors          = nullptr;
+    TSymbol *m_gl_MaxVertexTextureImageUnits       = nullptr;
+    TSymbol *m_gl_MaxCombinedTextureImageUnits     = nullptr;
+    TSymbol *m_gl_MaxTextureImageUnits             = nullptr;
+    TSymbol *m_gl_MaxFragmentUniformVectors        = nullptr;
+    TSymbol *m_gl_MaxVaryingVectors                = nullptr;
+    TSymbol *m_gl_MaxDrawBuffers                   = nullptr;
+    TSymbol *m_gl_MaxDualSourceDrawBuffersEXT      = nullptr;
+    TSymbol *m_gl_MaxVertexOutputVectors           = nullptr;
+    TSymbol *m_gl_MaxFragmentInputVectors          = nullptr;
+    TSymbol *m_gl_MinProgramTexelOffset            = nullptr;
+    TSymbol *m_gl_MaxProgramTexelOffset            = nullptr;
+    TSymbol *m_gl_MaxImageUnits                    = nullptr;
+    TSymbol *m_gl_MaxVertexImageUniforms           = nullptr;
+    TSymbol *m_gl_MaxFragmentImageUniforms         = nullptr;
+    TSymbol *m_gl_MaxComputeImageUniforms          = nullptr;
+    TSymbol *m_gl_MaxCombinedImageUniforms         = nullptr;
+    TSymbol *m_gl_MaxCombinedShaderOutputResources = nullptr;
+    TSymbol *m_gl_MaxComputeWorkGroupCount         = nullptr;
+    TSymbol *m_gl_MaxComputeWorkGroupSize          = nullptr;
+    TSymbol *m_gl_MaxComputeUniformComponents      = nullptr;
+    TSymbol *m_gl_MaxComputeTextureImageUnits      = nullptr;
+    TSymbol *m_gl_MaxComputeAtomicCounters         = nullptr;
+    TSymbol *m_gl_MaxComputeAtomicCounterBuffers   = nullptr;
+    TSymbol *m_gl_MaxVertexAtomicCounters          = nullptr;
+    TSymbol *m_gl_MaxFragmentAtomicCounters        = nullptr;
+    TSymbol *m_gl_MaxCombinedAtomicCounters        = nullptr;
+    TSymbol *m_gl_MaxAtomicCounterBindings         = nullptr;
+    TSymbol *m_gl_MaxVertexAtomicCounterBuffers    = nullptr;
+    TSymbol *m_gl_MaxFragmentAtomicCounterBuffers  = nullptr;
+    TSymbol *m_gl_MaxCombinedAtomicCounterBuffers  = nullptr;
+    TSymbol *m_gl_MaxAtomicCounterBufferSize       = nullptr;
+    TSymbol *m_gl_MaxGeometryInputComponents       = nullptr;
+    TSymbol *m_gl_MaxGeometryOutputComponents      = nullptr;
+    TSymbol *m_gl_MaxGeometryImageUniforms         = nullptr;
+    TSymbol *m_gl_MaxGeometryTextureImageUnits     = nullptr;
+    TSymbol *m_gl_MaxGeometryOutputVertices        = nullptr;
+    TSymbol *m_gl_MaxGeometryTotalOutputComponents = nullptr;
+    TSymbol *m_gl_MaxGeometryUniformComponents     = nullptr;
+    TSymbol *m_gl_MaxGeometryAtomicCounters        = nullptr;
+    TSymbol *m_gl_MaxGeometryAtomicCounterBuffers  = nullptr;
+    TSymbol *m_gl_FragData                         = nullptr;
+    TSymbol *m_gl_SecondaryFragDataEXT             = nullptr;
+    TSymbol *m_gl_FragDepthEXT                     = nullptr;
+    TSymbol *m_gl_LastFragData                     = nullptr;
+    TSymbol *m_gl_LastFragDataNV                   = nullptr;
+    TSymbol *m_gl_PerVertex                        = nullptr;
+    TSymbol *m_gl_in                               = nullptr;
+    TSymbol *m_gl_PositionGS                       = nullptr;
 };
 
 }  // namespace sh
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorVulkan.cpp b/Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorVulkan.cpp
index 420d0dc..880d711 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorVulkan.cpp
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/TranslatorVulkan.cpp
@@ -920,6 +920,14 @@
             return false;
         }
     }
+    else if (getShaderType() == GL_GEOMETRY_SHADER)
+    {
+        AddANGLEPositionVarying(root, &getSymbolTable());
+
+        WriteGeometryShaderLayoutQualifiers(
+            sink, getGeometryShaderInputPrimitiveType(), getGeometryShaderInvocations(),
+            getGeometryShaderOutputPrimitiveType(), getGeometryShaderMaxVertices());
+    }
     else
     {
         ASSERT(getShaderType() == GL_COMPUTE_SHADER);
diff --git a/Source/ThirdParty/ANGLE/src/compiler/translator/gen_builtin_symbols.py b/Source/ThirdParty/ANGLE/src/compiler/translator/gen_builtin_symbols.py
index 8e4fe18..b4f0465 100644
--- a/Source/ThirdParty/ANGLE/src/compiler/translator/gen_builtin_symbols.py
+++ b/Source/ThirdParty/ANGLE/src/compiler/translator/gen_builtin_symbols.py
@@ -252,6 +252,8 @@
 
 namespace sh
 {{
+using Resources = ShBuiltInResources;
+using TableBase = TSymbolTableBase;
 
 // Since some of the BuiltInId declarations are used outside of constexpr expressions, we need to
 // have these definitions without an initializer. C++17 should eventually remove the need for this.
@@ -286,29 +288,42 @@
 
 }}  // namespace BuiltInParameters
 
-namespace UnmangledBuiltIns
-{{
-
-{unmangled_builtin_declarations}
-
-}}  // namespace UnmangledBuiltIns
-
 // TODO(oetuaho): Would be nice to make this a class instead of a namespace so that we could friend
 // this from TFunction. Now symbol constructors taking an id have to be public even though they're
 // not supposed to be accessible from outside of here. http://anglebug.com/2390
-namespace BuiltInFunction
+namespace Func
 {{
 
 {function_declarations}
 
-}}  // namespace BuiltInFunction
+}}  // namespace Func
 
 namespace BuiltInArray
 {{
+using namespace Func;
+using Rule = SymbolRule;
 
-constexpr SymbolEntry mangled[] = {{ {mangled_array} }};
+// Rules used to initialize the mangled name array.
+constexpr SymbolRule kRules[] = {{
+{mangled_rules}
+}};
 
-constexpr UnmangledEntry unmangled[] = {{ {unmangled_array} }};
+// Flat array of all mangled names.
+constexpr const char *kMangledNames[] = {{
+{mangled_names_array}
+}};
+
+// Flat array of offsets from a symbol into the rules table.
+constexpr uint16_t kMangledOffsets[] = {{
+{mangled_offsets_array}
+}};
+
+using Ext = TExtension;
+
+// Flat array of all unmangled name identifiers.
+constexpr UnmangledEntry unmangled[] = {{
+{unmangled_array}
+}};
 
 }}
 
@@ -320,94 +335,15 @@
 {init_member_variables}
 }}
 
-namespace {{
-
-bool CheckESSLVersion(int expected, int actual)
+namespace
 {{
-    // Not supported
-    if (expected == -1)
-        return false;
-
-    // Only ESSL100
-    if (expected == 100)
-        return actual == 100;
-
-    return actual >= expected;
-}}
-
-bool CheckGLSLVersion(int expected, int actual)
+uint16_t GetNextRuleIndex(uint32_t nameHash)
 {{
-    // Not supported
-    if (expected == -1)
-        return false;
-
-    return actual >= expected;
+    if (nameHash == {num_mangled_names} - 1)
+        return ArraySize(BuiltInArray::kRules);
+    return BuiltInArray::kMangledOffsets[nameHash + 1];
 }}
-
-bool CheckShaderType(Shader expected, GLenum actual)
-{{
-    switch(expected)
-    {{
-        case Shader::ALL:
-            return true;
-        case Shader::FRAGMENT:
-            return actual == GL_FRAGMENT_SHADER;
-        case Shader::VERTEX:
-            return actual == GL_VERTEX_SHADER;
-        case Shader::COMPUTE:
-            return actual == GL_COMPUTE_SHADER;
-        case Shader::GEOMETRY:
-            return actual == GL_GEOMETRY_SHADER;
-        case Shader::GEOMETRY_EXT:
-            return actual == GL_GEOMETRY_SHADER_EXT;
-        case Shader::NOT_COMPUTE:
-            return actual != GL_COMPUTE_SHADER;
-        default:
-            UNREACHABLE();
-            return false;
-    }}
-}}
-
-}}
-
-const TSymbol *TSymbolTable::getSymbol(SymbolEntry entry, const ImmutableString &name, int version) const
-{{
-    if (entry.name != name)
-    {{
-        return nullptr;
-    }}
-    if ((entry.symbol || entry.var) && CheckShaderType(entry.shaderType, mShaderType))
-    {{
-        // Non-extension symbol or variable
-        if (!IsDesktopGLSpec(mShaderSpec) && CheckESSLVersion(entry.esslVersion, version))
-        {{
-            return entry.symbol ? entry.symbol : this->*(entry.var);
-        }}
-        if (IsDesktopGLSpec(mShaderSpec) && CheckGLSLVersion(entry.glslVersion, version))
-        {{
-            return entry.symbol ? entry.symbol : this->*(entry.var);
-        }}
-    }}
-    if (entry.esslExtension && mResources.*(entry.esslExtension) && !IsDesktopGLSpec(mShaderSpec) &&
-        CheckESSLVersion(entry.esslExtVersion, version) &&
-        CheckShaderType(entry.esslExtShaderType, mShaderType))
-    {{
-        return entry.esslExtSymbol ? entry.esslExtSymbol : this->*(entry.esslExtVar);
-    }}
-    if (entry.glslExtension && mResources.*(entry.glslExtension) && IsDesktopGLSpec(mShaderSpec) &&
-        CheckGLSLVersion(entry.glslExtVersion, version) &&
-        CheckShaderType(entry.glslExtShaderType, mShaderType))
-    {{
-        return entry.glslExtSymbol ? entry.glslExtSymbol : this->*(entry.glslExtVar);
-    }}
-    if (entry.esslExtension2 && mResources.*(entry.esslExtension2) && !IsDesktopGLSpec(mShaderSpec) &&
-        CheckESSLVersion(entry.esslExtVersion2, version) &&
-        CheckShaderType(entry.esslExtShaderType2, mShaderType))
-    {{
-        return entry.esslExtSymbol2 ? entry.esslExtSymbol2 : this->*(entry.esslExtVar2);
-    }}
-    return nullptr;
-}}
+}}  // namespace
 
 const TSymbol *TSymbolTable::findBuiltIn(const ImmutableString &name,
                                          int shaderVersion) const
@@ -418,38 +354,29 @@
     uint32_t nameHash = name.mangledNameHash();
     if (nameHash >= {num_mangled_names})
         return nullptr;
-    return getSymbol(BuiltInArray::mangled[nameHash], name, shaderVersion);
-}}
 
-const UnmangledBuiltIn *TSymbolTable::getUnmangled(UnmangledEntry entry, const ImmutableString &name, int version) const
-{{
-    if (!CheckShaderType(entry.shaderType, mShaderType))
-    {{
+    const char *actualName = BuiltInArray::kMangledNames[nameHash];
+    if (name != actualName)
         return nullptr;
-    }}
-    if (entry.name == name)
-    {{
-        if (!IsDesktopGLSpec(mShaderSpec) && CheckESSLVersion(entry.esslVersion, version))
-        {{
-            return entry.esslUnmangled;
-        }}
-        if (IsDesktopGLSpec(mShaderSpec) && CheckGLSLVersion(entry.glslVersion, version))
-        {{
-            return entry.glslUnmangled;
-        }}
-    }}
-    return nullptr;
+
+    uint16_t startIndex = BuiltInArray::kMangledOffsets[nameHash];
+    uint16_t nextIndex = GetNextRuleIndex(nameHash);
+
+    return FindMangledBuiltIn(mShaderSpec, shaderVersion, mShaderType, mResources, *this, BuiltInArray::kRules, startIndex, nextIndex);
 }}
 
-const UnmangledBuiltIn *TSymbolTable::getUnmangledBuiltInForShaderVersion(const ImmutableString &name, int shaderVersion)
+bool TSymbolTable::isUnmangledBuiltInName(const ImmutableString &name,
+                                          int shaderVersion,
+                                          const TExtensionBehavior &extensions) const
 {{
     if (name.length() > {max_unmangled_name_length})
-        return nullptr;
+        return false;
 
     uint32_t nameHash = name.unmangledNameHash();
     if (nameHash >= {num_unmangled_names})
-        return nullptr;
-    return getUnmangled(BuiltInArray::unmangled[nameHash], name, shaderVersion);
+        return false;
+
+    return BuiltInArray::unmangled[nameHash].matches(name, mShaderSpec, shaderVersion, mShaderType, extensions);
 }}
 
 }}  // namespace sh
@@ -485,6 +412,8 @@
 
 """
 
+template_rule = """Rule::Get<{spec}, {version}, {shaders}, {extension}>({symbol_or_var})"""
+
 basic_types_enumeration = [
     'Void',
     'Float',
@@ -657,6 +586,13 @@
         raise Exception('Unsupported symbol table level')
 
 
+def get_shader_version_for_level(spec, level):
+    if spec == "ESSL":
+        return get_essl_shader_version_for_level(level)
+    else:
+        return get_glsl_shader_version_for_level(level)
+
+
 class GroupedList:
     """"Class for storing a list of objects grouped by symbol table level and condition."""
 
@@ -665,17 +601,10 @@
         self.max_name_length = 0
         self.hashfn = hashfn
         self.num_names = num_names
+        self.rule_offset = 0
 
-    def add_obj(self,
-                essl_level,
-                glsl_level,
-                shader_type,
-                name,
-                obj,
-                essl_extension,
-                glsl_extension,
-                script_generated_hash_tests,
-                var_obj=False):
+    def add_entry(self, essl_level, glsl_level, shader_type, name, symbol, essl_extension,
+                  glsl_extension, script_generated_hash_tests):
         if essl_level and essl_level not in essl_levels:
             raise Exception('Unexpected essl level: ' + str(essl_level))
         if glsl_level and glsl_level not in glsl_levels:
@@ -694,133 +623,102 @@
                 self.objs[name_hash]['essl_level'] = essl_level
             if glsl_level:
                 self.objs[name_hash]['glsl_level'] = glsl_level
-            if var_obj:
-                self.objs[name_hash]['var'] = obj
-            else:
-                self.objs[name_hash]['obj'] = obj
+            self.objs[name_hash]['symbol'] = symbol
             self.objs[name_hash]['shader_type'] = shader_type
 
         if essl_extension != 'UNDEFINED':
-            if (var_obj and 'essl_ext_var' in self.objs[name_hash] and
-                    self.objs[name_hash]['essl_ext_var'] != obj) or (
-                        not var_obj and 'essl_ext_obj' in self.objs[name_hash] and
-                        self.objs[name_hash]['essl_ext_obj'] != obj):
+            if ('essl_ext_symbol' in self.objs[name_hash] and
+                    self.objs[name_hash]['essl_ext_symbol'] != symbol):
                 # Adding a variable that is part of two ESSL extensions
                 if essl_extension != 'UNDEFINED':
                     self.objs[name_hash]['essl_extension2'] = essl_extension
                     self.objs[name_hash]['essl_ext_level2'] = essl_level
-                    if var_obj:
-                        self.objs[name_hash]['essl_ext_var2'] = obj
-                    else:
-                        self.objs[name_hash]['essl_ext_obj2'] = obj
-                        self.objs[name_hash]['essl_ext_shader_type2'] = shader_type
+                    self.objs[name_hash]['essl_ext_symbol2'] = symbol
+                    self.objs[name_hash]['essl_ext_shader_type2'] = shader_type
             else:
                 self.objs[name_hash]['essl_extension'] = essl_extension
                 self.objs[name_hash]['essl_ext_level'] = essl_level
-                if var_obj:
-                    self.objs[name_hash]['essl_ext_var'] = obj
-                else:
-                    self.objs[name_hash]['essl_ext_obj'] = obj
-                    self.objs[name_hash]['essl_ext_shader_type'] = shader_type
+                self.objs[name_hash]['essl_ext_symbol'] = symbol
+                self.objs[name_hash]['essl_ext_shader_type'] = shader_type
 
         if glsl_extension != 'UNDEFINED':
             self.objs[name_hash]['glsl_extension'] = glsl_extension
             self.objs[name_hash]['glsl_ext_level'] = glsl_level
-            if var_obj:
-                self.objs[name_hash]['glsl_ext_var'] = obj
-            else:
-                self.objs[name_hash]['glsl_ext_obj'] = obj
+            self.objs[name_hash]['glsl_ext_symbol'] = symbol
             self.objs[name_hash]['glsl_ext_shader_type'] = shader_type
 
     def get_max_name_length(self):
         return self.max_name_length
 
-    def get_array(self):
-        code = []
+    def format_rule(self, rule):
+        return template_rule.format(**rule)
+
+    def format_rules(self, rules):
+        return ", ".join([self.format_rule(rule) for rule in rules])
+
+    def get_rules(self):
+        return self.rules
+
+    def get_names(self):
+        return self.names
+
+    def get_offsets(self):
+        return self.offsets
+
+    def update_arrays(self):
+
+        def add_rule(rules, spec, level, shaders, extension, symbol):
+            var = ("&TableBase::%s" % symbol) if symbol.startswith("m_gl") else None
+
+            rules.append({
+                "spec": "Spec::%s" % ("ESSL" if spec == "ESSL" else "GLSL"),
+                "version": get_shader_version_for_level(spec, level),
+                "shaders": "Shader::%s" % ("ALL" if shaders == "NONE" else shaders),
+                "extension": "0" if extension == None else "EXT_INDEX(%s)" % extension,
+                "symbol_or_var": symbol.replace("Func::", "") if var is None else var
+            })
+
+        self.names = []
+        self.offsets = []
+        self.rules = []
         for hash_val in range(0, self.num_names):
             if hash_val in self.objs:
-                obj_data = self.objs[hash_val]
+                data = self.objs[hash_val]
 
-                data = []
-                data.append('ImmutableString("{name}")'.format(name=obj_data['name']))
+                rules = []
 
-                symbol = obj_data['obj'] if 'obj' in obj_data else 'nullptr'
-                var = '&TSymbolTableBase::{}'.format(
-                    obj_data['var']) if 'var' in obj_data else 'nullptr'
-                essl_level = obj_data['essl_level'] if 'essl_level' in obj_data else None
-                glsl_level = obj_data['glsl_level'] if 'glsl_level' in obj_data else None
-                essl_version = get_essl_shader_version_for_level(essl_level)
-                glsl_version = get_glsl_shader_version_for_level(glsl_level)
-                shader_type = 'Shader::' + obj_data[
-                    'shader_type'] if 'shader_type' in obj_data and obj_data[
-                        'shader_type'] != 'NONE' else 'Shader::ALL'
+                if "symbol" in data and "essl_level" in data:
+                    add_rule(rules, "ESSL", data['essl_level'], data['shader_type'], None,
+                             data["symbol"])
 
-                data.append(symbol)
-                data.append(var)
-                data.append(essl_version)
-                data.append(glsl_version)
-                data.append(shader_type)
+                if "symbol" in data and "glsl_level" in data:
+                    add_rule(rules, "GLSL", data['glsl_level'], data['shader_type'], None,
+                             data["symbol"])
 
-                essl_ext_symbol = obj_data[
-                    'essl_ext_obj'] if 'essl_ext_obj' in obj_data else 'nullptr'
-                essl_ext_var = '&TSymbolTableBase::{}'.format(
-                    obj_data['essl_ext_var']) if 'essl_ext_var' in obj_data else 'nullptr'
-                essl_ext_version = get_essl_shader_version_for_level(
-                    obj_data['essl_ext_level']) if 'essl_extension' in obj_data else '-1'
-                essl_ext_shader_type = 'Shader::' + obj_data[
-                    'essl_ext_shader_type'] if 'essl_ext_shader_type' in obj_data and obj_data[
-                        'essl_ext_shader_type'] != 'NONE' else 'Shader::ALL'
-                essl_extension = '&ShBuiltInResources::{}'.format(
-                    obj_data['essl_extension']) if 'essl_extension' in obj_data else 'nullptr'
+                if "essl_ext_symbol" in data:
+                    add_rule(rules, "ESSL", data["essl_ext_level"], data["essl_ext_shader_type"],
+                             data["essl_extension"], data["essl_ext_symbol"])
 
-                data.append(essl_ext_symbol)
-                data.append(essl_ext_var)
-                data.append(essl_ext_version)
-                data.append(essl_ext_shader_type)
-                data.append(essl_extension)
+                if "glsl_ext_symbol" in data:
+                    add_rule(rules, "GLSL", data["glsl_ext_level"], data["glsl_ext_shader_type"],
+                             data["glsl_extension"], data["glsl_ext_symbol"])
 
-                glsl_ext_symbol = obj_data[
-                    'glsl_ext_obj'] if 'glsl_ext_obj' in obj_data else 'nullptr'
-                glsl_ext_var = '&TSymbolTableBase::{}'.format(
-                    obj_data['glsl_ext_var']) if 'glsl_ext_var' in obj_data else 'nullptr'
-                glsl_ext_version = get_glsl_shader_version_for_level(
-                    obj_data['glsl_ext_level']) if 'glsl_extension' in obj_data else '-1'
-                glsl_ext_shader_type = 'Shader::' + obj_data[
-                    'glsl_ext_shader_type'] if 'glsl_ext_shader_type' in obj_data and obj_data[
-                        'glsl_ext_shader_type'] != 'NONE' else 'Shader::ALL'
-                glsl_extension = '&ShBuiltInResources::{}'.format(
-                    obj_data['glsl_extension']) if 'glsl_extension' in obj_data else 'nullptr'
+                if "essl_ext_symbol2" in data:
+                    add_rule(rules, "ESSL", data["essl_ext_level2"], data["essl_ext_shader_type2"],
+                             data["essl_extension2"], data["essl_ext_symbol2"])
 
-                data.append(glsl_ext_symbol)
-                data.append(glsl_ext_var)
-                data.append(glsl_ext_version)
-                data.append(glsl_ext_shader_type)
-                data.append(glsl_extension)
+                name = data['name']
+                name_underscore = name.replace("(", "_")
 
-                if 'essl_extension2' in obj_data:
-                    essl_ext_symbol2 = obj_data[
-                        'essl_ext_obj2'] if 'essl_ext_obj2' in obj_data else 'nullptr'
-                    essl_ext_var2 = '&TSymbolTableBase::{}'.format(
-                        obj_data['essl_ext_var2']) if 'essl_ext_var2' in obj_data else 'nullptr'
-                    essl_ext_version2 = get_essl_shader_version_for_level(
-                        obj_data['essl_ext_level2'])
-                    essl_ext_shader_type2 = 'Shader::' + obj_data[
-                        'essl_ext_shader_type2'] if 'essl_ext_shader_type2' in obj_data and obj_data[
-                            'essl_ext_shader_type2'] != 'NONE' else 'Shader::ALL'
-                    essl_extension2 = '&ShBuiltInResources::{}'.format(obj_data['essl_extension2'])
-                    data.append(essl_ext_symbol2)
-                    data.append(essl_ext_var2)
-                    data.append(essl_ext_version2)
-                    data.append(essl_ext_shader_type2)
-                    data.append(essl_extension2)
+                self.names.append('"%s"' % name)
+                self.offsets.append("%d, // %s" % (self.rule_offset, name_underscore))
+                self.rules.append("%s" % self.format_rules(rules))
 
-                code.append('SymbolEntry(' + ', '.join(data) + ')')
+                self.rule_offset += len(rules)
+
             else:
-                code.append("""SymbolEntry(ImmutableString(""),
-                       nullptr, nullptr, -1, -1, Shader::ALL,
-                       nullptr, nullptr, -1, Shader::ALL, nullptr,
-                       nullptr, nullptr, -1, Shader::ALL, nullptr)""")
-        return ', '.join(code)
+                self.names.append('""')
+                self.offsets.append('%d, // Empty' % self.rule_offset)
 
 
 class UnmangledGroupedList:
@@ -832,9 +730,8 @@
         self.hashfn = hashfn
         self.num_names = num_names
 
-    def add_obj(self, essl_level, glsl_level, shader_type, name, essl_obj, glsl_obj,
-                essl_extension, glsl_extension, essl_unmangled_builtin_declaration,
-                glsl_unmangled_builtin_declaration, unmangled_script_generated_hash_tests):
+    def add_entry(self, essl_level, glsl_level, shader_type, name, essl_ext, glsl_ext,
+                  essl_extension, glsl_extension, unmangled_script_generated_hash_tests):
         if essl_level and essl_level not in essl_levels:
             raise Exception('Unexpected essl level: ' + str(essl_level))
         if glsl_level and glsl_level not in glsl_levels:
@@ -848,12 +745,10 @@
         self.objs[name_hash]['essl_level'] = essl_level
         self.objs[name_hash]['glsl_level'] = glsl_level
         self.objs[name_hash]['shader_type'] = shader_type
-        self.objs[name_hash]['essl_obj'] = essl_obj
-        self.objs[name_hash]['glsl_obj'] = glsl_obj
+        self.objs[name_hash]['essl_ext'] = essl_ext
+        self.objs[name_hash]['glsl_ext'] = glsl_ext
         self.objs[name_hash]['essl_extension'] = essl_extension
         self.objs[name_hash]['glsl_extension'] = glsl_extension
-        self.objs[name_hash]['essl_declaration'] = essl_unmangled_builtin_declaration
-        self.objs[name_hash]['glsl_declaration'] = glsl_unmangled_builtin_declaration
 
     def has_key(self, essl_level, glsl_level, shader_type, name):
         name_hash = mangledNameHash(name, self.hashfn, None, True, False)
@@ -877,27 +772,24 @@
     def get_max_name_length(self):
         return self.max_name_length
 
-    def get_array(self, unmangled_builtin_declarations):
+    def get_array(self):
         code = []
         for hash_val in range(0, self.num_names):
-            obj_data = self.objs[hash_val]
-            essl_level = obj_data['essl_level']
-            glsl_level = obj_data['glsl_level']
-            shader_type = 'Shader::' + obj_data['shader_type'] if obj_data[
+            obj = self.objs[hash_val]
+            essl_level = obj['essl_level']
+            glsl_level = obj['glsl_level']
+            shader_type = 'Shader::' + obj['shader_type'] if obj[
                 'shader_type'] != 'NONE' else 'Shader::ALL'
             data = []
-            data.append('ImmutableString("{name}")'.format(name=obj_data['name']))
-            data.append(obj_data['essl_obj'])
-            data.append(obj_data['glsl_obj'])
+            data.append('"{name}"'.format(name=obj['name']))
+            data.append("Ext::" + obj['essl_extension'])
+            data.append("Ext::" + obj['glsl_extension'])
             data.append(get_essl_shader_version_for_level(essl_level))
             data.append(get_glsl_shader_version_for_level(glsl_level))
             data.append(shader_type)
 
-            code.append('UnmangledEntry(' + ', '.join(data) + ')')
-
-            unmangled_builtin_declarations.add(obj_data['essl_declaration'])
-            unmangled_builtin_declarations.add(obj_data['glsl_declaration'])
-        return ', '.join(code)
+            code.append('{%s}' % ', '.join(data))
+        return code
 
 
 class TType:
@@ -1304,7 +1196,7 @@
 
 
 def define_constexpr_variable(template_args, variable_declarations):
-    template_variable_declaration = 'constexpr const TVariable kVar_{name_with_suffix}(BuiltInId::{name_with_suffix}, BuiltInName::{name}, SymbolType::BuiltIn, TExtension::{extension}, {type});'
+    template_variable_declaration = 'constexpr const TVariable k{name_with_suffix}(BuiltInId::{name_with_suffix}, BuiltInName::{name}, SymbolType::BuiltIn, TExtension::{extension}, {type});'
     variable_declarations.append(template_variable_declaration.format(**template_args))
 
 
@@ -1391,11 +1283,10 @@
 
 def process_single_function_group(
         shader_type, group_name, group, parameter_declarations, name_declarations,
-        unmangled_function_if_statements, unmangled_builtin_declarations,
-        defined_function_variants, builtin_id_declarations, builtin_id_definitions,
-        defined_parameter_names, variable_declarations, function_declarations,
-        script_generated_hash_tests, unmangled_script_generated_hash_tests,
-        get_builtin_if_statements):
+        unmangled_function_if_statements, defined_function_variants, builtin_id_declarations,
+        builtin_id_definitions, defined_parameter_names, variable_declarations,
+        function_declarations, script_generated_hash_tests, unmangled_script_generated_hash_tests,
+        mangled_builtins):
     global id_counter
 
     if 'functions' not in group:
@@ -1429,8 +1320,8 @@
         if not name_declaration in name_declarations:
             name_declarations.add(name_declaration)
 
-        essl_obj = '&UnmangledBuiltIns::{essl_extension}'.format(**template_args)
-        glsl_obj = '&UnmangledBuiltIns::{glsl_extension}'.format(**template_args)
+        essl_ext = '{essl_extension}'.format(**template_args)
+        glsl_ext = '{glsl_extension}'.format(**template_args)
         unmangled_builtin_no_shader_type = unmangled_function_if_statements.get(
             essl_level, glsl_level, 'NONE', function_name)
         if unmangled_builtin_no_shader_type != None and unmangled_builtin_no_shader_type[
@@ -1446,15 +1337,9 @@
                       unmangled_builtin_no_shader_type['essl_extension'] != 'UNDEFINED') or
                      (glsl_extension == 'UNDEFINED' and
                       unmangled_builtin_no_shader_type['glsl_extension'] != 'UNDEFINED'))):
-            # We don't have this unmangled builtin recorded yet or we replace an unmangled builtin from an extension with one from core.
-            essl_unmangled_builtin_declaration = 'constexpr const UnmangledBuiltIn {essl_extension}(TExtension::{essl_extension});'.format(
-                **template_args)
-            glsl_unmangled_builtin_declaration = 'constexpr const UnmangledBuiltIn {glsl_extension}(TExtension::{glsl_extension});'.format(
-                **template_args)
-            unmangled_function_if_statements.add_obj(
-                essl_level, glsl_level, shader_type, function_name, essl_obj, glsl_obj,
-                essl_extension, glsl_extension, essl_unmangled_builtin_declaration,
-                glsl_unmangled_builtin_declaration, unmangled_script_generated_hash_tests)
+            unmangled_function_if_statements.add_entry(
+                essl_level, glsl_level, shader_type, function_name, essl_ext, glsl_ext,
+                essl_extension, glsl_extension, unmangled_script_generated_hash_tests)
 
         for function_props in function_variants:
             template_args['id'] = id_counter
@@ -1470,9 +1355,9 @@
                 template_args['name_with_suffix'], parameters)
             template_args['mangled_name_length'] = len(template_args['mangled_name'])
 
-            obj = '&BuiltInFunction::function_{unique_name}'.format(**template_args)
-            get_builtin_if_statements.add_obj(
-                essl_level, glsl_level, shader_type, template_args['mangled_name'], obj,
+            symbol = '&Func::{unique_name}'.format(**template_args)
+            mangled_builtins.add_entry(
+                essl_level, glsl_level, shader_type, template_args['mangled_name'], symbol,
                 template_args['essl_extension'], template_args['glsl_extension'],
                 script_generated_hash_tests)
 
@@ -1503,7 +1388,7 @@
                     define_constexpr_variable(param_template_args, variable_declarations)
                     defined_parameter_names.add(unique_param_name)
                 parameters_list.append(
-                    '&BuiltInVariable::kVar_{name_with_suffix}'.format(**param_template_args))
+                    '&BuiltInVariable::k{name_with_suffix}'.format(**param_template_args))
 
             template_args['parameters_var_name'] = get_variable_name_to_store_parameters(
                 parameters)
@@ -1519,19 +1404,18 @@
                     'parameters_var_name']] = template_parameter_list_declaration.format(
                         **template_args)
 
-            template_function_declaration = 'constexpr const TFunction function_{unique_name}(BuiltInId::{human_readable_name}, BuiltInName::{name_with_suffix}, TExtension::{extension}, BuiltInParameters::{parameters_var_name}, {param_count}, {return_type}, EOp{op}, {known_to_not_have_side_effects});'
+            template_function_declaration = 'constexpr const TFunction {unique_name}(BuiltInId::{human_readable_name}, BuiltInName::{name_with_suffix}, TExtension::{extension}, BuiltInParameters::{parameters_var_name}, {param_count}, {return_type}, EOp{op}, {known_to_not_have_side_effects});'
             function_declarations.append(template_function_declaration.format(**template_args))
 
             id_counter += 1
 
 
 def process_function_group(group_name, group, parameter_declarations, name_declarations,
-                           unmangled_function_if_statements, unmangled_builtin_declarations,
-                           defined_function_variants, builtin_id_declarations,
-                           builtin_id_definitions, defined_parameter_names, variable_declarations,
-                           function_declarations, script_generated_hash_tests,
-                           unmangled_script_generated_hash_tests, get_builtin_if_statements,
-                           is_in_group_definitions):
+                           unmangled_function_if_statements, defined_function_variants,
+                           builtin_id_declarations, builtin_id_definitions,
+                           defined_parameter_names, variable_declarations, function_declarations,
+                           script_generated_hash_tests, unmangled_script_generated_hash_tests,
+                           mangled_builtins, is_in_group_definitions):
     global id_counter
     first_id = id_counter
 
@@ -1539,23 +1423,21 @@
     if 'shader_type' in group:
         shader_type = group['shader_type']
 
-    process_single_function_group(shader_type, group_name, group, parameter_declarations,
-                                  name_declarations, unmangled_function_if_statements,
-                                  unmangled_builtin_declarations, defined_function_variants,
-                                  builtin_id_declarations, builtin_id_definitions,
-                                  defined_parameter_names, variable_declarations,
-                                  function_declarations, script_generated_hash_tests,
-                                  unmangled_script_generated_hash_tests, get_builtin_if_statements)
+    process_single_function_group(
+        shader_type, group_name, group, parameter_declarations, name_declarations,
+        unmangled_function_if_statements, defined_function_variants, builtin_id_declarations,
+        builtin_id_definitions, defined_parameter_names, variable_declarations,
+        function_declarations, script_generated_hash_tests, unmangled_script_generated_hash_tests,
+        mangled_builtins)
 
     if 'subgroups' in group:
         for subgroup_name, subgroup in group['subgroups'].iteritems():
             process_function_group(
                 group_name + subgroup_name, subgroup, parameter_declarations, name_declarations,
-                unmangled_function_if_statements, unmangled_builtin_declarations,
-                defined_function_variants, builtin_id_declarations, builtin_id_definitions,
-                defined_parameter_names, variable_declarations, function_declarations,
-                script_generated_hash_tests, unmangled_script_generated_hash_tests,
-                get_builtin_if_statements, is_in_group_definitions)
+                unmangled_function_if_statements, defined_function_variants,
+                builtin_id_declarations, builtin_id_definitions, defined_parameter_names,
+                variable_declarations, function_declarations, script_generated_hash_tests,
+                unmangled_script_generated_hash_tests, mangled_builtins, is_in_group_definitions)
 
     if 'queryFunction' in group:
         template_args = {'first_id': first_id, 'last_id': id_counter - 1, 'group_name': group_name}
@@ -1595,7 +1477,7 @@
 
 def process_single_variable_group(shader_type, group_name, group, builtin_id_declarations,
                                   builtin_id_definitions, name_declarations, init_member_variables,
-                                  get_variable_declarations, get_builtin_if_statements,
+                                  get_variable_declarations, mangled_builtins,
                                   declare_member_variables, variable_declarations,
                                   get_variable_definitions, script_generated_hash_tests):
     global id_counter
@@ -1662,7 +1544,7 @@
             if 'private' in props and props['private']:
                 is_member = False
             else:
-                template_init_variable = '    mVar_{name_with_suffix} = {name_with_suffix};'
+                template_init_variable = '    m_{name_with_suffix} = {name_with_suffix};'
 
         elif 'initDynamicType' in props:
             # Handle variables whose type can't be expressed as TStaticType
@@ -1672,7 +1554,7 @@
             template_args['initDynamicType'] = props['initDynamicType'].format(**template_args)
             template_init_variable = """    {initDynamicType}
     {type_name}->realize();
-    mVar_{name_with_suffix} = new TVariable(BuiltInId::{name_with_suffix}, BuiltInName::{name}, SymbolType::BuiltIn, TExtension::{extension}, {type});"""
+    m_{name_with_suffix} = new TVariable(BuiltInId::{name_with_suffix}, BuiltInName::{name}, SymbolType::BuiltIn, TExtension::{extension}, {type});"""
 
         elif 'value' in props:
             # Handle variables with constant value, such as gl_MaxDrawBuffers.
@@ -1684,21 +1566,21 @@
                 resources_key = props['valueKey']
             template_args['value'] = 'resources.' + resources_key
             template_args['object_size'] = TType(props['type']).get_object_size()
-            template_init_variable = """    mVar_{name_with_suffix} = new TVariable(BuiltInId::{name_with_suffix}, BuiltInName::{name}, SymbolType::BuiltIn, TExtension::{extension}, {type});
+            template_init_variable = """    m_{name_with_suffix} = new TVariable(BuiltInId::{name_with_suffix}, BuiltInName::{name}, SymbolType::BuiltIn, TExtension::{extension}, {type});
     {{
         TConstantUnion *unionArray = new TConstantUnion[{object_size}];
         unionArray[0].setIConst({value});
-        static_cast<TVariable *>(mVar_{name_with_suffix})->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_{name_with_suffix})->shareConstPointer(unionArray);
     }}"""
             if template_args['object_size'] > 1:
-                template_init_variable = """    mVar_{name_with_suffix} = new TVariable(BuiltInId::{name_with_suffix}, BuiltInName::{name}, SymbolType::BuiltIn, TExtension::{extension}, {type});
+                template_init_variable = """    m_{name_with_suffix} = new TVariable(BuiltInId::{name_with_suffix}, BuiltInName::{name}, SymbolType::BuiltIn, TExtension::{extension}, {type});
     {{
         TConstantUnion *unionArray = new TConstantUnion[{object_size}];
         for (size_t index = 0u; index < {object_size}; ++index)
         {{
             unionArray[index].setIConst({value}[index]);
         }}
-        static_cast<TVariable *>(mVar_{name_with_suffix})->shareConstPointer(unionArray);
+        static_cast<TVariable *>(m_{name_with_suffix})->shareConstPointer(unionArray);
     }}"""
 
         else:
@@ -1713,16 +1595,16 @@
 
             template_get_variable_definition = """const TVariable *{name_with_suffix}()
 {{
-    return &kVar_{name_with_suffix};
+    return &k{name_with_suffix};
 }}
 """
             get_variable_definitions.append(
                 template_get_variable_definition.format(**template_args))
 
             if essl_level != 'GLSL_BUILTINS':
-                obj = '&BuiltInVariable::kVar_{name_with_suffix}'.format(**template_args)
+                obj = '&BuiltInVariable::k{name_with_suffix}'.format(**template_args)
                 # TODO(http://anglebug.com/3835): Add GLSL level once GLSL built-in vars are added
-                get_builtin_if_statements.add_obj(
+                mangled_builtins.add_entry(
                     essl_level, 'COMMON_BUILTINS', shader_type, template_args['name'], obj,
                     template_args['essl_extension'], template_args['glsl_extension'],
                     script_generated_hash_tests)
@@ -1730,26 +1612,26 @@
         if is_member:
             init_member_variables.append(template_init_variable.format(**template_args))
 
-            template_declare_member_variable = 'TSymbol *mVar_{name_with_suffix} = nullptr;'
+            template_declare_member_variable = 'TSymbol *m_{name_with_suffix} = nullptr;'
             declare_member_variables.append(
                 template_declare_member_variable.format(**template_args))
 
-            obj = 'mVar_{name_with_suffix}'.format(**template_args)
+            obj = 'm_{name_with_suffix}'.format(**template_args)
 
             # TODO(http://anglebug.com/3835): Add GLSL level once GLSL built-in vars are added
-            get_builtin_if_statements.add_obj(
-                essl_level, 'COMMON_BUILTINS', shader_type, template_args['name'], obj,
-                template_args['essl_extension'], template_args['glsl_extension'],
-                script_generated_hash_tests, True)
+            mangled_builtins.add_entry(essl_level, 'COMMON_BUILTINS', shader_type,
+                                       template_args['name'], obj, template_args['essl_extension'],
+                                       template_args['glsl_extension'],
+                                       script_generated_hash_tests)
 
         id_counter += 1
 
 
 def process_variable_group(shader_type, group_name, group, builtin_id_declarations,
                            builtin_id_definitions, name_declarations, init_member_variables,
-                           get_variable_declarations, get_builtin_if_statements,
-                           declare_member_variables, variable_declarations,
-                           get_variable_definitions, script_generated_hash_tests):
+                           get_variable_declarations, mangled_builtins, declare_member_variables,
+                           variable_declarations, get_variable_definitions,
+                           script_generated_hash_tests):
     global id_counter
 
     if 'shader_type' in group:
@@ -1757,7 +1639,7 @@
 
     process_single_variable_group(shader_type, group_name, group, builtin_id_declarations,
                                   builtin_id_definitions, name_declarations, init_member_variables,
-                                  get_variable_declarations, get_builtin_if_statements,
+                                  get_variable_declarations, mangled_builtins,
                                   declare_member_variables, variable_declarations,
                                   get_variable_definitions, script_generated_hash_tests)
 
@@ -1766,7 +1648,7 @@
             process_variable_group(
                 shader_type, subgroup_name, subgroup, builtin_id_declarations,
                 builtin_id_definitions, name_declarations, init_member_variables,
-                get_variable_declarations, get_builtin_if_statements, declare_member_variables,
+                get_variable_declarations, mangled_builtins, declare_member_variables,
                 variable_declarations, get_variable_definitions, script_generated_hash_tests)
 
 
@@ -1797,9 +1679,6 @@
     declare_member_variables = []
     init_member_variables = []
 
-    # Declarations of UnmangledBuiltIn objects
-    unmangled_builtin_declarations = set()
-
     # Code for testing that script-generated hashes match with runtime computed hashes.
     script_generated_hash_tests = OrderedDict()
     unmangled_script_generated_hash_tests = OrderedDict()
@@ -1852,7 +1731,7 @@
     mangled_S1 = f1.salt
     mangled_S2 = f2.salt
     # Array for querying mangled builtins
-    get_builtin_if_statements = GroupedList(mangled_hashfn, num_mangled_names)
+    mangled_builtins = GroupedList(mangled_hashfn, num_mangled_names)
 
     # Hashing unmangled names
     unmangled_names = list(dict.fromkeys(unmangled_names))
@@ -1867,23 +1746,24 @@
     unmangled_function_if_statements = UnmangledGroupedList(unmangled_hashfn, num_unmangled_names)
 
     for group_name, group in parsed_functions.iteritems():
-        process_function_group(group_name, group, parameter_declarations, name_declarations,
-                               unmangled_function_if_statements, unmangled_builtin_declarations,
-                               defined_function_variants, builtin_id_declarations,
-                               builtin_id_definitions, defined_parameter_names,
-                               variable_declarations, function_declarations,
-                               script_generated_hash_tests, unmangled_script_generated_hash_tests,
-                               get_builtin_if_statements, is_in_group_definitions)
+        process_function_group(
+            group_name, group, parameter_declarations, name_declarations,
+            unmangled_function_if_statements, defined_function_variants, builtin_id_declarations,
+            builtin_id_definitions, defined_parameter_names, variable_declarations,
+            function_declarations, script_generated_hash_tests,
+            unmangled_script_generated_hash_tests, mangled_builtins, is_in_group_definitions)
 
     parameter_declarations = prune_parameters_arrays(parameter_declarations, function_declarations)
 
     for group_name, group in parsed_variables.iteritems():
         process_variable_group('NONE', group_name, group, builtin_id_declarations,
                                builtin_id_definitions, name_declarations, init_member_variables,
-                               get_variable_declarations, get_builtin_if_statements,
+                               get_variable_declarations, mangled_builtins,
                                declare_member_variables, variable_declarations,
                                get_variable_definitions, script_generated_hash_tests)
 
+    mangled_builtins.update_arrays()
+
     output_strings = {
         'script_name':
             os.path.basename(__file__),
@@ -1917,20 +1797,22 @@
             '\n'.join(declare_member_variables),
         'init_member_variables':
             '\n'.join(init_member_variables),
-        'mangled_array':
-            get_builtin_if_statements.get_array(),
+        'mangled_names_array':
+            ',\n'.join(mangled_builtins.get_names()),
+        'mangled_offsets_array':
+            '\n'.join(mangled_builtins.get_offsets()),
+        'mangled_rules':
+            ',\n'.join(mangled_builtins.get_rules()),
         'unmangled_array':
-            unmangled_function_if_statements.get_array(unmangled_builtin_declarations),
+            ', '.join(unmangled_function_if_statements.get_array()),
         'max_unmangled_name_length':
             unmangled_function_if_statements.get_max_name_length(),
         'max_mangled_name_length':
-            get_builtin_if_statements.get_max_name_length(),
+            mangled_builtins.get_max_name_length(),
         'num_unmangled_names':
             num_unmangled_names,
         'num_mangled_names':
             num_mangled_names,
-        'unmangled_builtin_declarations':
-            '\n'.join(sorted(unmangled_builtin_declarations)),
         'script_generated_hash_tests':
             '\n'.join(script_generated_hash_tests.iterkeys()),
         'unmangled_script_generated_hash_tests':
diff --git a/Source/ThirdParty/ANGLE/src/feature_support_util/feature_support_util.cpp b/Source/ThirdParty/ANGLE/src/feature_support_util/feature_support_util.cpp
index 4a1b867..00700c5 100644
--- a/Source/ThirdParty/ANGLE/src/feature_support_util/feature_support_util.cpp
+++ b/Source/ThirdParty/ANGLE/src/feature_support_util/feature_support_util.cpp
@@ -41,7 +41,9 @@
 #    define WARN(...) printf(__VA_ARGS__)
 #    define INFO(...) printf(__VA_ARGS__)
 #    define DEBUG(...) printf(__VA_ARGS__)
-#    define VERBOSE(...) printf(__VA_ARGS__)
+// Uncomment for debugging.
+//#    define VERBOSE(...) printf(__VA_ARGS__)
+#    define VERBOSE(...)
 #endif  // defined(ANDROID)
 
 // JSON values are generally composed of either:
diff --git a/Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo_win.cpp b/Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo_win.cpp
index 878f0f5..f4bb137 100644
--- a/Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo_win.cpp
+++ b/Source/ThirdParty/ANGLE/src/gpu_info_util/SystemInfo_win.cpp
@@ -14,7 +14,6 @@
 // Windows.h needs to be included first
 #include <windows.h>
 
-#include <d3d10.h>
 #include <dxgi.h>
 
 #include <array>
@@ -28,11 +27,20 @@
 
 bool GetDevicesFromDXGI(std::vector<GPUDeviceInfo> *devices)
 {
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
+    IDXGIFactory1 *factory;
+    if (!SUCCEEDED(
+            CreateDXGIFactory1(__uuidof(IDXGIFactory1), reinterpret_cast<void **>(&factory))))
+    {
+        return false;
+    }
+#else
     IDXGIFactory *factory;
     if (!SUCCEEDED(CreateDXGIFactory(__uuidof(IDXGIFactory), reinterpret_cast<void **>(&factory))))
     {
         return false;
     }
+#endif
 
     UINT i                = 0;
     IDXGIAdapter *adapter = nullptr;
@@ -42,7 +50,7 @@
         adapter->GetDesc(&desc);
 
         LARGE_INTEGER umdVersion;
-        if (adapter->CheckInterfaceSupport(__uuidof(ID3D10Device), &umdVersion) ==
+        if (adapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &umdVersion) ==
             DXGI_ERROR_UNSUPPORTED)
         {
             adapter->Release();
@@ -53,11 +61,11 @@
         uint64_t intVersion = umdVersion.QuadPart;
         std::ostringstream o;
 
-        const uint64_t kMask = 0xFF;
-        o << ((intVersion >> 48) & kMask) << ".";
-        o << ((intVersion >> 32) & kMask) << ".";
-        o << ((intVersion >> 16) & kMask) << ".";
-        o << (intVersion & kMask);
+        constexpr uint64_t kMask16 = std::numeric_limits<uint16_t>::max();
+        o << ((intVersion >> 48) & kMask16) << ".";
+        o << ((intVersion >> 32) & kMask16) << ".";
+        o << ((intVersion >> 16) & kMask16) << ".";
+        o << (intVersion & kMask16);
 
         GPUDeviceInfo device;
         device.vendorId      = desc.VendorId;
@@ -95,9 +103,11 @@
     // can override the heuristic to find the active GPU
     info->activeGPUIndex = 0;
 
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
     // Override isOptimus. nvd3d9wrap.dll is loaded into all processes when Optimus is enabled.
     HMODULE nvd3d9wrap = GetModuleHandleW(L"nvd3d9wrap.dll");
     info->isOptimus    = nvd3d9wrap != nullptr;
+#endif
 
     return true;
 }
diff --git a/Source/ThirdParty/ANGLE/src/image_util/loadimage.cpp b/Source/ThirdParty/ANGLE/src/image_util/loadimage.cpp
index ff5ba48..8b568f2 100644
--- a/Source/ThirdParty/ANGLE/src/image_util/loadimage.cpp
+++ b/Source/ThirdParty/ANGLE/src/image_util/loadimage.cpp
@@ -1236,6 +1236,86 @@
     }
 }
 
+void LoadD24S8ToD32F(size_t width,
+                     size_t height,
+                     size_t depth,
+                     const uint8_t *input,
+                     size_t inputRowPitch,
+                     size_t inputDepthPitch,
+                     uint8_t *output,
+                     size_t outputRowPitch,
+                     size_t outputDepthPitch)
+{
+    for (size_t z = 0; z < depth; z++)
+    {
+        for (size_t y = 0; y < height; y++)
+        {
+            const uint32_t *source =
+                priv::OffsetDataPointer<uint32_t>(input, y, z, inputRowPitch, inputDepthPitch);
+            float *destDepth =
+                priv::OffsetDataPointer<float>(output, y, z, outputRowPitch, outputDepthPitch);
+            for (size_t x = 0; x < width; x++)
+            {
+                uint32_t sourcePixel = (source[x] >> 8) & 0xFFFFFF;
+                destDepth[x]         = sourcePixel / static_cast<float>(0xFFFFFF);
+            }
+        }
+    }
+}
+
+void LoadD32ToD32FX32(size_t width,
+                      size_t height,
+                      size_t depth,
+                      const uint8_t *input,
+                      size_t inputRowPitch,
+                      size_t inputDepthPitch,
+                      uint8_t *output,
+                      size_t outputRowPitch,
+                      size_t outputDepthPitch)
+{
+    for (size_t z = 0; z < depth; z++)
+    {
+        for (size_t y = 0; y < height; y++)
+        {
+            const uint32_t *source =
+                priv::OffsetDataPointer<uint32_t>(input, y, z, inputRowPitch, inputDepthPitch);
+            float *destDepth =
+                priv::OffsetDataPointer<float>(output, y, z, outputRowPitch, outputDepthPitch);
+            for (size_t x = 0; x < width; x++)
+            {
+                destDepth[x * 2] = source[x] / static_cast<float>(0xFFFFFFFF);
+            }
+        }
+    }
+}
+
+void LoadD32ToD32F(size_t width,
+                   size_t height,
+                   size_t depth,
+                   const uint8_t *input,
+                   size_t inputRowPitch,
+                   size_t inputDepthPitch,
+                   uint8_t *output,
+                   size_t outputRowPitch,
+                   size_t outputDepthPitch)
+{
+    for (size_t z = 0; z < depth; z++)
+    {
+        for (size_t y = 0; y < height; y++)
+        {
+            const uint32_t *source =
+                priv::OffsetDataPointer<uint32_t>(input, y, z, inputRowPitch, inputDepthPitch);
+            float *destDepth =
+                priv::OffsetDataPointer<float>(output, y, z, outputRowPitch, outputDepthPitch);
+            for (size_t x = 0; x < width; x++)
+            {
+                uint32_t sourcePixel = source[x];
+                destDepth[x]         = sourcePixel / static_cast<float>(0xFFFFFFFF);
+            }
+        }
+    }
+}
+
 void LoadD32FToD32F(size_t width,
                     size_t height,
                     size_t depth,
diff --git a/Source/ThirdParty/ANGLE/src/image_util/loadimage.h b/Source/ThirdParty/ANGLE/src/image_util/loadimage.h
index 21e0a9e..fc5370c 100644
--- a/Source/ThirdParty/ANGLE/src/image_util/loadimage.h
+++ b/Source/ThirdParty/ANGLE/src/image_util/loadimage.h
@@ -405,6 +405,36 @@
                           size_t outputRowPitch,
                           size_t outputDepthPitch);
 
+void LoadD24S8ToD32F(size_t width,
+                     size_t height,
+                     size_t depth,
+                     const uint8_t *input,
+                     size_t inputRowPitch,
+                     size_t inputDepthPitch,
+                     uint8_t *output,
+                     size_t outputRowPitch,
+                     size_t outputDepthPitch);
+
+void LoadD32ToD32FX32(size_t width,
+                      size_t height,
+                      size_t depth,
+                      const uint8_t *input,
+                      size_t inputRowPitch,
+                      size_t inputDepthPitch,
+                      uint8_t *output,
+                      size_t outputRowPitch,
+                      size_t outputDepthPitch);
+
+void LoadD32ToD32F(size_t width,
+                   size_t height,
+                   size_t depth,
+                   const uint8_t *input,
+                   size_t inputRowPitch,
+                   size_t inputDepthPitch,
+                   uint8_t *output,
+                   size_t outputRowPitch,
+                   size_t outputDepthPitch);
+
 void LoadD32FToD32F(size_t width,
                     size_t height,
                     size_t depth,
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Buffer.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Buffer.cpp
index 05f2269..d5f4e3a 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Buffer.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Buffer.cpp
@@ -39,7 +39,7 @@
 BufferState::~BufferState() {}
 
 Buffer::Buffer(rx::GLImplFactory *factory, BufferID id)
-    : RefCountObject(id.value),
+    : RefCountObject(id),
       mImpl(factory->createBuffer(mState)),
       mImplObserver(this, kImplementationSubjectIndex)
 {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Buffer.h b/Source/ThirdParty/ANGLE/src/libANGLE/Buffer.h
index 437ce2a..e41b475 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Buffer.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Buffer.h
@@ -64,7 +64,7 @@
     int mTransformFeedbackGenericBindingCount;
 };
 
-class Buffer final : public RefCountObject,
+class Buffer final : public RefCountObject<BufferID>,
                      public LabeledObject,
                      public angle::ObserverInterface,
                      public angle::Subject
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp
index 5b444d0..166a518 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Caps.cpp
@@ -257,11 +257,20 @@
 }
 
 // Checks for GL_OES_texture_half_float_linear support
-static bool DetermineHalfFloatTextureFilteringSupport(const TextureCapsMap &textureCaps)
+static bool DetermineHalfFloatTextureFilteringSupport(const TextureCapsMap &textureCaps,
+                                                      bool checkLegacyFormats)
 {
-    constexpr GLenum requiredFormats[] = {
-        GL_RGBA16F, GL_RGB16F, GL_LUMINANCE_ALPHA16F_EXT, GL_LUMINANCE16F_EXT, GL_ALPHA16F_EXT,
-    };
+    constexpr GLenum requiredFormats[] = {GL_RGBA16F, GL_RGB16F};
+    // If GL_OES_texture_half_float is present, this extension must also support legacy formats
+    // introduced by that extension
+    constexpr GLenum requiredFormatsES2[] = {GL_LUMINANCE_ALPHA16F_EXT, GL_LUMINANCE16F_EXT,
+                                             GL_ALPHA16F_EXT};
+
+    if (checkLegacyFormats &&
+        !GetFormatSupport(textureCaps, requiredFormatsES2, false, true, false, false))
+    {
+        return false;
+    }
 
     return GetFormatSupport(textureCaps, requiredFormats, false, true, false, false);
 }
@@ -277,11 +286,26 @@
 }
 
 // Checks for GL_OES_texture_float_linear support
-static bool DetermineFloatTextureFilteringSupport(const TextureCapsMap &textureCaps)
+static bool DetermineFloatTextureFilteringSupport(const TextureCapsMap &textureCaps,
+                                                  bool checkLegacyFormats)
 {
     constexpr GLenum requiredFormats[] = {
-        GL_RGBA32F, GL_RGB32F, GL_LUMINANCE_ALPHA32F_EXT, GL_LUMINANCE32F_EXT, GL_ALPHA32F_EXT,
+        GL_RGBA32F,
+        GL_RGB32F,
     };
+    // If GL_OES_texture_float is present, this extension must also support legacy formats
+    // introduced by that extension
+    constexpr GLenum requiredFormatsES2[] = {
+        GL_LUMINANCE_ALPHA32F_EXT,
+        GL_LUMINANCE32F_EXT,
+        GL_ALPHA32F_EXT,
+    };
+
+    if (checkLegacyFormats &&
+        !GetFormatSupport(textureCaps, requiredFormatsES2, false, true, false, false))
+    {
+        return false;
+    }
 
     return GetFormatSupport(textureCaps, requiredFormats, false, true, false, false);
 }
@@ -664,9 +688,9 @@
     textureFormatBGRA8888 = DetermineBGRA8TextureSupport(textureCaps);
     textureHalfFloat      = DetermineHalfFloatTextureSupport(textureCaps);
     textureHalfFloatLinear =
-        textureHalfFloat && DetermineHalfFloatTextureFilteringSupport(textureCaps);
+        DetermineHalfFloatTextureFilteringSupport(textureCaps, textureHalfFloat);
     textureFloat           = DetermineFloatTextureSupport(textureCaps);
-    textureFloatLinear     = textureFloat && DetermineFloatTextureFilteringSupport(textureCaps);
+    textureFloatLinear     = DetermineFloatTextureFilteringSupport(textureCaps, textureFloat);
     textureRG              = DetermineRGTextureSupport(textureCaps, textureHalfFloat, textureFloat);
     colorBufferHalfFloat   = textureHalfFloat && DetermineColorBufferHalfFloatSupport(textureCaps);
     textureCompressionDXT1 = DetermineDXT1TextureSupport(textureCaps);
@@ -743,17 +767,17 @@
         map["GL_OES_texture_compression_astc"] = enableableExtension(&Extensions::textureCompressionASTCOES);
         map["GL_EXT_texture_compression_bptc"] = enableableExtension(&Extensions::textureCompressionBPTC);
         map["GL_OES_compressed_ETC1_RGB8_texture"] = enableableExtension(&Extensions::compressedETC1RGB8Texture);
-        map["OES_compressed_ETC2_RGB8_texture"] = enableableExtension(&Extensions::compressedETC2RGB8Texture);
-        map["OES_compressed_ETC2_sRGB8_texture"] = enableableExtension(&Extensions::compressedETC2sRGB8Texture);
-        map["OES_compressed_ETC2_punchthroughA_RGBA8_texture"] = enableableExtension(&Extensions::compressedETC2PunchthroughARGB8Texture);
-        map["OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture"] = enableableExtension(&Extensions::compressedETC2PunchthroughAsRGB8AlphaTexture);
-        map["OES_compressed_ETC2_RGBA8_texture"] = enableableExtension(&Extensions::compressedETC2RGBA8Texture);
-        map["OES_compressed_ETC2_sRGB8_alpha8_texture"] = enableableExtension(&Extensions::compressedETC2sRGB8Alpha8Texture);
-        map["OES_compressed_EAC_R11_unsigned_texture"] = enableableExtension(&Extensions::compressedEACR11UnsignedTexture);
-        map["OES_compressed_EAC_R11_signed_texture"] = enableableExtension(&Extensions::compressedEACR11SignedTexture);
-        map["OES_compressed_EAC_RG11_unsigned_texture"] = enableableExtension(&Extensions::compressedEACRG11UnsignedTexture);
-        map["OES_compressed_EAC_RG11_signed_texture"] = enableableExtension(&Extensions::compressedEACRG11SignedTexture);
-        map["GL_CHROMIUM_compressed_texture_etc"] = enableableExtension(&Extensions::compressedTextureETC);
+        map["GL_OES_compressed_ETC2_RGB8_texture"] = enableableExtension(&Extensions::compressedETC2RGB8Texture);
+        map["GL_OES_compressed_ETC2_sRGB8_texture"] = enableableExtension(&Extensions::compressedETC2sRGB8Texture);
+        map["GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture"] = enableableExtension(&Extensions::compressedETC2PunchthroughARGB8Texture);
+        map["GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture"] = enableableExtension(&Extensions::compressedETC2PunchthroughAsRGB8AlphaTexture);
+        map["GL_OES_compressed_ETC2_RGBA8_texture"] = enableableExtension(&Extensions::compressedETC2RGBA8Texture);
+        map["GL_OES_compressed_ETC2_sRGB8_alpha8_texture"] = enableableExtension(&Extensions::compressedETC2sRGB8Alpha8Texture);
+        map["GL_OES_compressed_EAC_R11_unsigned_texture"] = enableableExtension(&Extensions::compressedEACR11UnsignedTexture);
+        map["GL_OES_compressed_EAC_R11_signed_texture"] = enableableExtension(&Extensions::compressedEACR11SignedTexture);
+        map["GL_OES_compressed_EAC_RG11_unsigned_texture"] = enableableExtension(&Extensions::compressedEACRG11UnsignedTexture);
+        map["GL_OES_compressed_EAC_RG11_signed_texture"] = enableableExtension(&Extensions::compressedEACRG11SignedTexture);
+        map["GL_ANGLE_compressed_texture_etc"] = enableableExtension(&Extensions::compressedTextureETC);
         map["GL_EXT_sRGB"] = enableableExtension(&Extensions::sRGB);
         map["GL_ANGLE_depth_texture"] = esOnlyExtension(&Extensions::depthTextureANGLE);
         map["GL_OES_depth_texture"] = esOnlyExtension(&Extensions::depthTextureOES);
@@ -800,6 +824,7 @@
         map["GL_EXT_color_buffer_float"] = enableableExtension(&Extensions::colorBufferFloat);
         map["GL_OES_vertex_half_float"] = enableableExtension(&Extensions::vertexHalfFloat);
         map["GL_OES_vertex_array_object"] = enableableExtension(&Extensions::vertexArrayObject);
+        map["GL_OES_vertex_type_10_10_10_2"] = enableableExtension(&Extensions::vertexAttribType1010102);
         map["GL_KHR_debug"] = esOnlyExtension(&Extensions::debug);
         map["GL_OES_texture_border_clamp"] = enableableExtension(&Extensions::textureBorderClamp);
         // TODO(jmadill): Enable this when complete.
@@ -849,6 +874,14 @@
         map["GL_ANGLE_memory_size"] = enableableExtension(&Extensions::memorySize);
         // clang-format on
 
+#if defined(ANGLE_ENABLE_ASSERTS)
+        // Verify all extension strings start with GL_
+        for (const auto &extension : map)
+        {
+            ASSERT(extension.first.rfind("GL_", 0) == 0);
+        }
+#endif
+
         return map;
     };
 
@@ -1192,6 +1225,7 @@
     InsertExtensionString("EGL_ANDROID_get_native_client_buffer",                getNativeClientBufferANDROID,       &extensionStrings);
     InsertExtensionString("EGL_ANDROID_native_fence_sync",                       nativeFenceSyncANDROID,             &extensionStrings);
     InsertExtensionString("EGL_ANGLE_create_context_backwards_compatible",       createContextBackwardsCompatible,   &extensionStrings);
+    InsertExtensionString("EGL_KHR_no_config_context",                           noConfigContext,                    &extensionStrings);
     // TODO(jmadill): Enable this when complete.
     //InsertExtensionString("KHR_create_context_no_error",                       createContextNoError,               &extensionStrings);
     // clang-format on
@@ -1208,6 +1242,7 @@
     // clang-format off
     //                   | Extension name                                 | Supported flag                | Output vector   |
     InsertExtensionString("EGL_ANGLE_device_d3d",                          deviceD3D,                      &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_device_cgl",                          deviceCGL,                      &extensionStrings);
     // clang-format on
 
     return extensionStrings;
@@ -1221,24 +1256,27 @@
     std::vector<std::string> extensionStrings;
 
     // clang-format off
-    //                   | Extension name                                   | Supported flag                   | Output vector   |
-    InsertExtensionString("EGL_EXT_client_extensions",                       clientExtensions,                   &extensionStrings);
-    InsertExtensionString("EGL_EXT_platform_base",                           platformBase,                       &extensionStrings);
-    InsertExtensionString("EGL_EXT_platform_device",                         platformDevice,                     &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_platform_angle",                        platformANGLE,                      &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_platform_angle_d3d",                    platformANGLED3D,                   &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_platform_angle_opengl",                 platformANGLEOpenGL,                &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_platform_angle_null",                   platformANGLENULL,                  &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_platform_angle_vulkan",                 platformANGLEVulkan,                &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_platform_angle_context_virtualization", platformANGLEContextVirtualization, &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_device_creation",                       deviceCreation,                     &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_device_creation_d3d11",                 deviceCreationD3D11,                &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_x11_visual",                            x11Visual,                          &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_experimental_present_path",             experimentalPresentPath,            &extensionStrings);
-    InsertExtensionString("EGL_KHR_client_get_all_proc_addresses",           clientGetAllProcAddresses,          &extensionStrings);
-    InsertExtensionString("EGL_KHR_debug",                                   debug,                              &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_explicit_context",                      explicitContext,                    &extensionStrings);
-    InsertExtensionString("EGL_ANGLE_feature_control",                       featureControlANGLE,                &extensionStrings);
+    //                   | Extension name                                    | Supported flag                   | Output vector   |
+    InsertExtensionString("EGL_EXT_client_extensions",                        clientExtensions,                   &extensionStrings);
+    InsertExtensionString("EGL_EXT_platform_base",                            platformBase,                       &extensionStrings);
+    InsertExtensionString("EGL_EXT_platform_device",                          platformDevice,                     &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle",                         platformANGLE,                      &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle_d3d",                     platformANGLED3D,                   &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle_d3d11on12",               platformANGLED3D11ON12,             &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle_device_type_swiftshader", platformANGLEDeviceTypeSwiftShader, &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle_opengl",                  platformANGLEOpenGL,                &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle_null",                    platformANGLENULL,                  &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle_vulkan",                  platformANGLEVulkan,                &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle_metal",                   platformANGLEMetal,                 &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_platform_angle_context_virtualization",  platformANGLEContextVirtualization, &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_device_creation",                        deviceCreation,                     &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_device_creation_d3d11",                  deviceCreationD3D11,                &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_x11_visual",                             x11Visual,                          &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_experimental_present_path",              experimentalPresentPath,            &extensionStrings);
+    InsertExtensionString("EGL_KHR_client_get_all_proc_addresses",            clientGetAllProcAddresses,          &extensionStrings);
+    InsertExtensionString("EGL_KHR_debug",                                    debug,                              &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_explicit_context",                       explicitContext,                    &extensionStrings);
+    InsertExtensionString("EGL_ANGLE_feature_control",                        featureControlANGLE,                &extensionStrings);
     // clang-format on
 
     return extensionStrings;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Caps.h b/Source/ThirdParty/ANGLE/src/libANGLE/Caps.h
index bd82e5b..0e0b17e 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Caps.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Caps.h
@@ -83,7 +83,7 @@
                                const Extensions &extensions,
                                TextureCapsMap *capsMap);
 
-// Returns true if all the formats required to support GL_CHROMIUM_compressed_texture_etc are
+// Returns true if all the formats required to support GL_ANGLE_compressed_texture_etc are
 // present. Does not determine if they are natively supported without decompression.
 bool DetermineCompressedTextureETCSupport(const TextureCapsMap &textureCaps);
 
@@ -234,7 +234,7 @@
     // OES_compressed_EAC_RG11_signed_texture
     bool compressedEACRG11SignedTexture = false;
 
-    // GL_CHROMIUM_compressed_texture_etc
+    // ANGLE_compressed_texture_etc
     // ONLY exposed if ETC texture formats are natively supported without decompression
     // Backends should enable this extension explicitly. It is not enabled with
     // setTextureExtensionSupport, use DetermineCompressedTextureETCSupport to check if all of the
@@ -385,6 +385,9 @@
     // GL_OES_vertex_array_object
     bool vertexArrayObject = false;
 
+    // GL_OES_vertex_type_10_10_10_2
+    bool vertexAttribType1010102 = false;
+
     // GL_KHR_debug
     bool debug                     = false;
     GLuint maxDebugMessageLength   = 0;
@@ -925,6 +928,9 @@
 
     // EGL_ANGLE_create_context_backwards_compatible
     bool createContextBackwardsCompatible = false;
+
+    // EGL_KHR_no_config_context
+    bool noConfigContext = false;
 };
 
 struct DeviceExtensions
@@ -936,6 +942,9 @@
 
     // EGL_ANGLE_device_d3d
     bool deviceD3D = false;
+
+    // EGL_ANGLE_device_cgl
+    bool deviceCGL = false;
 };
 
 struct ClientExtensions
@@ -961,6 +970,9 @@
     // EGL_ANGLE_platform_angle_d3d
     bool platformANGLED3D = false;
 
+    // EGL_ANGLE_platform_angle_d3d11on12
+    bool platformANGLED3D11ON12 = false;
+
     // EGL_ANGLE_platform_angle_opengl
     bool platformANGLEOpenGL = false;
 
@@ -970,6 +982,9 @@
     // EGL_ANGLE_platform_angle_vulkan
     bool platformANGLEVulkan = false;
 
+    // EGL_ANGLE_platform_angle_metal
+    bool platformANGLEMetal = false;
+
     // EGL_ANGLE_platform_angle_context_virtualization
     bool platformANGLEContextVirtualization = false;
 
@@ -996,6 +1011,9 @@
 
     // EGL_ANGLE_feature_control
     bool featureControlANGLE = false;
+
+    // EGL_ANGLE_platform_angle_device_type_swiftshader
+    bool platformANGLEDeviceTypeSwiftShader = false;
 };
 
 }  // namespace egl
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Constants.h b/Source/ThirdParty/ANGLE/src/libANGLE/Constants.h
index 5a2f987..92b426d 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Constants.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Constants.h
@@ -34,11 +34,11 @@
         IMPLEMENTATION_MAX_DRAW_BUFFERS + 2,  // 2 extra for depth and/or stencil buffers
 
     IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS   = 16,
+    IMPLEMENTATION_MAX_GEOMETRY_SHADER_UNIFORM_BUFFERS = 16,
     IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS = 16,
     IMPLEMENTATION_MAX_COMPUTE_SHADER_UNIFORM_BUFFERS  = 16,
-    IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS =
-        IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS +
-        IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS,
+    // GL_EXT_geometry_shader increases the minimum value of GL_MAX_COMBINED_UNIFORM_BLOCKS to 36.
+    IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS = 36,
 
     // GL_EXT_geometry_shader increases the minimum value of GL_MAX_UNIFORM_BUFFER_BINDINGS to 48.
     IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS = 48,
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp
index 130c55b..ba479e5 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp
@@ -292,7 +292,9 @@
 {
     kTexture0SubjectIndex       = 0,
     kTextureMaxSubjectIndex     = kTexture0SubjectIndex + IMPLEMENTATION_MAX_ACTIVE_TEXTURES,
-    kUniformBuffer0SubjectIndex = kTextureMaxSubjectIndex,
+    kImage0SubjectIndex         = kTextureMaxSubjectIndex,
+    kImageMaxSubjectIndex       = kImage0SubjectIndex + IMPLEMENTATION_MAX_IMAGE_UNITS,
+    kUniformBuffer0SubjectIndex = kImageMaxSubjectIndex,
     kUniformBufferMaxSubjectIndex =
         kUniformBuffer0SubjectIndex + IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS,
     kSampler0SubjectIndex    = kUniformBufferMaxSubjectIndex,
@@ -367,6 +369,12 @@
     {
         mSamplerObserverBindings.emplace_back(this, samplerIndex);
     }
+
+    for (angle::SubjectIndex imageIndex = kImage0SubjectIndex; imageIndex < kImageMaxSubjectIndex;
+         ++imageIndex)
+    {
+        mImageObserverBindings.emplace_back(this, imageIndex);
+    }
 }
 
 void Context::initialize()
@@ -535,6 +543,7 @@
     mComputeDirtyBits.set(State::DIRTY_BIT_DISPATCH_INDIRECT_BUFFER_BINDING);
     mComputeDirtyObjects.set(State::DIRTY_OBJECT_TEXTURES);
     mComputeDirtyObjects.set(State::DIRTY_OBJECT_PROGRAM);
+    mComputeDirtyObjects.set(State::DIRTY_OBJECT_IMAGES);
     mComputeDirtyObjects.set(State::DIRTY_OBJECT_SAMPLERS);
 
     mCopyImageDirtyBits.set(State::DIRTY_BIT_READ_FRAMEBUFFER_BINDING);
@@ -548,6 +557,9 @@
 
 egl::Error Context::onDestroy(const egl::Display *display)
 {
+    // Dump frame capture if enabled.
+    mFrameCapture->onEndFrame(this);
+
     if (mGLES1Renderer)
     {
         mGLES1Renderer->onDestroy(this, &mState);
@@ -1163,6 +1175,7 @@
 {
     Texture *tex = mState.mTextureManager->getTexture(texture);
     mState.setImageUnit(this, unit, tex, level, layered, layer, access, format);
+    mImageObserverBindings[unit].bind(tex);
 }
 
 void Context::useProgram(ShaderProgramID program)
@@ -1234,7 +1247,7 @@
     switch (pname)
     {
         case GL_CURRENT_QUERY_EXT:
-            params[0] = mState.getActiveQueryId(target);
+            params[0] = mState.getActiveQueryId(target).value;
             break;
         case GL_QUERY_COUNTER_BITS_EXT:
             switch (target)
@@ -2793,6 +2806,16 @@
 
 void Context::detachTexture(TextureID texture)
 {
+    // The State cannot unbind image observers itself, they are owned by the Context
+    Texture *tex = mState.mTextureManager->getTexture(texture);
+    for (auto &imageBinding : mImageObserverBindings)
+    {
+        if (imageBinding.getSubject() == tex)
+        {
+            imageBinding.reset();
+        }
+    }
+
     // Simple pass-through to State's detachTexture method, as textures do not require
     // allocation map management either here or in the resource manager at detach time.
     // Zero textures are held by the Context, and we don't attempt to request them from
@@ -3271,6 +3294,20 @@
         {
             supportedExtensions.textureSRGBDecode = false;
         }
+
+        // Don't expose GL_OES_texture_float_linear without full legacy float texture support
+        // The renderer may report OES_texture_float_linear without OES_texture_float
+        // This is valid in a GLES 3.0 context, but not in a GLES 2.0 context
+        if (!(supportedExtensions.textureFloat && supportedExtensions.textureHalfFloat))
+        {
+            supportedExtensions.textureFloatLinear     = false;
+            supportedExtensions.textureHalfFloatLinear = false;
+        }
+
+        // Because of the difference in the SNORM to FLOAT conversion formula
+        // between GLES 2.0 and 3.0, vertex type 10_10_10_2 is disabled
+        // when the context version is lower than 3.0
+        supportedExtensions.vertexAttribType1010102 = false;
     }
 
     if (getClientVersion() < ES_3_1)
@@ -3287,6 +3324,25 @@
     {
         // FIXME(geofflang): Don't support EXT_sRGB in non-ES2 contexts
         // supportedExtensions.sRGB = false;
+
+        // If colorBufferFloat is disabled but colorBufferHalfFloat is enabled, then we will expose
+        // some floating-point formats as color buffer targets but reject blits between fixed-point
+        // and floating-point formats (this behavior is only enabled in colorBufferFloat, and must
+        // be rejected if only colorBufferHalfFloat is enabled).
+        // dEQP does not check for this, and will assume that floating-point and fixed-point formats
+        // can be blit onto each other if the format is available.
+        // We require colorBufferFloat to be present in order to enable colorBufferHalfFloat, so
+        // that blitting is always allowed if the requested formats are exposed and have the correct
+        // feature capabilities
+        if (!supportedExtensions.colorBufferFloat)
+        {
+            supportedExtensions.colorBufferHalfFloat = false;
+        }
+
+        // Disable support for CHROMIUM_color_buffer_float_rgb[a] in ES 3.0+, these extensions are
+        // non-conformant in ES 3.0 and superseded by EXT_color_buffer_float.
+        supportedExtensions.colorBufferFloatRGB  = false;
+        supportedExtensions.colorBufferFloatRGBA = false;
     }
 
     // Some extensions are always available because they are implemented in the GL layer.
@@ -3404,6 +3460,14 @@
 
     LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Vertex],
              IMPLEMENTATION_MAX_VERTEX_SHADER_UNIFORM_BUFFERS);
+    LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Geometry],
+             IMPLEMENTATION_MAX_GEOMETRY_SHADER_UNIFORM_BUFFERS);
+    LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Fragment],
+             IMPLEMENTATION_MAX_FRAGMENT_SHADER_UNIFORM_BUFFERS);
+    LimitCap(&mState.mCaps.maxShaderUniformBlocks[ShaderType::Compute],
+             IMPLEMENTATION_MAX_COMPUTE_SHADER_UNIFORM_BUFFERS);
+    LimitCap(&mState.mCaps.maxCombinedUniformBlocks,
+             IMPLEMENTATION_MAX_COMBINED_SHADER_UNIFORM_BUFFERS);
     LimitCap(&mState.mCaps.maxUniformBufferBindings, IMPLEMENTATION_MAX_UNIFORM_BUFFER_BINDINGS);
 
     LimitCap(&mState.mCaps.maxVertexOutputComponents, IMPLEMENTATION_MAX_VARYING_VECTORS * 4);
@@ -8795,6 +8859,14 @@
                     mStateCache.onActiveTextureChange(this);
                 }
             }
+            else if (index < kImageMaxSubjectIndex)
+            {
+                mState.onImageStateChange(this, index - kImage0SubjectIndex);
+                if (message == angle::SubjectMessage::ContentsChanged)
+                {
+                    mState.mDirtyBits.set(State::DirtyBitType::DIRTY_BIT_IMAGE_BINDINGS);
+                }
+            }
             else if (index < kUniformBufferMaxSubjectIndex)
             {
                 mState.onUniformBufferStateChange(index - kUniformBuffer0SubjectIndex);
@@ -9021,7 +9093,7 @@
         return;
     }
 
-    AttributesMask activeAttribs = isGLES1 ? glState.gles1().getVertexArraysAttributeMask()
+    AttributesMask activeAttribs = isGLES1 ? glState.gles1().getActiveAttributesMask()
                                            : glState.getProgram()->getActiveAttribLocationsMask();
 
     const VertexArray *vao = glState.getVertexArray();
@@ -9308,6 +9380,14 @@
 
 void StateCache::updateVertexAttribTypesValidation(Context *context)
 {
+    VertexAttribTypeCase halfFloatValidity = (context->getExtensions().vertexHalfFloat)
+                                                 ? VertexAttribTypeCase::Valid
+                                                 : VertexAttribTypeCase::Invalid;
+
+    VertexAttribTypeCase vertexType1010102Validity =
+        (context->getExtensions().vertexAttribType1010102) ? VertexAttribTypeCase::ValidSize3or4
+                                                           : VertexAttribTypeCase::Invalid;
+
     if (context->getClientMajorVersion() <= 2)
     {
         mCachedVertexAttribTypesValidation = {{
@@ -9317,6 +9397,7 @@
             {VertexAttribType::UnsignedShort, VertexAttribTypeCase::Valid},
             {VertexAttribType::Float, VertexAttribTypeCase::Valid},
             {VertexAttribType::Fixed, VertexAttribTypeCase::Valid},
+            {VertexAttribType::HalfFloatOES, halfFloatValidity},
         }};
     }
     else
@@ -9332,7 +9413,10 @@
             {VertexAttribType::HalfFloat, VertexAttribTypeCase::Valid},
             {VertexAttribType::Fixed, VertexAttribTypeCase::Valid},
             {VertexAttribType::Int2101010, VertexAttribTypeCase::ValidSize4Only},
+            {VertexAttribType::HalfFloatOES, halfFloatValidity},
             {VertexAttribType::UnsignedInt2101010, VertexAttribTypeCase::ValidSize4Only},
+            {VertexAttribType::Int1010102, vertexType1010102Validity},
+            {VertexAttribType::UnsignedInt1010102, vertexType1010102Validity},
         }};
 
         mCachedIntegerVertexAttribTypesValidation = {{
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Context.h b/Source/ThirdParty/ANGLE/src/libANGLE/Context.h
index 22aba60..7fab36e2 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Context.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Context.h
@@ -122,6 +122,7 @@
     Invalid        = 0,
     Valid          = 1,
     ValidSize4Only = 2,
+    ValidSize3or4  = 3,
 };
 
 // Helper class for managing cache variables and state changes.
@@ -714,6 +715,7 @@
     angle::ObserverBinding mReadFramebufferObserverBinding;
     std::vector<angle::ObserverBinding> mUniformBufferObserverBindings;
     std::vector<angle::ObserverBinding> mSamplerObserverBindings;
+    std::vector<angle::ObserverBinding> mImageObserverBindings;
 
     // Not really a property of context state. The size and contexts change per-api-call.
     mutable angle::ScratchBuffer mScratchBuffer;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp
index 734fb88..e549af6 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Device.cpp
@@ -101,11 +101,12 @@
     return mLabel;
 }
 
-Error Device::getDevice(EGLAttrib *value)
+Error Device::getAttribute(EGLint attribute, EGLAttrib *value)
 {
-    void *nativeDevice = nullptr;
-    egl::Error error   = getImplementation()->getDevice(&nativeDevice);
-    *value             = reinterpret_cast<EGLAttrib>(nativeDevice);
+    void *nativeAttribute = nullptr;
+    egl::Error error =
+        getImplementation()->getAttribute(getOwningDisplay(), attribute, &nativeAttribute);
+    *value = reinterpret_cast<EGLAttrib>(nativeAttribute);
     return error;
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Device.h b/Source/ThirdParty/ANGLE/src/libANGLE/Device.h
index e360b0c..e28e532 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Device.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Device.h
@@ -32,7 +32,7 @@
     void setLabel(EGLLabelKHR label) override;
     EGLLabelKHR getLabel() const override;
 
-    Error getDevice(EGLAttrib *value);
+    Error getAttribute(EGLint attribute, EGLAttrib *value);
     Display *getOwningDisplay() { return mOwningDisplay; }
     EGLint getType();
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp
index 84449c1..f36d34d 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Display.cpp
@@ -42,6 +42,8 @@
 #include "libANGLE/trace.h"
 
 #if defined(ANGLE_ENABLE_D3D9) || defined(ANGLE_ENABLE_D3D11)
+#    include <versionhelpers.h>
+
 #    include "libANGLE/renderer/d3d/DisplayD3D.h"
 #endif
 
@@ -924,7 +926,8 @@
     if (usesProgramCacheControl)
     {
         bool programCacheControlEnabled =
-            mAttributeMap.get(EGL_CONTEXT_PROGRAM_BINARY_CACHE_ENABLED_ANGLE, GL_FALSE);
+            (mAttributeMap.get(EGL_CONTEXT_PROGRAM_BINARY_CACHE_ENABLED_ANGLE, GL_FALSE) ==
+             GL_TRUE);
         // A program cache size of zero indicates it should be disabled.
         if (!programCacheControlEnabled || mMemoryProgramCache.maxSize() == 0)
         {
@@ -1222,6 +1225,10 @@
     extensions.platformDevice   = true;
 #endif
 
+#if defined(ANGLE_ENABLE_D3D11)
+    extensions.platformANGLED3D11ON12 = IsWindows10OrGreater();
+#endif
+
 #if defined(ANGLE_ENABLE_OPENGL)
     extensions.platformANGLEOpenGL = true;
 
@@ -1240,7 +1247,8 @@
 #endif
 
 #if defined(ANGLE_ENABLE_VULKAN)
-    extensions.platformANGLEVulkan = true;
+    extensions.platformANGLEVulkan                = true;
+    extensions.platformANGLEDeviceTypeSwiftShader = true;
 #endif
 
 #if defined(ANGLE_USE_X11)
@@ -1367,7 +1375,7 @@
         return true;
     }
 
-#if defined(ANGLE_PLATFORM_WINDOWS) && !defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if defined(ANGLE_PLATFORM_WINDOWS) && !defined(ANGLE_ENABLE_WINDOWS_UWP)
     if (display == EGL_SOFTWARE_DISPLAY_ANGLE || display == EGL_D3D11_ELSE_D3D9_DISPLAY_ANGLE ||
         display == EGL_D3D11_ONLY_DISPLAY_ANGLE)
     {
@@ -1387,8 +1395,8 @@
 void Display::initializeFrontendFeatures()
 {
     // Enable on all Impls
-    mFrontendFeatures.loseContextOnOutOfMemory.enabled          = true;
-    mFrontendFeatures.scalarizeVecAndMatConstructorArgs.enabled = true;
+    ANGLE_FEATURE_CONDITION((&mFrontendFeatures), loseContextOnOutOfMemory, true)
+    ANGLE_FEATURE_CONDITION((&mFrontendFeatures), scalarizeVecAndMatConstructorArgs, true)
 
     mImplementation->initializeFrontendFeatures(&mFrontendFeatures);
 
@@ -1541,6 +1549,9 @@
         case EGL_FEATURE_STATUS_ANGLE:
             result = angle::FeatureStatusToString(mFeatures[index]->enabled);
             break;
+        case EGL_FEATURE_CONDITION_ANGLE:
+            result = mFeatures[index]->condition;
+            break;
         default:
             UNREACHABLE();
             return nullptr;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/ErrorStrings.h b/Source/ThirdParty/ANGLE/src/libANGLE/ErrorStrings.h
index 5197fd3..e86fe69 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/ErrorStrings.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/ErrorStrings.h
@@ -329,6 +329,7 @@
 MSG kInvalidVertexArray = "Vertex array does not exist.";
 MSG kInvalidVertexArrayName = "name is not a valid vertex array.";
 MSG kInvalidVertexAttribSize2101010 = "Type is INT_2_10_10_10_REV or UNSIGNED_INT_2_10_10_10_REV and size is not 4.";
+MSG kInvalidVertexAttribSize1010102 = "Type is INT_10_10_10_2_OES or UNSIGNED_INT_10_10_10_2_OES and size is not 3 or 4.";
 MSG kInvalidVertexAttrSize = "Vertex attribute size must be 1 = 2 = 3 = or 4.";
 MSG kInvalidVertexPointerSize = "Size for built-in vertex attribute is outside allowed range.";
 MSG kInvalidVertexPointerStride = "Invalid stride for built-in vertex attribute.";
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Fence.h b/Source/ThirdParty/ANGLE/src/libANGLE/Fence.h
index 738e713..32939be 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Fence.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Fence.h
@@ -48,7 +48,7 @@
     GLenum mCondition;
 };
 
-class Sync final : public RefCountObject, public LabeledObject
+class Sync final : public RefCountObject<GLuint>, public LabeledObject
 {
   public:
     Sync(rx::SyncImpl *impl, GLuint id);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.cpp
index d37dbcb..c470512 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.cpp
@@ -17,6 +17,10 @@
 #include "libANGLE/VertexArray.h"
 #include "libANGLE/gl_enum_utils_autogen.h"
 
+#if !ANGLE_CAPTURE_ENABLED
+#    error Frame capture must be enbled to include this file.
+#endif  // !ANGLE_CAPTURE_ENABLED
+
 #ifdef ANGLE_PLATFORM_ANDROID
 #    define ANGLE_CAPTURE_PATH ("/sdcard/Android/data/" + CurrentAPKName() + "/")
 
@@ -53,19 +57,9 @@
 
 namespace angle
 {
-#if !ANGLE_CAPTURE_ENABLED
-CallCapture::~CallCapture() {}
-ParamBuffer::~ParamBuffer() {}
-ParamCapture::~ParamCapture() {}
-
-FrameCapture::FrameCapture() {}
-FrameCapture::~FrameCapture() {}
-void FrameCapture::onEndFrame(const gl::Context *context) {}
-void FrameCapture::replay(gl::Context *context) {}
-#else
 namespace
 {
-std::string GetCaptureFileName(int contextId, size_t frameIndex, const char *suffix)
+std::string GetCaptureFileName(int contextId, uint32_t frameIndex, const char *suffix)
 {
     std::stringstream fnameStream;
     fnameStream << "angle_capture_context" << contextId << "_frame" << std::setfill('0')
@@ -73,7 +67,7 @@
     return fnameStream.str();
 }
 
-std::string GetCaptureFilePath(int contextId, size_t frameIndex, const char *suffix)
+std::string GetCaptureFilePath(int contextId, uint32_t frameIndex, const char *suffix)
 {
     return ANGLE_CAPTURE_PATH + GetCaptureFileName(contextId, frameIndex, suffix);
 }
@@ -110,6 +104,415 @@
     std::string str(data.begin(), data.end() - 1);
     out << "\"" << str << "\"";
 }
+
+void WriteStringPointerParamReplay(DataCounters *counters,
+                                   std::ostream &out,
+                                   std::ostream &header,
+                                   const CallCapture &call,
+                                   const ParamCapture &param)
+{
+    int counter = counters->getAndIncrement(call.entryPoint, param.name);
+
+    header << "const char *";
+    WriteParamStaticVarName(call, param, counter, header);
+    header << "[] = { \n";
+
+    for (const std::vector<uint8_t> &data : param.data)
+    {
+        // null terminate C style string
+        ASSERT(data.size() > 0 && data.back() == '\0');
+        std::string str(data.begin(), data.end() - 1);
+        header << "    R\"(" << str << ")\",\n";
+    }
+
+    header << " };\n";
+    WriteParamStaticVarName(call, param, counter, out);
+}
+
+template <typename ParamT>
+void WriteResourceIDPointerParamReplay(DataCounters *counters,
+                                       std::ostream &out,
+                                       std::ostream &header,
+                                       const CallCapture &call,
+                                       const ParamCapture &param)
+{
+    int counter = counters->getAndIncrement(call.entryPoint, param.name);
+
+    header << "const GLuint ";
+    WriteParamStaticVarName(call, param, counter, header);
+    header << "[] = { ";
+
+    const ResourceIDType resourceIDType = GetResourceIDTypeFromParamType(param.type);
+    ASSERT(resourceIDType != ResourceIDType::InvalidEnum);
+    const char *name = GetResourceIDTypeName(resourceIDType);
+
+    GLsizei n = call.params.getParam("n", ParamType::TGLsizei, 0).value.GLsizeiVal;
+    ASSERT(param.data.size() == 1);
+    const ParamT *returnedIDs = reinterpret_cast<const ParamT *>(param.data[0].data());
+    for (GLsizei resIndex = 0; resIndex < n; ++resIndex)
+    {
+        ParamT id = returnedIDs[resIndex];
+        if (resIndex > 0)
+        {
+            header << ", ";
+        }
+        header << "g" << name << "Map[" << id.value << "]";
+    }
+
+    header << " };\n    ";
+
+    WriteParamStaticVarName(call, param, counter, out);
+}
+
+void WriteBinaryParamReplay(DataCounters *counters,
+                            std::ostream &out,
+                            std::ostream &header,
+                            const CallCapture &call,
+                            const ParamCapture &param,
+                            std::vector<uint8_t> *binaryData)
+{
+    int counter = counters->getAndIncrement(call.entryPoint, param.name);
+
+    ASSERT(param.data.size() == 1);
+    const std::vector<uint8_t> &data = param.data[0];
+
+    if (data.size() > kInlineDataThreshold)
+    {
+        size_t offset = binaryData->size();
+        binaryData->resize(offset + data.size());
+        memcpy(binaryData->data() + offset, data.data(), data.size());
+        if (param.type == ParamType::TvoidConstPointer || param.type == ParamType::TvoidPointer)
+        {
+            out << "&gBinaryData[" << offset << "]";
+        }
+        else
+        {
+            out << "reinterpret_cast<" << ParamTypeToString(param.type) << ">(&gBinaryData["
+                << offset << "])";
+        }
+    }
+    else
+    {
+        ParamType overrideType = param.type;
+        if (param.type == ParamType::TGLvoidConstPointer ||
+            param.type == ParamType::TvoidConstPointer)
+        {
+            overrideType = ParamType::TGLubyteConstPointer;
+        }
+
+        std::string paramTypeString = ParamTypeToString(overrideType);
+        header << paramTypeString.substr(0, paramTypeString.length() - 1);
+        WriteParamStaticVarName(call, param, counter, header);
+
+        header << "[] = { ";
+
+        switch (overrideType)
+        {
+            case ParamType::TGLintConstPointer:
+                WriteInlineData<GLint>(data, header);
+                break;
+            case ParamType::TGLshortConstPointer:
+                WriteInlineData<GLshort>(data, header);
+                break;
+            case ParamType::TGLfloatConstPointer:
+                WriteInlineData<GLfloat>(data, header);
+                break;
+            case ParamType::TGLubyteConstPointer:
+                WriteInlineData<GLubyte, int>(data, header);
+                break;
+            case ParamType::TGLuintConstPointer:
+            case ParamType::TGLenumConstPointer:
+                WriteInlineData<GLuint>(data, header);
+                break;
+            default:
+                UNIMPLEMENTED();
+                break;
+        }
+
+        header << " };\n";
+
+        WriteParamStaticVarName(call, param, counter, out);
+    }
+}
+void WriteCppReplayForCall(const CallCapture &call,
+                           DataCounters *counters,
+                           std::ostream &out,
+                           std::ostream &header,
+                           std::vector<uint8_t> *binaryData)
+{
+    std::ostringstream callOut;
+
+    if (call.entryPoint == gl::EntryPoint::CreateShader ||
+        call.entryPoint == gl::EntryPoint::CreateProgram)
+    {
+        GLuint id = call.params.getReturnValue().value.GLuintVal;
+        callOut << "gShaderProgramMap[" << id << "] = ";
+    }
+
+    callOut << call.name() << "(";
+
+    bool first = true;
+    for (const ParamCapture &param : call.params.getParamCaptures())
+    {
+        if (!first)
+        {
+            callOut << ", ";
+        }
+
+        if (param.arrayClientPointerIndex != -1)
+        {
+            callOut << "gClientArrays[" << param.arrayClientPointerIndex << "].data()";
+        }
+        else if (param.readBufferSizeBytes > 0)
+        {
+            callOut << "reinterpret_cast<" << ParamTypeToString(param.type)
+                    << ">(gReadBuffer.data())";
+        }
+        else if (param.data.empty())
+        {
+            if (param.type == ParamType::TGLenum)
+            {
+                OutputGLenumString(callOut, param.enumGroup, param.value.GLenumVal);
+            }
+            else if (param.type == ParamType::TGLbitfield)
+            {
+                OutputGLbitfieldString(callOut, param.enumGroup, param.value.GLbitfieldVal);
+            }
+            else
+            {
+                callOut << param;
+            }
+        }
+        else
+        {
+            switch (param.type)
+            {
+                case ParamType::TGLcharConstPointer:
+                    WriteStringParamReplay(callOut, param);
+                    break;
+                case ParamType::TGLcharConstPointerPointer:
+                    WriteStringPointerParamReplay(counters, callOut, header, call, param);
+                    break;
+                case ParamType::TBufferIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::BufferID>(counters, callOut, out, call,
+                                                                    param);
+                    break;
+                case ParamType::TFenceNVIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::FenceNVID>(counters, callOut, out, call,
+                                                                     param);
+                    break;
+                case ParamType::TFramebufferIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::FramebufferID>(counters, callOut, out,
+                                                                         call, param);
+                    break;
+                case ParamType::TMemoryObjectIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::MemoryObjectID>(counters, callOut, out,
+                                                                          call, param);
+                    break;
+                case ParamType::TProgramPipelineIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::ProgramPipelineID>(counters, callOut, out,
+                                                                             call, param);
+                    break;
+                case ParamType::TQueryIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::QueryID>(counters, callOut, out, call,
+                                                                   param);
+                    break;
+                case ParamType::TRenderbufferIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::RenderbufferID>(counters, callOut, out,
+                                                                          call, param);
+                    break;
+                case ParamType::TSamplerIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::SamplerID>(counters, callOut, out, call,
+                                                                     param);
+                    break;
+                case ParamType::TSemaphoreIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::SemaphoreID>(counters, callOut, out, call,
+                                                                       param);
+                    break;
+                case ParamType::TTextureIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::TextureID>(counters, callOut, out, call,
+                                                                     param);
+                    break;
+                case ParamType::TTransformFeedbackIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::TransformFeedbackID>(counters, callOut,
+                                                                               out, call, param);
+                    break;
+                case ParamType::TVertexArrayIDConstPointer:
+                    WriteResourceIDPointerParamReplay<gl::VertexArrayID>(counters, callOut, out,
+                                                                         call, param);
+                    break;
+                default:
+                    WriteBinaryParamReplay(counters, callOut, header, call, param, binaryData);
+                    break;
+            }
+        }
+
+        first = false;
+    }
+
+    callOut << ")";
+
+    out << callOut.str();
+}
+
+bool AnyClientArray(const gl::AttribArray<size_t> &clientArraySizes)
+{
+    for (size_t size : clientArraySizes)
+    {
+        if (size > 0)
+            return true;
+    }
+
+    return false;
+}
+
+void WriteCppReplay(int contextId,
+                    uint32_t frameIndex,
+                    const std::vector<CallCapture> &calls,
+                    const gl::AttribArray<size_t> &clientArraySizes,
+                    size_t readBufferSize)
+{
+    bool useClientArrays = AnyClientArray(clientArraySizes);
+
+    // Count resource IDs.
+    angle::PackedEnumMap<ResourceIDType, uint32_t, angle::kParamTypeCount> resourceIDCounts = {};
+    for (const CallCapture &call : calls)
+    {
+        for (const ParamCapture &param : call.params.getParamCaptures())
+        {
+            ResourceIDType idType = GetResourceIDTypeFromParamType(param.type);
+            if (idType != ResourceIDType::InvalidEnum)
+            {
+                resourceIDCounts[idType]++;
+            }
+        }
+    }
+
+    DataCounters counters;
+
+    std::stringstream out;
+    std::stringstream header;
+    std::vector<uint8_t> binaryData;
+
+    header << "#include \"util/gles_loader_autogen.h\"\n";
+    header << "\n";
+    header << "#include <cstdio>\n";
+    header << "#include <cstring>\n";
+    header << "#include <vector>\n";
+    header << "#include <unordered_map>\n";
+    header << "\n";
+    header << "namespace\n";
+    header << "{\n";
+    if (readBufferSize > 0)
+    {
+        header << "std::vector<uint8_t> gReadBuffer;\n";
+    }
+    if (useClientArrays)
+    {
+        header << "std::vector<uint8_t> gClientArrays[" << gl::MAX_VERTEX_ATTRIBS << "];\n";
+        header << "void UpdateClientArrayPointer(int arrayIndex, const void *data, GLuint64 size)"
+               << "\n";
+        header << "{\n";
+        header << "    memcpy(gClientArrays[arrayIndex].data(), data, size);\n";
+        header << "}\n";
+    }
+
+    header << "using ResourceMap = std::unordered_map<GLuint, GLuint>;\n";
+    header << "void UpdateResourceMap(ResourceMap *resourceMap, GLuint id, GLsizei "
+              "readBufferOffset)\n";
+    header << "{\n";
+    header << "    GLuint returnedID;\n";
+    header << "    memcpy(&returnedID, &gReadBuffer[readBufferOffset], sizeof(GLuint));\n";
+    header << "    (*resourceMap)[id] = returnedID;\n";
+    header << "}\n";
+    header << "\n";
+    header << "// Resource Maps\n";
+
+    for (ResourceIDType resourceType : AllEnums<ResourceIDType>())
+    {
+        if (resourceIDCounts[resourceType] == 0)
+            continue;
+
+        const char *name = GetResourceIDTypeName(resourceType);
+        header << "ResourceMap g" << name << "Map;\n";
+        header << "void Update" << name << "ID(GLuint id, GLsizei readBufferOffset)\n";
+        header << "{\n";
+        header << "    UpdateResourceMap(&g" << name << "Map, id, readBufferOffset);\n";
+        header << "}\n";
+    }
+
+    out << "void ReplayFrame" << frameIndex << "()\n";
+    out << "{\n";
+    out << "    LoadBinaryData();\n";
+
+    for (size_t arrayIndex = 0; arrayIndex < clientArraySizes.size(); ++arrayIndex)
+    {
+        if (clientArraySizes[arrayIndex] > 0)
+        {
+            out << "    gClientArrays[" << arrayIndex << "].resize(" << clientArraySizes[arrayIndex]
+                << ");\n";
+        }
+    }
+
+    if (readBufferSize > 0)
+    {
+        out << "    gReadBuffer.resize(" << readBufferSize << ");\n";
+    }
+
+    for (const CallCapture &call : calls)
+    {
+        out << "    ";
+        WriteCppReplayForCall(call, &counters, out, header, &binaryData);
+        out << ";\n";
+    }
+
+    if (!binaryData.empty())
+    {
+        std::string dataFilepath = GetCaptureFilePath(contextId, frameIndex, ".angledata");
+
+        FILE *fp = fopen(dataFilepath.c_str(), "wb");
+        if (!fp)
+        {
+            FATAL() << "file " << dataFilepath << " can not be created!: " << strerror(errno);
+        }
+        fwrite(binaryData.data(), 1, binaryData.size(), fp);
+        fclose(fp);
+
+        std::string fname = GetCaptureFileName(contextId, frameIndex, ".angledata");
+        header << "std::vector<uint8_t> gBinaryData;\n";
+        header << "void LoadBinaryData()\n";
+        header << "{\n";
+        header << "    gBinaryData.resize(" << static_cast<int>(binaryData.size()) << ");\n";
+        header << "    FILE *fp = fopen(\"" << fname << "\", \"rb\");\n";
+        header << "    fread(gBinaryData.data(), 1, " << static_cast<int>(binaryData.size())
+               << ", fp);\n";
+        header << "    fclose(fp);\n";
+        header << "}\n";
+    }
+    else
+    {
+        header << "// No binary data.\n";
+        header << "void LoadBinaryData() {}\n";
+    }
+
+    out << "}\n";
+
+    header << "}  // anonymous namespace\n";
+
+    std::string outString    = out.str();
+    std::string headerString = header.str();
+
+    std::string cppFilePath = GetCaptureFilePath(contextId, frameIndex, ".cpp");
+    FILE *fp                = fopen(cppFilePath.c_str(), "w");
+    if (!fp)
+    {
+        FATAL() << "file " << cppFilePath << " can not be created!: " << strerror(errno);
+    }
+    fprintf(fp, "%s\n\n%s", headerString.c_str(), outString.c_str());
+    fclose(fp);
+
+    printf("Saved '%s'.\n", cppFilePath.c_str());
+}
 }  // anonymous namespace
 
 ParamCapture::ParamCapture() : type(ParamType::TGLenum), enumGroup(gl::GLenumGroup::DefaultGroup) {}
@@ -152,6 +555,7 @@
     std::swap(mParamCaptures, other.mParamCaptures);
     std::swap(mClientArrayDataParam, other.mClientArrayDataParam);
     std::swap(mReadBufferSize, other.mReadBufferSize);
+    std::swap(mReturnValueCapture, other.mReturnValueCapture);
     return *this;
 }
 
@@ -335,29 +739,132 @@
     maybeUpdateResourceIDs(context, mCalls.back());
 }
 
+template <typename IDType>
+void FrameCapture::captureUpdateResourceIDs(const gl::Context *context,
+                                            const CallCapture &call,
+                                            const ParamCapture &param)
+{
+    GLsizei n = call.params.getParam("n", ParamType::TGLsizei, 0).value.GLsizeiVal;
+    ASSERT(param.data.size() == 1);
+    const IDType *returnedIDs     = reinterpret_cast<const IDType *>(param.data[0].data());
+    ResourceIDType resourceIDType = GetResourceIDTypeFromParamType(param.type);
+    ASSERT(resourceIDType != ResourceIDType::InvalidEnum);
+    const char *resourceName = GetResourceIDTypeName(resourceIDType);
+
+    std::stringstream updateFuncNameStr;
+    updateFuncNameStr << "Update" << resourceName << "ID";
+    std::string updateFuncName = updateFuncNameStr.str();
+
+    for (GLsizei idIndex = 0; idIndex < n; ++idIndex)
+    {
+        IDType id                = returnedIDs[idIndex];
+        GLsizei readBufferOffset = idIndex * sizeof(gl::RenderbufferID);
+        ParamBuffer params;
+        params.addValueParam("id", ParamType::TGLuint, id.value);
+        params.addValueParam("readBufferOffset", ParamType::TGLsizei, readBufferOffset);
+        mCalls.emplace_back(updateFuncName, std::move(params));
+    }
+}
+
 void FrameCapture::maybeUpdateResourceIDs(const gl::Context *context, const CallCapture &call)
 {
     switch (call.entryPoint)
     {
+        case gl::EntryPoint::GenBuffers:
+        {
+            const ParamCapture &buffers =
+                call.params.getParam("buffersPacked", ParamType::TBufferIDPointer, 1);
+            captureUpdateResourceIDs<gl::BufferID>(context, call, buffers);
+            break;
+        }
+
+        case gl::EntryPoint::GenFencesNV:
+        {
+            const ParamCapture &fences =
+                call.params.getParam("fencesPacked", ParamType::TFenceNVIDPointer, 1);
+            captureUpdateResourceIDs<gl::FenceNVID>(context, call, fences);
+            break;
+        }
+
+        case gl::EntryPoint::GenFramebuffers:
+        case gl::EntryPoint::GenFramebuffersOES:
+        {
+            const ParamCapture &framebuffers =
+                call.params.getParam("framebuffersPacked", ParamType::TFramebufferIDPointer, 1);
+            captureUpdateResourceIDs<gl::FramebufferID>(context, call, framebuffers);
+            break;
+        }
+
+        case gl::EntryPoint::GenPathsCHROMIUM:
+        {
+            // TODO(jmadill): Handle path IDs. http://anglebug.com/3611
+            break;
+        }
+
+        case gl::EntryPoint::GenProgramPipelines:
+        {
+            const ParamCapture &pipelines =
+                call.params.getParam("pipelinesPacked", ParamType::TProgramPipelineIDPointer, 1);
+            captureUpdateResourceIDs<gl::ProgramPipelineID>(context, call, pipelines);
+            break;
+        }
+
+        case gl::EntryPoint::GenQueries:
+        case gl::EntryPoint::GenQueriesEXT:
+        {
+            const ParamCapture &queries =
+                call.params.getParam("idsPacked", ParamType::TQueryIDPointer, 1);
+            captureUpdateResourceIDs<gl::QueryID>(context, call, queries);
+            break;
+        }
+
         case gl::EntryPoint::GenRenderbuffers:
         case gl::EntryPoint::GenRenderbuffersOES:
         {
-            GLsizei n = call.params.getParam("n", ParamType::TGLsizei, 0).value.GLsizeiVal;
             const ParamCapture &renderbuffers =
                 call.params.getParam("renderbuffersPacked", ParamType::TRenderbufferIDPointer, 1);
-            ASSERT(renderbuffers.data.size() == 1);
-            const gl::RenderbufferID *returnedIDs =
-                reinterpret_cast<const gl::RenderbufferID *>(renderbuffers.data[0].data());
+            captureUpdateResourceIDs<gl::RenderbufferID>(context, call, renderbuffers);
+            break;
+        }
 
-            for (GLsizei idIndex = 0; idIndex < n; ++idIndex)
-            {
-                gl::RenderbufferID id    = returnedIDs[idIndex];
-                GLsizei readBufferOffset = idIndex * sizeof(gl::RenderbufferID);
-                ParamBuffer params;
-                params.addValueParam("id", ParamType::TGLuint, id.value);
-                params.addValueParam("readBufferOffset", ParamType::TGLsizei, readBufferOffset);
-                mCalls.emplace_back("UpdateRenderbufferID", std::move(params));
-            }
+        case gl::EntryPoint::GenSamplers:
+        {
+            const ParamCapture &samplers =
+                call.params.getParam("samplersPacked", ParamType::TSamplerIDPointer, 1);
+            captureUpdateResourceIDs<gl::SamplerID>(context, call, samplers);
+            break;
+        }
+
+        case gl::EntryPoint::GenSemaphoresEXT:
+        {
+            const ParamCapture &semaphores =
+                call.params.getParam("semaphoresPacked", ParamType::TSemaphoreIDPointer, 1);
+            captureUpdateResourceIDs<gl::SemaphoreID>(context, call, semaphores);
+            break;
+        }
+
+        case gl::EntryPoint::GenTextures:
+        {
+            const ParamCapture &textures =
+                call.params.getParam("texturesPacked", ParamType::TTextureIDPointer, 1);
+            captureUpdateResourceIDs<gl::TextureID>(context, call, textures);
+            break;
+        }
+
+        case gl::EntryPoint::GenTransformFeedbacks:
+        {
+            const ParamCapture &xfbs =
+                call.params.getParam("idsPacked", ParamType::TTransformFeedbackIDPointer, 1);
+            captureUpdateResourceIDs<gl::TransformFeedbackID>(context, call, xfbs);
+            break;
+        }
+
+        case gl::EntryPoint::GenVertexArrays:
+        case gl::EntryPoint::GenVertexArraysOES:
+        {
+            const ParamCapture &vertexArrays =
+                call.params.getParam("vetexArraysPacked", ParamType::TVertexArrayIDPointer, 1);
+            captureUpdateResourceIDs<gl::VertexArrayID>(context, call, vertexArrays);
             break;
         }
 
@@ -415,339 +922,24 @@
     }
 }
 
-bool FrameCapture::anyClientArray() const
-{
-    for (size_t size : mClientArraySizes)
-    {
-        if (size > 0)
-            return true;
-    }
-
-    return false;
-}
-
 void FrameCapture::onEndFrame(const gl::Context *context)
 {
     if (!mCalls.empty())
     {
-        saveCapturedFrameAsCpp(context->id());
+        WriteCppReplay(context->id(), mFrameIndex, mCalls, mClientArraySizes, mReadBufferSize);
         reset();
         mFrameIndex++;
     }
 }
 
-void FrameCapture::saveCapturedFrameAsCpp(int contextId)
+DataCounters::DataCounters() = default;
+
+DataCounters::~DataCounters() = default;
+
+int DataCounters::getAndIncrement(gl::EntryPoint entryPoint, const std::string &paramName)
 {
-    bool useClientArrays = anyClientArray();
-
-    std::stringstream out;
-    std::stringstream header;
-    std::vector<uint8_t> binaryData;
-
-    header << "#include \"util/gles_loader_autogen.h\"\n";
-    header << "\n";
-    header << "#include <cstdio>\n";
-    header << "#include <cstring>\n";
-    header << "#include <vector>\n";
-    header << "#include <unordered_map>\n";
-    header << "\n";
-    header << "namespace\n";
-    header << "{\n";
-    if (mReadBufferSize > 0)
-    {
-        header << "std::vector<uint8_t> gReadBuffer;\n";
-    }
-    if (useClientArrays)
-    {
-        header << "std::vector<uint8_t> gClientArrays[" << gl::MAX_VERTEX_ATTRIBS << "];\n";
-        header << "void UpdateClientArrayPointer(int arrayIndex, const void *data, GLuint64 size)"
-               << "\n";
-        header << "{\n";
-        header << "    memcpy(gClientArrays[arrayIndex].data(), data, size);\n";
-        header << "}\n";
-    }
-
-    header << "std::unordered_map<GLuint, GLuint> gRenderbufferMap;\n";
-    header << "void UpdateRenderbufferID(GLuint id, GLsizei readBufferOffset)\n";
-    header << "{\n";
-    header << "    GLuint returnedID;\n";
-    header << "    memcpy(&returnedID, &gReadBuffer[readBufferOffset], sizeof(GLuint));\n";
-    header << "    gRenderbufferMap[id] = returnedID;\n";
-    header << "}\n";
-
-    out << "void ReplayFrame" << mFrameIndex << "()\n";
-    out << "{\n";
-    out << "    LoadBinaryData();\n";
-
-    for (size_t arrayIndex = 0; arrayIndex < mClientArraySizes.size(); ++arrayIndex)
-    {
-        if (mClientArraySizes[arrayIndex] > 0)
-        {
-            out << "    gClientArrays[" << arrayIndex << "].resize("
-                << mClientArraySizes[arrayIndex] << ");\n";
-        }
-    }
-
-    if (mReadBufferSize > 0)
-    {
-        out << "    gReadBuffer.resize(" << mReadBufferSize << ");\n";
-    }
-
-    for (const CallCapture &call : mCalls)
-    {
-        out << "    ";
-        writeCallReplay(call, out, header, &binaryData);
-        out << ";\n";
-    }
-
-    if (!binaryData.empty())
-    {
-        std::string dataFilepath = GetCaptureFilePath(contextId, mFrameIndex, ".angledata");
-
-        FILE *fp = fopen(dataFilepath.c_str(), "wb");
-        if (!fp)
-        {
-            FATAL() << "file " << dataFilepath << " can not be created!: " << strerror(errno);
-        }
-        fwrite(binaryData.data(), 1, binaryData.size(), fp);
-        fclose(fp);
-
-        std::string fname = GetCaptureFileName(contextId, mFrameIndex, ".angledata");
-        header << "std::vector<uint8_t> gBinaryData;\n";
-        header << "void LoadBinaryData()\n";
-        header << "{\n";
-        header << "    gBinaryData.resize(" << static_cast<int>(binaryData.size()) << ");\n";
-        header << "    FILE *fp = fopen(\"" << fname << "\", \"rb\");\n";
-        header << "    fread(gBinaryData.data(), 1, " << static_cast<int>(binaryData.size())
-               << ", fp);\n";
-        header << "    fclose(fp);\n";
-        header << "}\n";
-    }
-    else
-    {
-        header << "// No binary data.\n";
-        header << "void LoadBinaryData() {}\n";
-    }
-
-    out << "}\n";
-
-    header << "}  // anonymous namespace\n";
-
-    std::string outString    = out.str();
-    std::string headerString = header.str();
-
-    std::string cppFilePath = GetCaptureFilePath(contextId, mFrameIndex, ".cpp");
-    FILE *fp                = fopen(cppFilePath.c_str(), "w");
-    if (!fp)
-    {
-        FATAL() << "file " << cppFilePath << " can not be created!: " << strerror(errno);
-    }
-    fprintf(fp, "%s\n\n%s", headerString.c_str(), outString.c_str());
-    fclose(fp);
-
-    printf("Saved '%s'.\n", cppFilePath.c_str());
-}
-
-int FrameCapture::getAndIncrementCounter(gl::EntryPoint entryPoint, const std::string &paramName)
-{
-    auto counterKey = std::tie(entryPoint, paramName);
-    return mDataCounters[counterKey]++;
-}
-
-void FrameCapture::writeStringPointerParamReplay(std::ostream &out,
-                                                 std::ostream &header,
-                                                 const CallCapture &call,
-                                                 const ParamCapture &param)
-{
-    int counter = getAndIncrementCounter(call.entryPoint, param.name);
-
-    header << "const char *";
-    WriteParamStaticVarName(call, param, counter, header);
-    header << "[] = { \n";
-
-    for (const std::vector<uint8_t> &data : param.data)
-    {
-        // null terminate C style string
-        ASSERT(data.size() > 0 && data.back() == '\0');
-        std::string str(data.begin(), data.end() - 1);
-        header << "    R\"(" << str << ")\",\n";
-    }
-
-    header << " };\n";
-    WriteParamStaticVarName(call, param, counter, out);
-}
-
-void FrameCapture::writeRenderbufferIDPointerParamReplay(std::ostream &out,
-                                                         std::ostream &header,
-                                                         const CallCapture &call,
-                                                         const ParamCapture &param)
-{
-    int counter = getAndIncrementCounter(call.entryPoint, param.name);
-
-    header << "const GLuint ";
-    WriteParamStaticVarName(call, param, counter, header);
-    header << "[] = { ";
-
-    GLsizei n = call.params.getParam("n", ParamType::TGLsizei, 0).value.GLsizeiVal;
-    const ParamCapture &renderbuffers =
-        call.params.getParam("renderbuffersPacked", ParamType::TRenderbufferIDConstPointer, 1);
-    ASSERT(renderbuffers.data.size() == 1);
-    const gl::RenderbufferID *returnedIDs =
-        reinterpret_cast<const gl::RenderbufferID *>(renderbuffers.data[0].data());
-    for (GLsizei resIndex = 0; resIndex < n; ++resIndex)
-    {
-        gl::RenderbufferID id = returnedIDs[resIndex];
-        if (resIndex > 0)
-        {
-            header << ", ";
-        }
-        header << "gRenderbufferMap[" << id.value << "]";
-    }
-
-    header << " };\n    ";
-
-    WriteParamStaticVarName(call, param, counter, out);
-}
-
-void FrameCapture::writeBinaryParamReplay(std::ostream &out,
-                                          std::ostream &header,
-                                          const CallCapture &call,
-                                          const ParamCapture &param,
-                                          std::vector<uint8_t> *binaryData)
-{
-    int counter = getAndIncrementCounter(call.entryPoint, param.name);
-
-    ASSERT(param.data.size() == 1);
-    const std::vector<uint8_t> &data = param.data[0];
-
-    if (data.size() > kInlineDataThreshold)
-    {
-        size_t offset = binaryData->size();
-        binaryData->resize(offset + data.size());
-        memcpy(binaryData->data() + offset, data.data(), data.size());
-        if (param.type == ParamType::TvoidConstPointer || param.type == ParamType::TvoidPointer)
-        {
-            out << "&gBinaryData[" << offset << "]";
-        }
-        else
-        {
-            out << "reinterpret_cast<" << ParamTypeToString(param.type) << ">(&gBinaryData["
-                << offset << "])";
-        }
-    }
-    else
-    {
-        ParamType overrideType = param.type;
-        if (param.type == ParamType::TGLvoidConstPointer ||
-            param.type == ParamType::TvoidConstPointer)
-        {
-            overrideType = ParamType::TGLubyteConstPointer;
-        }
-
-        std::string paramTypeString = ParamTypeToString(overrideType);
-        header << paramTypeString.substr(0, paramTypeString.length() - 1);
-        WriteParamStaticVarName(call, param, counter, header);
-
-        header << "[] = { ";
-
-        switch (overrideType)
-        {
-            case ParamType::TGLintConstPointer:
-                WriteInlineData<GLint>(data, header);
-                break;
-            case ParamType::TGLshortConstPointer:
-                WriteInlineData<GLshort>(data, header);
-                break;
-            case ParamType::TGLfloatConstPointer:
-                WriteInlineData<GLfloat>(data, header);
-                break;
-            case ParamType::TGLubyteConstPointer:
-                WriteInlineData<GLubyte, int>(data, header);
-                break;
-            case ParamType::TGLuintConstPointer:
-            case ParamType::TGLenumConstPointer:
-                WriteInlineData<GLuint>(data, header);
-                break;
-            default:
-                UNIMPLEMENTED();
-                break;
-        }
-
-        header << " };\n";
-
-        WriteParamStaticVarName(call, param, counter, out);
-    }
-}
-
-void FrameCapture::writeCallReplay(const CallCapture &call,
-                                   std::ostream &out,
-                                   std::ostream &header,
-                                   std::vector<uint8_t> *binaryData)
-{
-    std::ostringstream callOut;
-
-    callOut << call.name() << "(";
-
-    bool first = true;
-    for (const ParamCapture &param : call.params.getParamCaptures())
-    {
-        if (!first)
-        {
-            callOut << ", ";
-        }
-
-        if (param.arrayClientPointerIndex != -1)
-        {
-            callOut << "gClientArrays[" << param.arrayClientPointerIndex << "].data()";
-        }
-        else if (param.readBufferSizeBytes > 0)
-        {
-            callOut << "reinterpret_cast<" << ParamTypeToString(param.type)
-                    << ">(gReadBuffer.data())";
-        }
-        else if (param.data.empty())
-        {
-            if (param.type == ParamType::TGLenum)
-            {
-                OutputGLenumString(callOut, param.enumGroup, param.value.GLenumVal);
-            }
-            else if (param.type == ParamType::TGLbitfield)
-            {
-                OutputGLbitfieldString(callOut, param.enumGroup, param.value.GLbitfieldVal);
-            }
-            else
-            {
-                callOut << param;
-            }
-        }
-        else
-        {
-            switch (param.type)
-            {
-                case ParamType::TGLcharConstPointer:
-                    WriteStringParamReplay(callOut, param);
-                    break;
-                case ParamType::TGLcharConstPointerPointer:
-                    writeStringPointerParamReplay(callOut, header, call, param);
-                    break;
-                case ParamType::TRenderbufferIDConstPointer:
-                    writeRenderbufferIDPointerParamReplay(callOut, out, call, param);
-                    break;
-                case ParamType::TRenderbufferIDPointer:
-                    UNIMPLEMENTED();
-                    break;
-                default:
-                    writeBinaryParamReplay(callOut, header, call, param, binaryData);
-                    break;
-            }
-        }
-
-        first = false;
-    }
-
-    callOut << ")";
-
-    out << callOut.str();
+    Counter counterKey = {entryPoint, paramName};
+    return mData[counterKey]++;
 }
 
 bool FrameCapture::enabled() const
@@ -795,7 +987,6 @@
     mCalls.clear();
     mClientVertexArrayMap.fill(-1);
     mClientArraySizes.fill(0);
-    mDataCounters.clear();
     mReadBufferSize = 0;
 }
 
@@ -818,6 +1009,12 @@
     CaptureMemory(str, strlen(str) + 1, paramCapture);
 }
 
+void CaptureGenHandlesImpl(GLsizei n, GLuint *handles, ParamCapture *paramCapture)
+{
+    paramCapture->readBufferSizeBytes = sizeof(GLuint) * n;
+    CaptureMemory(handles, paramCapture->readBufferSizeBytes, paramCapture);
+}
+
 template <>
 void WriteParamValueToStream<ParamType::TGLboolean>(std::ostream &os, GLboolean value)
 {
@@ -856,92 +1053,90 @@
 void WriteParamValueToStream<ParamType::TGLDEBUGPROC>(std::ostream &os, GLDEBUGPROC value)
 {}
 
-// TODO(jmadill): Use resource ID map. http://anglebug.com/3611
 template <>
 void WriteParamValueToStream<ParamType::TBufferID>(std::ostream &os, gl::BufferID value)
 {
-    os << value.value;
+    os << "gBufferMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TFenceNVID>(std::ostream &os, gl::FenceNVID value)
 {
-    os << value.value;
+    os << "gFenceMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TFramebufferID>(std::ostream &os, gl::FramebufferID value)
 {
-    os << value.value;
+    os << "gFramebufferMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TMemoryObjectID>(std::ostream &os, gl::MemoryObjectID value)
 {
-    os << value.value;
+    os << "gMemoryObjectMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TPathID>(std::ostream &os, gl::PathID value)
 {
-    os << value.value;
+    os << "gPathMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TProgramPipelineID>(std::ostream &os,
                                                             gl::ProgramPipelineID value)
 {
-    os << value.value;
+    os << "gProgramPipelineMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TQueryID>(std::ostream &os, gl::QueryID value)
 {
-    os << value.value;
+    os << "gQueryMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TRenderbufferID>(std::ostream &os, gl::RenderbufferID value)
 {
-    os << value.value;
+    os << "gRenderbufferMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TSamplerID>(std::ostream &os, gl::SamplerID value)
 {
-    os << value.value;
+    os << "gSamplerMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TSemaphoreID>(std::ostream &os, gl::SemaphoreID value)
 {
-    os << value.value;
+    os << "gSempahoreMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TShaderProgramID>(std::ostream &os,
                                                           gl::ShaderProgramID value)
 {
-    os << value.value;
+    os << "gShaderProgramMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TTextureID>(std::ostream &os, gl::TextureID value)
 {
-    os << value.value;
+    os << "gTextureMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TTransformFeedbackID>(std::ostream &os,
                                                               gl::TransformFeedbackID value)
 {
-    os << value.value;
+    os << "gTransformFeedbackMap[" << value.value << "]";
 }
 
 template <>
 void WriteParamValueToStream<ParamType::TVertexArrayID>(std::ostream &os, gl::VertexArrayID value)
 {
-    os << value.value;
+    os << "gVertexArrayMap[" << value.value << "]";
 }
-#endif  // ANGLE_CAPTURE_ENABLED
 }  // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.h b/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.h
index 2ac7b6c..da81e6a 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture.h
@@ -16,8 +16,6 @@
 #include "libANGLE/entry_points_utils.h"
 #include "libANGLE/frame_capture_utils_autogen.h"
 
-#include <tuple>
-
 namespace gl
 {
 enum class GLenumGroup;
@@ -149,6 +147,21 @@
     gl::AttribArray<std::vector<uint8_t>> mClientArraysBuffer;
 };
 
+// Helper to use unique IDs for each local data variable.
+class DataCounters final : angle::NonCopyable
+{
+  public:
+    DataCounters();
+    ~DataCounters();
+
+    int getAndIncrement(gl::EntryPoint entryPoint, const std::string &paramName);
+
+  private:
+    // <CallName, ParamName>
+    using Counter = std::pair<gl::EntryPoint, std::string>;
+    std::map<Counter, int> mData;
+};
+
 class FrameCapture final : angle::NonCopyable
 {
   public:
@@ -161,42 +174,23 @@
     void replay(gl::Context *context);
 
   private:
-    // <CallName, ParamName>
-    using Counter = std::tuple<gl::EntryPoint, std::string>;
-
     void captureClientArraySnapshot(const gl::Context *context,
                                     size_t vertexCount,
                                     size_t instanceCount);
 
-    void writeCallReplay(const CallCapture &call,
-                         std::ostream &out,
-                         std::ostream &header,
-                         std::vector<uint8_t> *binaryData);
     void reset();
-    int getAndIncrementCounter(gl::EntryPoint entryPoint, const std::string &paramName);
-    bool anyClientArray() const;
-    void saveCapturedFrameAsCpp(int contextId);
-    void writeStringPointerParamReplay(std::ostream &out,
-                                       std::ostream &header,
-                                       const CallCapture &call,
-                                       const ParamCapture &param);
-    void writeRenderbufferIDPointerParamReplay(std::ostream &out,
-                                               std::ostream &header,
-                                               const CallCapture &call,
-                                               const ParamCapture &param);
-    void writeBinaryParamReplay(std::ostream &out,
-                                std::ostream &header,
-                                const CallCapture &call,
-                                const ParamCapture &param,
-                                std::vector<uint8_t> *binaryData);
     void maybeCaptureClientData(const gl::Context *context, const CallCapture &call);
     void maybeUpdateResourceIDs(const gl::Context *context, const CallCapture &call);
 
+    template <typename IDType>
+    void captureUpdateResourceIDs(const gl::Context *context,
+                                  const CallCapture &call,
+                                  const ParamCapture &param);
+
     std::vector<CallCapture> mCalls;
     gl::AttribArray<int> mClientVertexArrayMap;
-    size_t mFrameIndex;
+    uint32_t mFrameIndex;
     gl::AttribArray<size_t> mClientArraySizes;
-    std::map<Counter, int> mDataCounters;
     size_t mReadBufferSize;
 
     static void ReplayCall(gl::Context *context,
@@ -243,6 +237,13 @@
 // Pointer capture helpers.
 void CaptureMemory(const void *source, size_t size, ParamCapture *paramCapture);
 void CaptureString(const GLchar *str, ParamCapture *paramCapture);
+void CaptureGenHandlesImpl(GLsizei n, GLuint *handles, ParamCapture *paramCapture);
+
+template <typename T>
+void CaptureGenHandles(GLsizei n, T *handles, ParamCapture *paramCapture)
+{
+    CaptureGenHandlesImpl(n, reinterpret_cast<GLuint *>(handles), paramCapture);
+}
 
 template <ParamType ParamT, typename T>
 void WriteParamValueToStream(std::ostream &os, T value);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture_mock.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture_mock.cpp
new file mode 100644
index 0000000..b0ff3a8
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/FrameCapture_mock.cpp
@@ -0,0 +1,26 @@
+//
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// FrameCapture_mock.cpp:
+//   ANGLE mock Frame capture implementation.
+//
+
+#include "libANGLE/FrameCapture.h"
+
+#if ANGLE_CAPTURE_ENABLED
+#    error Frame capture must be disabled to include this file.
+#endif  // ANGLE_CAPTURE_ENABLED
+
+namespace angle
+{
+CallCapture::~CallCapture() {}
+ParamBuffer::~ParamBuffer() {}
+ParamCapture::~ParamCapture() {}
+
+FrameCapture::FrameCapture() {}
+FrameCapture::~FrameCapture() {}
+void FrameCapture::onEndFrame(const gl::Context *context) {}
+void FrameCapture::replay(gl::Context *context) {}
+}  // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.cpp
index bfbebdd..7fa5a3a 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.cpp
@@ -1974,7 +1974,7 @@
         // Regardless of if enabled or masked.
         if (checkDepth)
         {
-            if (texture->id() == depth->id())
+            if (texture->getId() == depth->id())
             {
                 return true;
             }
@@ -1982,7 +1982,7 @@
 
         if (checkStencil)
         {
-            if (texture->id() == stencil->id())
+            if (texture->getId() == stencil->id())
             {
                 return true;
             }
@@ -2005,7 +2005,7 @@
     return false;
 }
 
-bool Framebuffer::formsCopyingFeedbackLoopWith(GLuint copyTextureID,
+bool Framebuffer::formsCopyingFeedbackLoopWith(TextureID copyTextureID,
                                                GLint copyTextureLevel,
                                                GLint copyTextureLayer) const
 {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.h b/Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.h
index 94ee9f9..73d8ec8 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Framebuffer.h
@@ -354,7 +354,7 @@
     void onSubjectStateChange(angle::SubjectIndex index, angle::SubjectMessage message) override;
 
     bool formsRenderingFeedbackLoopWith(const Context *context) const;
-    bool formsCopyingFeedbackLoopWith(GLuint copyTextureID,
+    bool formsCopyingFeedbackLoopWith(TextureID copyTextureID,
                                       GLint copyTextureLevel,
                                       GLint copyTextureLayer) const;
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.cpp
index 9bad9e4..58f07f7 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.cpp
@@ -140,32 +140,32 @@
 
 GLuint FramebufferAttachment::getRedSize() const
 {
-    return getFormat().info->redBits;
+    return getSize().empty() ? 0 : getFormat().info->redBits;
 }
 
 GLuint FramebufferAttachment::getGreenSize() const
 {
-    return getFormat().info->greenBits;
+    return getSize().empty() ? 0 : getFormat().info->greenBits;
 }
 
 GLuint FramebufferAttachment::getBlueSize() const
 {
-    return getFormat().info->blueBits;
+    return getSize().empty() ? 0 : getFormat().info->blueBits;
 }
 
 GLuint FramebufferAttachment::getAlphaSize() const
 {
-    return getFormat().info->alphaBits;
+    return getSize().empty() ? 0 : getFormat().info->alphaBits;
 }
 
 GLuint FramebufferAttachment::getDepthSize() const
 {
-    return getFormat().info->depthBits;
+    return getSize().empty() ? 0 : getFormat().info->depthBits;
 }
 
 GLuint FramebufferAttachment::getStencilSize() const
 {
-    return getFormat().info->stencilBits;
+    return getSize().empty() ? 0 : getFormat().info->stencilBits;
 }
 
 GLenum FramebufferAttachment::getComponentType() const
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.h b/Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.h
index 9416c45..1370d1b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/FramebufferAttachment.h
@@ -92,9 +92,9 @@
     GLenum getComponentType() const;
     GLenum getColorEncoding() const;
 
-    bool isTextureWithId(GLuint textureId) const
+    bool isTextureWithId(TextureID textureId) const
     {
-        return mType == GL_TEXTURE && id() == textureId;
+        return mType == GL_TEXTURE && id() == textureId.value;
     }
     bool isRenderbufferWithId(GLuint renderbufferId) const
     {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.cpp
index 2ff2b3d..f8a3024 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.cpp
@@ -512,6 +512,12 @@
     return attribsMask;
 }
 
+AttributesMask GLES1State::getActiveAttributesMask() const
+{
+    // The program always has 8 attributes enabled.
+    return AttributesMask(0xFF);
+}
+
 void GLES1State::setHint(GLenum target, GLenum mode)
 {
     setDirty(DIRTY_GLES1_HINT_SETTING);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.h b/Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.h
index b52388b..95b9f13 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/GLES1State.h
@@ -215,6 +215,7 @@
     const PointParameters &pointParameters() const;
 
     AttributesMask getVertexArraysAttributeMask() const;
+    AttributesMask getActiveAttributesMask() const;
 
     void setHint(GLenum target, GLenum mode);
     GLenum getHint(GLenum target);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.cpp
index e301685..49ff816 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.cpp
@@ -54,6 +54,19 @@
     }
 }
 
+bool IsArrayTarget(TextureTarget target)
+{
+    switch (target)
+    {
+        case TextureTarget::_2DArray:
+        case TextureTarget::_2DMultisampleArray:
+            return true;
+        default:
+            return false;
+    }
+}
+}  // anonymous namespace
+
 TextureTarget TextureTypeToTarget(TextureType type, GLint layerIndex)
 {
     if (type == TextureType::CubeMap)
@@ -69,19 +82,6 @@
     }
 }
 
-bool IsArrayTarget(TextureTarget target)
-{
-    switch (target)
-    {
-        case TextureTarget::_2DArray:
-        case TextureTarget::_2DMultisampleArray:
-            return true;
-        default:
-            return false;
-    }
-}
-}  // anonymous namespace
-
 ImageIndex::ImageIndex()
     : mType(TextureType::InvalidEnum), mLevelIndex(0), mLayerIndex(0), mLayerCount(kEntireLevel)
 {}
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.h b/Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.h
index d8402b5..53825fc 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/ImageIndex.h
@@ -123,6 +123,9 @@
 
     ImageIndex mCurrentIndex;
 };
+
+TextureTarget TextureTypeToTarget(TextureType type, GLint layerIndex);
+
 }  // namespace gl
 
 #endif  // LIBANGLE_IMAGE_INDEX_H_
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.cpp
index 0626dd4..0629327 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.cpp
@@ -15,7 +15,7 @@
 {
 
 MemoryObject::MemoryObject(rx::GLImplFactory *factory, MemoryObjectID id)
-    : RefCountObject(id.value), mImplementation(factory->createMemoryObject())
+    : RefCountObject(id), mImplementation(factory->createMemoryObject())
 {}
 
 MemoryObject::~MemoryObject() {}
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.h b/Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.h
index ca03e22..7c9a8a5 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/MemoryObject.h
@@ -24,7 +24,7 @@
 {
 class Context;
 
-class MemoryObject final : public RefCountObject
+class MemoryObject final : public RefCountObject<MemoryObjectID>
 {
   public:
     MemoryObject(rx::GLImplFactory *factory, MemoryObjectID id);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/MemoryProgramCache.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/MemoryProgramCache.cpp
index cff2766..13b81c7 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/MemoryProgramCache.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/MemoryProgramCache.cpp
@@ -59,6 +59,15 @@
 {
     for (const auto &binding : bindings)
     {
+        stream << binding.first << binding.second;
+    }
+    return stream;
+}
+
+HashStream &operator<<(HashStream &stream, const ProgramAliasedBindings &bindings)
+{
+    for (const auto &binding : bindings)
+    {
         stream << binding.first << binding.second.location;
     }
     return stream;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Program.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Program.cpp
index d0f8b24..a160003 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Program.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Program.cpp
@@ -126,8 +126,7 @@
     return GL_INVALID_INDEX;
 }
 
-template <typename VarT>
-GLint GetVariableLocation(const std::vector<VarT> &list,
+GLint GetVariableLocation(const std::vector<sh::ShaderVariable> &list,
                           const std::vector<VariableLocation> &locationList,
                           const std::string &name)
 {
@@ -142,13 +141,45 @@
             continue;
         }
 
-        const VarT &variable = list[variableLocation.index];
+        const sh::ShaderVariable &variable = list[variableLocation.index];
+
+        // Array output variables may be bound out of order, so we need to ensure we only pick the
+        // first element if given the base name.
+        if ((variable.name == name) && (variableLocation.arrayIndex == 0))
+        {
+            return static_cast<GLint>(location);
+        }
+        if (variable.isArray() && variableLocation.arrayIndex == arrayIndex &&
+            angle::BeginsWith(variable.name, name, nameLengthWithoutArrayIndex))
+        {
+            return static_cast<GLint>(location);
+        }
+    }
+
+    return -1;
+}
+
+GLint GetVariableLocation(const std::vector<LinkedUniform> &list,
+                          const std::vector<VariableLocation> &locationList,
+                          const std::string &name)
+{
+    size_t nameLengthWithoutArrayIndex;
+    unsigned int arrayIndex = ParseArrayIndex(name, &nameLengthWithoutArrayIndex);
+
+    for (size_t location = 0u; location < locationList.size(); ++location)
+    {
+        const VariableLocation &variableLocation = locationList[location];
+        if (!variableLocation.used())
+        {
+            continue;
+        }
+
+        const LinkedUniform &variable = list[variableLocation.index];
 
         // Array output variables may be bound out of order, so we need to ensure we only pick the
         // first element if given the base name. Uniforms don't allow this behavior and some code
         // seemingly depends on the opposite behavior, so only enable it for output variables.
-        if (angle::BeginsWith(variable.name, name) &&
-            (!std::is_base_of<sh::ShaderVariable, VarT>::value || variableLocation.arrayIndex == 0))
+        if (angle::BeginsWith(variable.name, name) && (variableLocation.arrayIndex == 0))
         {
             if (name.length() == variable.name.length())
             {
@@ -902,6 +933,37 @@
 
 void ProgramBindings::bindLocation(GLuint index, const std::string &name)
 {
+    mBindings[name] = index;
+}
+
+int ProgramBindings::getBindingByName(const std::string &name) const
+{
+    auto iter = mBindings.find(name);
+    return (iter != mBindings.end()) ? iter->second : -1;
+}
+
+int ProgramBindings::getBinding(const sh::ShaderVariable &variable) const
+{
+    return getBindingByName(variable.name);
+}
+
+ProgramBindings::const_iterator ProgramBindings::begin() const
+{
+    return mBindings.begin();
+}
+
+ProgramBindings::const_iterator ProgramBindings::end() const
+{
+    return mBindings.end();
+}
+
+// ProgramAliasedBindings implementation.
+ProgramAliasedBindings::ProgramAliasedBindings() {}
+
+ProgramAliasedBindings::~ProgramAliasedBindings() {}
+
+void ProgramAliasedBindings::bindLocation(GLuint index, const std::string &name)
+{
     mBindings[name] = ProgramBinding(index);
 
     // EXT_blend_func_extended spec: "If it specifies the base name of an array,
@@ -923,13 +985,13 @@
     }
 }
 
-int ProgramBindings::getBindingByName(const std::string &name) const
+int ProgramAliasedBindings::getBindingByName(const std::string &name) const
 {
     auto iter = mBindings.find(name);
     return (iter != mBindings.end()) ? iter->second.location : -1;
 }
 
-int ProgramBindings::getBinding(const sh::ShaderVariable &variable) const
+int ProgramAliasedBindings::getBinding(const sh::ShaderVariable &variable) const
 {
     const std::string &name = variable.name;
 
@@ -949,17 +1011,29 @@
                 return iter->second.location;
             }
         }
+        else if (arrayIndex == GL_INVALID_INDEX)
+        {
+            auto iter = mBindings.find(variable.name);
+            // If "name" exists and is not aliased, that means it was modified more
+            // recently than its "name[0]" form and should be used instead of that.
+            if (iter != mBindings.end() && !iter->second.aliased)
+            {
+                return iter->second.location;
+            }
+            // The base name was aliased, so use the name with the array notation.
+            return getBindingByName(name + "[0]");
+        }
     }
 
     return getBindingByName(name);
 }
 
-ProgramBindings::const_iterator ProgramBindings::begin() const
+ProgramAliasedBindings::const_iterator ProgramAliasedBindings::begin() const
 {
     return mBindings.begin();
 }
 
-ProgramBindings::const_iterator ProgramBindings::end() const
+ProgramAliasedBindings::const_iterator ProgramAliasedBindings::end() const
 {
     return mBindings.end();
 }
@@ -1096,7 +1170,7 @@
 
 GLuint ProgramState::getAttributeLocation(const std::string &name) const
 {
-    for (const sh::ShaderVariable &attribute : mAttributes)
+    for (const sh::ShaderVariable &attribute : mProgramInputs)
     {
         if (attribute.name == name)
         {
@@ -1119,6 +1193,44 @@
     return false;
 }
 
+ShaderType ProgramState::getFirstAttachedShaderStageType() const
+{
+    for (const gl::ShaderType shaderType : gl::kAllGraphicsShaderTypes)
+    {
+        if (hasLinkedShaderStage(shaderType))
+        {
+            return shaderType;
+        }
+    }
+
+    if (hasLinkedShaderStage(ShaderType::Compute))
+    {
+        return ShaderType::Compute;
+    }
+
+    return ShaderType::InvalidEnum;
+}
+
+ShaderType ProgramState::getLastAttachedShaderStageType() const
+{
+    for (int i = gl::kAllGraphicsShaderTypes.size() - 1; i >= 0; --i)
+    {
+        const gl::ShaderType shaderType = gl::kAllGraphicsShaderTypes[i];
+
+        if (hasLinkedShaderStage(shaderType))
+        {
+            return shaderType;
+        }
+    }
+
+    if (hasLinkedShaderStage(ShaderType::Compute))
+    {
+        return ShaderType::Compute;
+    }
+
+    return ShaderType::InvalidEnum;
+}
+
 Program::Program(rx::GLImplFactory *factory, ShaderProgramManager *manager, ShaderProgramID handle)
     : mProgram(factory->createProgram(mState)),
       mValidated(false),
@@ -1261,7 +1373,7 @@
 
     for (const auto &binding : mFragmentInputBindings)
     {
-        if (binding.second.location != static_cast<GLuint>(index))
+        if (binding.second != static_cast<GLuint>(index))
             continue;
 
         ret.valid = true;
@@ -1364,7 +1476,8 @@
     unlink();
 
     // Re-link shaders after the unlink call.
-    ASSERT(linkValidateShaders(mInfoLog));
+    bool result = linkValidateShaders(mInfoLog);
+    ASSERT(result);
 
     std::unique_ptr<ProgramLinkedResources> resources;
     if (mState.mAttachedShaders[ShaderType::Compute])
@@ -1499,6 +1612,10 @@
     mLinkingState->resources         = std::move(resources);
     mLinkResolved                    = false;
 
+    // Must be after mProgram->link() to avoid misleading the linker about output variables.
+    mState.updateProgramInterfaceInputs();
+    mState.updateProgramInterfaceOutputs();
+
     return angle::Result::Continue;
 }
 
@@ -1637,10 +1754,81 @@
     }
 }
 
+void ProgramState::updateProgramInterfaceInputs()
+{
+    const ShaderType firstAttachedShaderType = getFirstAttachedShaderStageType();
+
+    if (firstAttachedShaderType == ShaderType::Vertex)
+    {
+        // Vertex attributes are already what we need, so nothing to do
+        return;
+    }
+
+    Shader *shader = getAttachedShader(firstAttachedShaderType);
+    ASSERT(shader);
+
+    // Copy over each input varying, since the Shader could go away
+    for (const sh::ShaderVariable &varying : shader->getInputVaryings())
+    {
+        if (varying.isStruct())
+        {
+            for (const sh::ShaderVariable &field : varying.fields)
+            {
+                sh::ShaderVariable fieldVarying = sh::ShaderVariable(field);
+                fieldVarying.location           = varying.location;
+                fieldVarying.name               = varying.name + "." + field.name;
+                mProgramInputs.emplace_back(fieldVarying);
+            }
+        }
+        else
+        {
+            mProgramInputs.emplace_back(varying);
+        }
+    }
+}
+
+void ProgramState::updateProgramInterfaceOutputs()
+{
+    const ShaderType lastAttachedShaderType = getLastAttachedShaderStageType();
+
+    if (lastAttachedShaderType == ShaderType::Fragment)
+    {
+        // Fragment outputs are already what we need, so nothing to do
+        return;
+    }
+    if (lastAttachedShaderType == ShaderType::Compute)
+    {
+        // If the program only contains a Compute Shader, then there are no user-defined outputs.
+        return;
+    }
+
+    Shader *shader = getAttachedShader(lastAttachedShaderType);
+    ASSERT(shader);
+
+    // Copy over each output varying, since the Shader could go away
+    for (const sh::ShaderVariable &varying : shader->getOutputVaryings())
+    {
+        if (varying.isStruct())
+        {
+            for (const sh::ShaderVariable &field : varying.fields)
+            {
+                sh::ShaderVariable fieldVarying = sh::ShaderVariable(field);
+                fieldVarying.location           = varying.location;
+                fieldVarying.name               = varying.name + "." + field.name;
+                mOutputVariables.emplace_back(fieldVarying);
+            }
+        }
+        else
+        {
+            mOutputVariables.emplace_back(varying);
+        }
+    }
+}
+
 // Returns the program object to an unlinked state, before re-linking, or at destruction
 void Program::unlink()
 {
-    mState.mAttributes.clear();
+    mState.mProgramInputs.clear();
     mState.mAttributesTypeMask.reset();
     mState.mAttributesMask.reset();
     mState.mActiveAttribLocationsMask.reset();
@@ -1897,8 +2085,8 @@
         return;
     }
 
-    ASSERT(index < mState.mAttributes.size());
-    const sh::ShaderVariable &attrib = mState.mAttributes[index];
+    ASSERT(index < mState.mProgramInputs.size());
+    const sh::ShaderVariable &attrib = mState.mProgramInputs[index];
 
     if (bufsize > 0)
     {
@@ -1918,7 +2106,7 @@
         return 0;
     }
 
-    return static_cast<GLint>(mState.mAttributes.size());
+    return static_cast<GLint>(mState.mProgramInputs.size());
 }
 
 GLint Program::getActiveAttributeMaxLength() const
@@ -1931,7 +2119,7 @@
 
     size_t maxLength = 0;
 
-    for (const sh::ShaderVariable &attrib : mState.mAttributes)
+    for (const sh::ShaderVariable &attrib : mState.mProgramInputs)
     {
         maxLength = std::max(attrib.name.length() + 1, maxLength);
     }
@@ -1942,7 +2130,7 @@
 const std::vector<sh::ShaderVariable> &Program::getAttributes() const
 {
     ASSERT(mLinkResolved);
-    return mState.mAttributes;
+    return mState.mProgramInputs;
 }
 
 const std::vector<SamplerBinding> &Program::getSamplerBindings() const
@@ -1978,16 +2166,124 @@
     return mState.mGeometryShaderMaxVertices;
 }
 
+const sh::ShaderVariable &Program::getInputResource(size_t index) const
+{
+    ASSERT(mLinkResolved);
+    ASSERT(index < mState.mProgramInputs.size());
+    return mState.mProgramInputs[index];
+}
+
 GLuint Program::getInputResourceIndex(const GLchar *name) const
 {
     ASSERT(mLinkResolved);
-    return GetResourceIndexFromName(mState.mAttributes, std::string(name));
+    const std::string nameString = StripLastArrayIndex(name);
+
+    for (size_t index = 0; index < mState.mProgramInputs.size(); index++)
+    {
+        sh::ShaderVariable resource = getInputResource(index);
+        if (resource.name == nameString)
+        {
+            return static_cast<GLuint>(index);
+        }
+    }
+
+    return GL_INVALID_INDEX;
+}
+
+GLuint Program::getResourceMaxNameSize(const sh::ShaderVariable &resource, GLint max) const
+{
+    if (resource.isArray())
+    {
+        return std::max(max, clampCast<GLint>((resource.name + "[0]").size()));
+    }
+    else
+    {
+        return std::max(max, clampCast<GLint>((resource.name).size()));
+    }
+}
+
+GLuint Program::getInputResourceMaxNameSize() const
+{
+    GLint max = 0;
+
+    for (const sh::ShaderVariable &resource : mState.mProgramInputs)
+    {
+        max = getResourceMaxNameSize(resource, max);
+    }
+
+    return max;
+}
+
+GLuint Program::getOutputResourceMaxNameSize() const
+{
+    GLint max = 0;
+
+    for (const sh::ShaderVariable &resource : mState.mOutputVariables)
+    {
+        max = getResourceMaxNameSize(resource, max);
+    }
+
+    return max;
+}
+
+GLuint Program::getResourceLocation(const GLchar *name, const sh::ShaderVariable &variable) const
+{
+    GLint location = variable.location;
+    if (variable.isArray())
+    {
+        size_t nameLengthWithoutArrayIndexOut;
+        size_t arrayIndex = ParseArrayIndex(name, &nameLengthWithoutArrayIndexOut);
+        // The 'name' string may not contain the array notation "[0]"
+        if (arrayIndex != GL_INVALID_INDEX)
+        {
+            location += arrayIndex;
+        }
+    }
+
+    return location;
+}
+
+GLuint Program::getInputResourceLocation(const GLchar *name) const
+{
+    const GLuint index = getInputResourceIndex(name);
+    if (index == GL_INVALID_INDEX)
+    {
+        return index;
+    }
+
+    const sh::ShaderVariable &variable = getInputResource(index);
+
+    return getResourceLocation(name, variable);
+}
+
+GLuint Program::getOutputResourceLocation(const GLchar *name) const
+{
+    const GLuint index = getOutputResourceIndex(name);
+    if (index == GL_INVALID_INDEX)
+    {
+        return index;
+    }
+
+    const sh::ShaderVariable &variable = getOutputResource(index);
+
+    return getResourceLocation(name, variable);
 }
 
 GLuint Program::getOutputResourceIndex(const GLchar *name) const
 {
     ASSERT(mLinkResolved);
-    return GetResourceIndexFromName(mState.mOutputVariables, std::string(name));
+    const std::string nameString = StripLastArrayIndex(name);
+
+    for (size_t index = 0; index < mState.mOutputVariables.size(); index++)
+    {
+        sh::ShaderVariable resource = getOutputResource(index);
+        if (resource.name == nameString)
+        {
+            return static_cast<GLuint>(index);
+        }
+    }
+
+    return GL_INVALID_INDEX;
 }
 
 size_t Program::getOutputResourceCount() const
@@ -2002,12 +2298,10 @@
     return mState.mOutputVariableTypes;
 }
 
-template <typename T>
-void Program::getResourceName(GLuint index,
-                              const std::vector<T> &resources,
+void Program::getResourceName(const std::string name,
                               GLsizei bufSize,
                               GLsizei *length,
-                              GLchar *name) const
+                              GLchar *dest) const
 {
     if (length)
     {
@@ -2018,16 +2312,14 @@
     {
         if (bufSize > 0)
         {
-            name[0] = '\0';
+            dest[0] = '\0';
         }
         return;
     }
-    ASSERT(index < resources.size());
-    const auto &resource = resources[index];
 
     if (bufSize > 0)
     {
-        CopyStringToBuffer(name, resource.name, bufSize, length);
+        CopyStringToBuffer(dest, name, bufSize, length);
     }
 }
 
@@ -2037,7 +2329,7 @@
                                    GLchar *name) const
 {
     ASSERT(mLinkResolved);
-    getResourceName(index, mState.mAttributes, bufSize, length, name);
+    getResourceName(getInputResourceName(index), bufSize, length, name);
 }
 
 void Program::getOutputResourceName(GLuint index,
@@ -2046,7 +2338,7 @@
                                     GLchar *name) const
 {
     ASSERT(mLinkResolved);
-    getResourceName(index, mState.mOutputVariables, bufSize, length, name);
+    getResourceName(getOutputResourceName(index), bufSize, length, name);
 }
 
 void Program::getUniformResourceName(GLuint index,
@@ -2055,7 +2347,8 @@
                                      GLchar *name) const
 {
     ASSERT(mLinkResolved);
-    getResourceName(index, mState.mUniforms, bufSize, length, name);
+    ASSERT(index < mState.mUniforms.size());
+    getResourceName(mState.mUniforms[index].name, bufSize, length, name);
 }
 
 void Program::getBufferVariableResourceName(GLuint index,
@@ -2064,17 +2357,39 @@
                                             GLchar *name) const
 {
     ASSERT(mLinkResolved);
-    getResourceName(index, mState.mBufferVariables, bufSize, length, name);
+    ASSERT(index < mState.mBufferVariables.size());
+    getResourceName(mState.mBufferVariables[index].name, bufSize, length, name);
 }
 
-const sh::ShaderVariable &Program::getInputResource(GLuint index) const
+const std::string Program::getResourceName(const sh::ShaderVariable &resource) const
+{
+    std::string resourceName = resource.name;
+
+    if (resource.isArray())
+    {
+        resourceName += "[0]";
+    }
+
+    return resourceName;
+}
+
+const std::string Program::getInputResourceName(GLuint index) const
 {
     ASSERT(mLinkResolved);
-    ASSERT(index < mState.mAttributes.size());
-    return mState.mAttributes[index];
+    const sh::ShaderVariable &resource = getInputResource(index);
+
+    return getResourceName(resource);
 }
 
-const sh::ShaderVariable &Program::getOutputResource(GLuint index) const
+const std::string Program::getOutputResourceName(GLuint index) const
+{
+    ASSERT(mLinkResolved);
+    const sh::ShaderVariable &resource = getOutputResource(index);
+
+    return getResourceName(resource);
+}
+
+const sh::ShaderVariable &Program::getOutputResource(size_t index) const
 {
     ASSERT(mLinkResolved);
     ASSERT(index < mState.mOutputVariables.size());
@@ -2086,7 +2401,7 @@
     ASSERT(mLinkResolved);
     return mAttributeBindings;
 }
-const ProgramBindings &Program::getUniformLocationBindings() const
+const ProgramAliasedBindings &Program::getUniformLocationBindings() const
 {
     ASSERT(mLinkResolved);
     return mUniformLocationBindings;
@@ -3167,7 +3482,7 @@
 
 bool Program::linkUniforms(const Caps &caps,
                            InfoLog &infoLog,
-                           const ProgramBindings &uniformLocationBindings,
+                           const ProgramAliasedBindings &uniformLocationBindings,
                            GLuint *combinedImageUniformsCount,
                            std::vector<UnusedUniform> *unusedUniforms)
 {
@@ -3321,19 +3636,19 @@
         // In GLSL ES 3.00.6, aliasing checks should be done with all declared attributes -
         // see GLSL ES 3.00.6 section 12.46. Inactive attributes will be pruned after
         // aliasing checks.
-        mState.mAttributes = vertexShader->getAllAttributes();
+        mState.mProgramInputs = vertexShader->getAllAttributes();
     }
     else
     {
         // In GLSL ES 1.00.17 we only do aliasing checks for active attributes.
-        mState.mAttributes = vertexShader->getActiveAttributes();
+        mState.mProgramInputs = vertexShader->getActiveAttributes();
     }
 
     GLuint maxAttribs = caps.maxVertexAttributes;
     std::vector<sh::ShaderVariable *> usedAttribMap(maxAttribs, nullptr);
 
     // Assign locations to attributes that have a binding location and check for attribute aliasing.
-    for (sh::ShaderVariable &attribute : mState.mAttributes)
+    for (sh::ShaderVariable &attribute : mState.mProgramInputs)
     {
         // GLSL ES 3.10 January 2016 section 4.3.4: Vertex shader inputs can't be arrays or
         // structures, so we don't need to worry about adjusting their names or generating entries
@@ -3389,7 +3704,7 @@
     }
 
     // Assign locations to attributes that don't have a binding location.
-    for (sh::ShaderVariable &attribute : mState.mAttributes)
+    for (sh::ShaderVariable &attribute : mState.mProgramInputs)
     {
         // Not set by glBindAttribLocation or by location layout qualifier
         if (attribute.location == -1)
@@ -3414,8 +3729,8 @@
     // shader versions we're only processing active attributes to begin with.
     if (shaderVersion >= 300)
     {
-        for (auto attributeIter = mState.mAttributes.begin();
-             attributeIter != mState.mAttributes.end();)
+        for (auto attributeIter = mState.mProgramInputs.begin();
+             attributeIter != mState.mProgramInputs.end();)
         {
             if (attributeIter->active)
             {
@@ -3423,12 +3738,12 @@
             }
             else
             {
-                attributeIter = mState.mAttributes.erase(attributeIter);
+                attributeIter = mState.mProgramInputs.erase(attributeIter);
             }
         }
     }
 
-    for (const sh::ShaderVariable &attribute : mState.mAttributes)
+    for (const sh::ShaderVariable &attribute : mState.mProgramInputs)
     {
         ASSERT(attribute.active);
         ASSERT(attribute.location != -1);
@@ -3895,7 +4210,7 @@
                     uniformBlockFieldMap[field.name];
                 for (const auto &prevBlockFieldPair : prevBlockFieldPairs)
                 {
-                    const sh::InterfaceBlock *prevUniformBlock = prevBlockFieldPair.first;
+                    const sh::InterfaceBlock *prevUniformBlock      = prevBlockFieldPair.first;
                     const sh::ShaderVariable *prevUniformBlockField = prevBlockFieldPair.second;
 
                     if (uniformBlock.isSameInterfaceBlockAtLinkTime(*prevUniformBlock))
@@ -3991,21 +4306,18 @@
 {
     ProgramMergedVaryings merged;
 
-    Shader *vertexShader = mState.mAttachedShaders[ShaderType::Vertex];
-    if (vertexShader)
+    for (Shader *shader : mState.mAttachedShaders)
     {
-        for (const sh::ShaderVariable &varying : vertexShader->getOutputVaryings())
+        if (shader)
         {
-            merged[varying.name].vertex = &varying;
-        }
-    }
-
-    Shader *fragmentShader = mState.mAttachedShaders[ShaderType::Fragment];
-    if (fragmentShader)
-    {
-        for (const sh::ShaderVariable &varying : fragmentShader->getInputVaryings())
-        {
-            merged[varying.name].fragment = &varying;
+            for (const sh::ShaderVariable &varying : shader->getOutputVaryings())
+            {
+                merged[varying.name].frontShader = &varying;
+            }
+            for (const sh::ShaderVariable &varying : shader->getInputVaryings())
+            {
+                merged[varying.name].backShader = &varying;
+            }
         }
     }
 
@@ -4085,7 +4397,8 @@
                            unsigned int baseLocation,
                            unsigned int elementCount,
                            const std::vector<VariableLocation> &reservedLocations,
-                           unsigned int variableIndex)
+                           unsigned int variableIndex,
+                           sh::ShaderVariable &outputVariable)
 {
     if (baseLocation + elementCount > outputLocations.size())
     {
@@ -4097,6 +4410,7 @@
         if (std::find(reservedLocations.begin(), reservedLocations.end(), locationInfo) ==
             reservedLocations.end())
         {
+            outputVariable.location     = baseLocation;
             const unsigned int location = baseLocation + elementIndex;
             outputLocations[location]   = locationInfo;
         }
@@ -4184,17 +4498,6 @@
     mState.mOutputVariables = outputVariables;
     // TODO(jmadill): any caps validation here?
 
-    for (sh::ShaderVariable &outputVariable : mState.mOutputVariables)
-    {
-        if (outputVariable.isArray())
-        {
-            // We're following the GLES 3.1 November 2016 spec section 7.3.1.1 Naming Active
-            // Resources and including [0] at the end of array variable names.
-            outputVariable.name += "[0]";
-            outputVariable.mappedName += "[0]";
-        }
-    }
-
     // EXT_blend_func_extended doesn't specify anything related to binding specific elements of an
     // output array in explicit terms.
     //
@@ -4298,7 +4601,7 @@
             return false;
         }
         AssignOutputLocations(outputLocations, baseLocation, elementCount, reservedLocations,
-                              outputVariableIndex);
+                              outputVariableIndex, mState.mOutputVariables[outputVariableIndex]);
     }
 
     // Here we assign locations for the output variables that don't yet have them. Note that we're
@@ -4346,7 +4649,8 @@
                 baseLocation++;
             }
             AssignOutputLocations(outputLocations, baseLocation, elementCount, reservedLocations,
-                                  outputVariableIndex);
+                                  outputVariableIndex,
+                                  mState.mOutputVariables[outputVariableIndex]);
         }
 
         // Check for any elements assigned above the max location that are actually used.
@@ -4682,8 +4986,8 @@
 
     stream.writeInt(mState.getActiveAttribLocationsMask().to_ulong());
 
-    stream.writeInt(mState.getAttributes().size());
-    for (const sh::ShaderVariable &attrib : mState.getAttributes())
+    stream.writeInt(mState.getProgramInputs().size());
+    for (const sh::ShaderVariable &attrib : mState.getProgramInputs())
     {
         WriteShaderVar(&stream, attrib);
         stream.writeInt(attrib.location);
@@ -4876,13 +5180,13 @@
     mState.mActiveAttribLocationsMask = stream.readInt<gl::AttributesMask>();
 
     unsigned int attribCount = stream.readInt<unsigned int>();
-    ASSERT(mState.mAttributes.empty());
+    ASSERT(mState.mProgramInputs.empty());
     for (unsigned int attribIndex = 0; attribIndex < attribCount; ++attribIndex)
     {
         sh::ShaderVariable attrib;
         LoadShaderVar(&stream, &attrib);
         attrib.location = stream.readInt<int>();
-        mState.mAttributes.push_back(attrib);
+        mState.mProgramInputs.push_back(attrib);
     }
 
     unsigned int uniformCount = stream.readInt<unsigned int>();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Program.h b/Source/ThirdParty/ANGLE/src/libANGLE/Program.h
index cc2686c..c028b23 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Program.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Program.h
@@ -321,7 +321,7 @@
     {
         return mActiveUniformBlockBindings;
     }
-    const std::vector<sh::ShaderVariable> &getAttributes() const { return mAttributes; }
+    const std::vector<sh::ShaderVariable> &getProgramInputs() const { return mProgramInputs; }
     const AttributesMask &getActiveAttribLocationsMask() const
     {
         return mActiveAttribLocationsMask;
@@ -400,6 +400,8 @@
     {
         return mActiveSamplerFormats[textureUnitIndex];
     }
+    ShaderType getFirstAttachedShaderStageType() const;
+    ShaderType getLastAttachedShaderStageType() const;
 
   private:
     friend class MemoryProgramCache;
@@ -408,6 +410,8 @@
     void updateTransformFeedbackStrides();
     void updateActiveSamplers();
     void updateActiveImages();
+    void updateProgramInterfaceInputs();
+    void updateProgramInterfaceOutputs();
 
     // Scans the sampler bindings for type conflicts with sampler 'textureUnitIndex'.
     void setSamplerUniformTextureTypeAndFormat(size_t textureUnitIndex);
@@ -425,7 +429,8 @@
     // For faster iteration on the blocks currently being bound.
     UniformBlockBindingMask mActiveUniformBlockBindings;
 
-    std::vector<sh::ShaderVariable> mAttributes;
+    // Vertex attributes, Fragment input varyings, etc.
+    std::vector<sh::ShaderVariable> mProgramInputs;
     angle::BitSet<MAX_VERTEX_ATTRIBS> mActiveAttribLocationsMask;
     unsigned int mMaxActiveAttribLocation;
     ComponentTypeMask mAttributesTypeMask;
@@ -531,6 +536,25 @@
     int getBindingByName(const std::string &name) const;
     int getBinding(const sh::ShaderVariable &variable) const;
 
+    using const_iterator = std::unordered_map<std::string, GLuint>::const_iterator;
+    const_iterator begin() const;
+    const_iterator end() const;
+
+  private:
+    std::unordered_map<std::string, GLuint> mBindings;
+};
+
+// Uniforms and Fragment Outputs require special treatment due to array notation (e.g., "[0]")
+class ProgramAliasedBindings final : angle::NonCopyable
+{
+  public:
+    ProgramAliasedBindings();
+    ~ProgramAliasedBindings();
+
+    void bindLocation(GLuint index, const std::string &name);
+    int getBindingByName(const std::string &name) const;
+    int getBinding(const sh::ShaderVariable &variable) const;
+
     using const_iterator = std::unordered_map<std::string, ProgramBinding>::const_iterator;
     const_iterator begin() const;
     const_iterator end() const;
@@ -541,10 +565,10 @@
 
 struct ProgramVaryingRef
 {
-    const sh::ShaderVariable *get() const { return vertex ? vertex : fragment; }
+    const sh::ShaderVariable *get() const { return frontShader ? frontShader : backShader; }
 
-    const sh::ShaderVariable *vertex   = nullptr;
-    const sh::ShaderVariable *fragment = nullptr;
+    const sh::ShaderVariable *frontShader = nullptr;
+    const sh::ShaderVariable *backShader  = nullptr;
 };
 
 using ProgramMergedVaryings = std::map<std::string, ProgramVaryingRef>;
@@ -879,12 +903,21 @@
                                        GLsizei bufSize,
                                        GLsizei *length,
                                        GLchar *name) const;
-    const sh::ShaderVariable &getInputResource(GLuint index) const;
-    const sh::ShaderVariable &getOutputResource(GLuint index) const;
+    const sh::ShaderVariable &getInputResource(size_t index) const;
+    GLuint getResourceMaxNameSize(const sh::ShaderVariable &resource, GLint max) const;
+    GLuint getInputResourceMaxNameSize() const;
+    GLuint getOutputResourceMaxNameSize() const;
+    GLuint getResourceLocation(const GLchar *name, const sh::ShaderVariable &variable) const;
+    GLuint getInputResourceLocation(const GLchar *name) const;
+    GLuint getOutputResourceLocation(const GLchar *name) const;
+    const std::string getResourceName(const sh::ShaderVariable &resource) const;
+    const std::string getInputResourceName(GLuint index) const;
+    const std::string getOutputResourceName(GLuint index) const;
+    const sh::ShaderVariable &getOutputResource(size_t index) const;
 
     const ProgramBindings &getAttributeBindings() const;
-    const ProgramBindings &getUniformLocationBindings() const;
     const ProgramBindings &getFragmentInputBindings() const;
+    const ProgramAliasedBindings &getUniformLocationBindings() const;
 
     int getNumViews() const
     {
@@ -958,7 +991,7 @@
 
     bool linkUniforms(const Caps &caps,
                       InfoLog &infoLog,
-                      const ProgramBindings &uniformLocationBindings,
+                      const ProgramAliasedBindings &uniformLocationBindings,
                       GLuint *combinedImageUniformsCount,
                       std::vector<UnusedUniform> *unusedUniforms);
     void linkSamplerAndImageBindings(GLuint *combinedImageUniformsCount);
@@ -1024,12 +1057,10 @@
                             GLenum nativeType,
                             int components) const;
 
-    template <typename T>
-    void getResourceName(GLuint index,
-                         const std::vector<T> &resources,
+    void getResourceName(const std::string name,
                          GLsizei bufSize,
                          GLsizei *length,
-                         GLchar *name) const;
+                         GLchar *dest) const;
 
     template <typename T>
     GLint getActiveInterfaceBlockMaxNameLength(const std::vector<T> &resources) const;
@@ -1053,14 +1084,14 @@
 
     // Note that this has nothing to do with binding layout qualifiers that can be set for some
     // uniforms in GLES3.1+. It is used to pre-set the location of uniforms.
-    ProgramBindings mUniformLocationBindings;
+    ProgramAliasedBindings mUniformLocationBindings;
 
     // CHROMIUM_path_rendering
     ProgramBindings mFragmentInputBindings;
 
     // EXT_blend_func_extended
-    ProgramBindings mFragmentOutputLocations;
-    ProgramBindings mFragmentOutputIndexes;
+    ProgramAliasedBindings mFragmentOutputLocations;
+    ProgramAliasedBindings mFragmentOutputIndexes;
 
     bool mLinked;
     bool mLinkResolved;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/ProgramLinkedResources.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/ProgramLinkedResources.cpp
index f743a36..90849cf 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/ProgramLinkedResources.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/ProgramLinkedResources.cpp
@@ -670,7 +670,7 @@
 
 bool UniformLinker::link(const Caps &caps,
                          InfoLog &infoLog,
-                         const ProgramBindings &uniformLocationBindings)
+                         const ProgramAliasedBindings &uniformLocationBindings)
 {
     if (mState.getAttachedShader(ShaderType::Vertex) &&
         mState.getAttachedShader(ShaderType::Fragment))
@@ -735,7 +735,8 @@
     return true;
 }
 
-bool UniformLinker::indexUniforms(InfoLog &infoLog, const ProgramBindings &uniformLocationBindings)
+bool UniformLinker::indexUniforms(InfoLog &infoLog,
+                                  const ProgramAliasedBindings &uniformLocationBindings)
 {
     // Locations which have been allocated for an unused uniform.
     std::set<GLuint> ignoredLocations;
@@ -830,7 +831,7 @@
 
 bool UniformLinker::gatherUniformLocationsAndCheckConflicts(
     InfoLog &infoLog,
-    const ProgramBindings &uniformLocationBindings,
+    const ProgramAliasedBindings &uniformLocationBindings,
     std::set<GLuint> *ignoredLocations,
     int *maxUniformLocation)
 {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/ProgramLinkedResources.h b/Source/ThirdParty/ANGLE/src/libANGLE/ProgramLinkedResources.h
index 9b00190..7c2ba27 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/ProgramLinkedResources.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/ProgramLinkedResources.h
@@ -40,6 +40,7 @@
 struct LinkedUniform;
 class ProgramState;
 class ProgramBindings;
+class ProgramAliasedBindings;
 class Shader;
 struct ShaderVariableBuffer;
 struct UnusedUniform;
@@ -53,7 +54,9 @@
     UniformLinker(const ProgramState &state);
     ~UniformLinker();
 
-    bool link(const Caps &caps, InfoLog &infoLog, const ProgramBindings &uniformLocationBindings);
+    bool link(const Caps &caps,
+              InfoLog &infoLog,
+              const ProgramAliasedBindings &uniformLocationBindings);
 
     void getResults(std::vector<LinkedUniform> *uniforms,
                     std::vector<UnusedUniform> *unusedUniforms,
@@ -73,11 +76,12 @@
     bool flattenUniformsAndCheckCaps(const Caps &caps, InfoLog &infoLog);
     bool checkMaxCombinedAtomicCounters(const Caps &caps, InfoLog &infoLog);
 
-    bool indexUniforms(InfoLog &infoLog, const ProgramBindings &uniformLocationBindings);
-    bool gatherUniformLocationsAndCheckConflicts(InfoLog &infoLog,
-                                                 const ProgramBindings &uniformLocationBindings,
-                                                 std::set<GLuint> *ignoredLocations,
-                                                 int *maxUniformLocation);
+    bool indexUniforms(InfoLog &infoLog, const ProgramAliasedBindings &uniformLocationBindings);
+    bool gatherUniformLocationsAndCheckConflicts(
+        InfoLog &infoLog,
+        const ProgramAliasedBindings &uniformLocationBindings,
+        std::set<GLuint> *ignoredLocations,
+        int *maxUniformLocation);
     void pruneUnusedUniforms();
 
     const ProgramState &mState;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.cpp
index 821c9f9..d86596a 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.cpp
@@ -27,7 +27,7 @@
 }
 
 ProgramPipeline::ProgramPipeline(rx::GLImplFactory *factory, ProgramPipelineID handle)
-    : RefCountObject(handle.value), mProgramPipeline(factory->createProgramPipeline(mState))
+    : RefCountObject(handle), mProgramPipeline(factory->createProgramPipeline(mState))
 {
     ASSERT(mProgramPipeline);
 }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.h b/Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.h
index 2394040..6da4103 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/ProgramPipeline.h
@@ -42,7 +42,7 @@
     std::string mLabel;
 };
 
-class ProgramPipeline final : public RefCountObject, public LabeledObject
+class ProgramPipeline final : public RefCountObject<ProgramPipelineID>, public LabeledObject
 {
   public:
     ProgramPipeline(rx::GLImplFactory *factory, ProgramPipelineID handle);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Query.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Query.cpp
index e4c4eb5..f3ad0a8 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Query.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Query.cpp
@@ -11,7 +11,7 @@
 
 namespace gl
 {
-Query::Query(rx::QueryImpl *impl, QueryID id) : RefCountObject(id.value), mQuery(impl), mLabel() {}
+Query::Query(rx::QueryImpl *impl, QueryID id) : RefCountObject(id), mQuery(impl), mLabel() {}
 
 Query::~Query()
 {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Query.h b/Source/ThirdParty/ANGLE/src/libANGLE/Query.h
index 57fc9df..ec68629 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Query.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Query.h
@@ -26,7 +26,7 @@
 namespace gl
 {
 
-class Query final : public RefCountObject, public LabeledObject
+class Query final : public RefCountObject<QueryID>, public LabeledObject
 {
   public:
     Query(rx::QueryImpl *impl, QueryID id);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/RefCountObject.h b/Source/ThirdParty/ANGLE/src/libANGLE/RefCountObject.h
index b34fe7c..e17a9cf 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/RefCountObject.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/RefCountObject.h
@@ -13,6 +13,7 @@
 #define LIBANGLE_REFCOUNTOBJECT_H_
 
 #include "angle_gl.h"
+#include "common/PackedEnums.h"
 #include "common/debug.h"
 #include "libANGLE/Error.h"
 #include "libANGLE/Observer.h"
@@ -135,18 +136,19 @@
 
 using RefCountObjectNoID = angle::RefCountObject<Context, angle::Result>;
 
+template <typename IDType>
 class RefCountObject : public gl::RefCountObjectNoID
 {
   public:
-    explicit RefCountObject(GLuint id) : mId(id) {}
+    explicit RefCountObject(IDType id) : mId(id) {}
 
-    GLuint id() const { return mId; }
+    IDType id() const { return mId; }
 
   protected:
     ~RefCountObject() override {}
 
   private:
-    GLuint mId;
+    IDType mId;
 };
 
 template <class ObjectType>
@@ -160,10 +162,12 @@
 
     BindingPointer(ObjectType *object) : angle::BindingPointer<ObjectType, Context>(object) {}
 
-    GLuint id() const
+    typename ResourceTypeToID<ObjectType>::IDType id() const
     {
         ObjectType *obj = this->get();
-        return obj ? obj->id() : 0;
+        if (obj)
+            return obj->id();
+        return {0};
     }
 };
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.cpp
index 421b1f3..25ae10f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.cpp
@@ -64,7 +64,7 @@
 
 // Renderbuffer implementation.
 Renderbuffer::Renderbuffer(rx::GLImplFactory *implFactory, RenderbufferID id)
-    : RefCountObject(id.value),
+    : RefCountObject(id),
       mState(),
       mImplementation(implFactory->createRenderbuffer(mState)),
       mLabel()
@@ -223,7 +223,7 @@
 
 GLuint Renderbuffer::getId() const
 {
-    return id();
+    return id().value;
 }
 
 Extents Renderbuffer::getAttachmentSize(const gl::ImageIndex & /*imageIndex*/) const
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.h b/Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.h
index 05fd487..d4344e0 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Renderbuffer.h
@@ -61,7 +61,9 @@
     InitState mInitState;
 };
 
-class Renderbuffer final : public RefCountObject, public egl::ImageSibling, public LabeledObject
+class Renderbuffer final : public RefCountObject<RenderbufferID>,
+                           public egl::ImageSibling,
+                           public LabeledObject
 {
   public:
     Renderbuffer(rx::GLImplFactory *implFactory, RenderbufferID id);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Sampler.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Sampler.cpp
index cbef0b3..fc19fbb 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Sampler.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Sampler.cpp
@@ -16,11 +16,7 @@
 {
 
 Sampler::Sampler(rx::GLImplFactory *factory, SamplerID id)
-    : RefCountObject(id.value),
-      mState(),
-      mDirty(true),
-      mSampler(factory->createSampler(mState)),
-      mLabel()
+    : RefCountObject(id), mState(), mDirty(true), mSampler(factory->createSampler(mState)), mLabel()
 {}
 
 Sampler::~Sampler()
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Sampler.h b/Source/ThirdParty/ANGLE/src/libANGLE/Sampler.h
index b75dba3..443aefd 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Sampler.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Sampler.h
@@ -24,7 +24,7 @@
 namespace gl
 {
 
-class Sampler final : public RefCountObject, public LabeledObject, public angle::Subject
+class Sampler final : public RefCountObject<SamplerID>, public LabeledObject, public angle::Subject
 {
   public:
     Sampler(rx::GLImplFactory *factory, SamplerID id);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.cpp
index 5542100..5f7e0bc 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.cpp
@@ -15,7 +15,7 @@
 {
 
 Semaphore::Semaphore(rx::GLImplFactory *factory, SemaphoreID id)
-    : RefCountObject(id.value), mImplementation(factory->createSemaphore())
+    : RefCountObject(id), mImplementation(factory->createSemaphore())
 {}
 
 Semaphore::~Semaphore() {}
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.h b/Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.h
index c549a16..62230a3 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Semaphore.h
@@ -27,7 +27,7 @@
 {
 class Context;
 
-class Semaphore final : public RefCountObject
+class Semaphore final : public RefCountObject<SemaphoreID>
 {
   public:
     Semaphore(rx::GLImplFactory *factory, SemaphoreID id);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Shader.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Shader.cpp
index 9c26bb1..df08f70 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Shader.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Shader.cpp
@@ -472,7 +472,7 @@
         {
             mState.mAllAttributes    = GetShaderVariables(sh::GetAttributes(compilerHandle));
             mState.mActiveAttributes = GetActiveShaderVariables(&mState.mAllAttributes);
-            mState.mInputVaryings = GetShaderVariables(sh::GetInputVaryings(compilerHandle));
+            mState.mInputVaryings    = GetShaderVariables(sh::GetInputVaryings(compilerHandle));
             // TODO(jmadill): Figure out why we only sort in the FS, and if we need to.
             std::sort(mState.mInputVaryings.begin(), mState.mInputVaryings.end(), CompareShaderVar);
             mState.mActiveOutputVariables =
@@ -610,7 +610,8 @@
 std::string Shader::getTransformFeedbackVaryingMappedName(const std::string &tfVaryingName)
 {
     // TODO(jiawei.shao@intel.com): support transform feedback on geometry shader.
-    ASSERT(mState.getShaderType() == ShaderType::Vertex);
+    ASSERT(mState.getShaderType() == ShaderType::Vertex ||
+           mState.getShaderType() == ShaderType::Geometry);
     const auto &varyings = getOutputVaryings();
     auto bracketPos      = tfVaryingName.find("[");
     if (bracketPos != std::string::npos)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/State.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/State.cpp
index dca047a..1421b86 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/State.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/State.cpp
@@ -1163,7 +1163,7 @@
     return getSamplerTexture(static_cast<unsigned int>(mActiveSampler), type);
 }
 
-GLuint State::getSamplerTextureId(unsigned int sampler, TextureType type) const
+TextureID State::getSamplerTextureId(unsigned int sampler, TextureType type) const
 {
     ASSERT(sampler < mSamplerTextures[type].size());
     return mSamplerTextures[type][sampler].id();
@@ -1187,7 +1187,7 @@
         for (size_t bindingIndex = 0; bindingIndex < textureVector.size(); ++bindingIndex)
         {
             BindingPointer<Texture> &binding = textureVector[bindingIndex];
-            if (binding.id() == texture.value)
+            if (binding.id() == texture)
             {
                 // Zero textures are the "default" textures instead of NULL
                 Texture *zeroTexture = zeroTextures[type].get();
@@ -1203,7 +1203,7 @@
 
     for (auto &bindingImageUnit : mImageUnits)
     {
-        if (bindingImageUnit.texture.id() == texture.value)
+        if (bindingImageUnit.texture.id() == texture)
         {
             bindingImageUnit.texture.set(context, nullptr);
             bindingImageUnit.level   = 0;
@@ -1265,7 +1265,7 @@
     // which the sampler is bound, with unit set to the texture unit and sampler set to zero.
     for (size_t i = 0; i < mSamplers.size(); i++)
     {
-        if (mSamplers[i].id() == sampler.value)
+        if (mSamplers[i].id() == sampler)
         {
             setSamplerBinding(context, static_cast<GLuint>(i), nullptr);
         }
@@ -1284,7 +1284,7 @@
     // If a renderbuffer that is currently bound to RENDERBUFFER is deleted, it is as though
     // BindRenderbuffer had been executed with the target RENDERBUFFER and name of zero.
 
-    if (mRenderbuffer.id() == renderbuffer.value)
+    if (mRenderbuffer.id() == renderbuffer)
     {
         setRenderbufferBinding(context, nullptr);
     }
@@ -1493,7 +1493,7 @@
 bool State::removeTransformFeedbackBinding(const Context *context,
                                            TransformFeedbackID transformFeedback)
 {
-    if (mTransformFeedback.id() == transformFeedback.value)
+    if (mTransformFeedback.id() == transformFeedback)
     {
         if (mTransformFeedback.get())
             mTransformFeedback->onBindingChanged(context, false);
@@ -1550,10 +1550,14 @@
     mActiveQueries[type].set(context, query);
 }
 
-GLuint State::getActiveQueryId(QueryType type) const
+QueryID State::getActiveQueryId(QueryType type) const
 {
     const Query *query = getActiveQuery(type);
-    return (query ? query->id() : 0u);
+    if (query)
+    {
+        return query->id();
+    }
+    return {0};
 }
 
 Query *State::getActiveQuery(QueryType type) const
@@ -1620,10 +1624,10 @@
     {
         return angle::Result::Continue;
     }
-    GLuint bufferName = buffer->id();
-    for (auto target : angle::AllEnums<BufferBinding>())
+    BufferID bufferID = buffer->id();
+    for (gl::BufferBinding target : angle::AllEnums<BufferBinding>())
     {
-        if (mBoundBuffers[target].id() == bufferName)
+        if (mBoundBuffers[target].id() == bufferID)
         {
             UpdateBufferBinding(context, &mBoundBuffers[target], nullptr, target);
         }
@@ -1632,10 +1636,10 @@
     TransformFeedback *curTransformFeedback = getCurrentTransformFeedback();
     if (curTransformFeedback)
     {
-        ANGLE_TRY(curTransformFeedback->detachBuffer(context, bufferName));
+        ANGLE_TRY(curTransformFeedback->detachBuffer(context, bufferID));
     }
 
-    if (getVertexArray()->detachBuffer(context, bufferName))
+    if (getVertexArray()->detachBuffer(context, bufferID))
     {
         mDirtyObjects.set(DIRTY_OBJECT_VERTEX_ARRAY);
         context->getStateCache().onVertexArrayStateChange(context);
@@ -1643,7 +1647,7 @@
 
     for (auto &buf : mUniformBuffers)
     {
-        if (buf.id() == bufferName)
+        if (buf.id() == bufferID)
         {
             UpdateIndexedBufferBinding(context, &buf, nullptr, BufferBinding::Uniform, 0, 0);
         }
@@ -1651,7 +1655,7 @@
 
     for (auto &buf : mAtomicCounterBuffers)
     {
-        if (buf.id() == bufferName)
+        if (buf.id() == bufferID)
         {
             UpdateIndexedBufferBinding(context, &buf, nullptr, BufferBinding::AtomicCounter, 0, 0);
         }
@@ -1659,7 +1663,7 @@
 
     for (auto &buf : mShaderStorageBuffers)
     {
-        if (buf.id() == bufferName)
+        if (buf.id() == bufferID)
         {
             UpdateIndexedBufferBinding(context, &buf, nullptr, BufferBinding::ShaderStorage, 0, 0);
         }
@@ -2067,15 +2071,15 @@
     switch (pname)
     {
         case GL_ARRAY_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::Array].id();
+            *params = mBoundBuffers[BufferBinding::Array].id().value;
             break;
         case GL_DRAW_INDIRECT_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::DrawIndirect].id();
+            *params = mBoundBuffers[BufferBinding::DrawIndirect].id().value;
             break;
         case GL_ELEMENT_ARRAY_BUFFER_BINDING:
         {
             Buffer *elementArrayBuffer = getVertexArray()->getElementArrayBuffer();
-            *params                    = elementArrayBuffer ? elementArrayBuffer->id() : 0;
+            *params                    = elementArrayBuffer ? elementArrayBuffer->id().value : 0;
             break;
         }
         case GL_DRAW_FRAMEBUFFER_BINDING:
@@ -2089,7 +2093,7 @@
             *params = mReadFramebuffer->id().value;
             break;
         case GL_RENDERBUFFER_BINDING:
-            *params = mRenderbuffer.id();
+            *params = mRenderbuffer.id().value;
             break;
         case GL_VERTEX_ARRAY_BINDING:
             *params = mVertexArray->id().value;
@@ -2326,70 +2330,78 @@
         case GL_TEXTURE_BINDING_2D:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
             *params =
-                getSamplerTextureId(static_cast<unsigned int>(mActiveSampler), TextureType::_2D);
+                getSamplerTextureId(static_cast<unsigned int>(mActiveSampler), TextureType::_2D)
+                    .value;
             break;
         case GL_TEXTURE_BINDING_RECTANGLE_ANGLE:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
             *params = getSamplerTextureId(static_cast<unsigned int>(mActiveSampler),
-                                          TextureType::Rectangle);
+                                          TextureType::Rectangle)
+                          .value;
             break;
         case GL_TEXTURE_BINDING_CUBE_MAP:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
-            *params = getSamplerTextureId(static_cast<unsigned int>(mActiveSampler),
-                                          TextureType::CubeMap);
+            *params =
+                getSamplerTextureId(static_cast<unsigned int>(mActiveSampler), TextureType::CubeMap)
+                    .value;
             break;
         case GL_TEXTURE_BINDING_3D:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
             *params =
-                getSamplerTextureId(static_cast<unsigned int>(mActiveSampler), TextureType::_3D);
+                getSamplerTextureId(static_cast<unsigned int>(mActiveSampler), TextureType::_3D)
+                    .value;
             break;
         case GL_TEXTURE_BINDING_2D_ARRAY:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
             *params = getSamplerTextureId(static_cast<unsigned int>(mActiveSampler),
-                                          TextureType::_2DArray);
+                                          TextureType::_2DArray)
+                          .value;
             break;
         case GL_TEXTURE_BINDING_2D_MULTISAMPLE:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
             *params = getSamplerTextureId(static_cast<unsigned int>(mActiveSampler),
-                                          TextureType::_2DMultisample);
+                                          TextureType::_2DMultisample)
+                          .value;
             break;
         case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
             *params = getSamplerTextureId(static_cast<unsigned int>(mActiveSampler),
-                                          TextureType::_2DMultisampleArray);
+                                          TextureType::_2DMultisampleArray)
+                          .value;
             break;
         case GL_TEXTURE_BINDING_EXTERNAL_OES:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
             *params = getSamplerTextureId(static_cast<unsigned int>(mActiveSampler),
-                                          TextureType::External);
+                                          TextureType::External)
+                          .value;
             break;
         case GL_UNIFORM_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::Uniform].id();
+            *params = mBoundBuffers[BufferBinding::Uniform].id().value;
             break;
         case GL_TRANSFORM_FEEDBACK_BINDING:
-            *params = mTransformFeedback.id();
+            *params = mTransformFeedback.id().value;
             break;
         case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::TransformFeedback].id();
+            *params = mBoundBuffers[BufferBinding::TransformFeedback].id().value;
             break;
         case GL_COPY_READ_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::CopyRead].id();
+            *params = mBoundBuffers[BufferBinding::CopyRead].id().value;
             break;
         case GL_COPY_WRITE_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::CopyWrite].id();
+            *params = mBoundBuffers[BufferBinding::CopyWrite].id().value;
             break;
         case GL_PIXEL_PACK_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::PixelPack].id();
+            *params = mBoundBuffers[BufferBinding::PixelPack].id().value;
             break;
         case GL_PIXEL_UNPACK_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::PixelUnpack].id();
+            *params = mBoundBuffers[BufferBinding::PixelUnpack].id().value;
             break;
         case GL_READ_BUFFER:
             *params = mReadFramebuffer->getReadBufferState();
             break;
         case GL_SAMPLER_BINDING:
             ASSERT(mActiveSampler < mMaxCombinedTextureImageUnits);
-            *params = getSamplerId(static_cast<GLuint>(mActiveSampler));
+            *params = getSamplerId(static_cast<GLuint>(mActiveSampler)).value;
             break;
         case GL_DEBUG_LOGGED_MESSAGES:
             *params = static_cast<GLint>(mDebug.getMessageCount());
@@ -2410,13 +2422,13 @@
             *params = static_cast<GLint>(mCoverageModulation);
             break;
         case GL_ATOMIC_COUNTER_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::AtomicCounter].id();
+            *params = mBoundBuffers[BufferBinding::AtomicCounter].id().value;
             break;
         case GL_SHADER_STORAGE_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::ShaderStorage].id();
+            *params = mBoundBuffers[BufferBinding::ShaderStorage].id().value;
             break;
         case GL_DISPATCH_INDIRECT_BUFFER_BINDING:
-            *params = mBoundBuffers[BufferBinding::DispatchIndirect].id();
+            *params = mBoundBuffers[BufferBinding::DispatchIndirect].id().value;
             break;
         case GL_ALPHA_TEST_FUNC:
             *params = ToGLenum(mGLES1State.mAlphaTestFunc);
@@ -2495,23 +2507,23 @@
     {
         case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
             ASSERT(static_cast<size_t>(index) < mTransformFeedback->getIndexedBufferCount());
-            *data = mTransformFeedback->getIndexedBuffer(index).id();
+            *data = mTransformFeedback->getIndexedBuffer(index).id().value;
             break;
         case GL_UNIFORM_BUFFER_BINDING:
             ASSERT(static_cast<size_t>(index) < mUniformBuffers.size());
-            *data = mUniformBuffers[index].id();
+            *data = mUniformBuffers[index].id().value;
             break;
         case GL_ATOMIC_COUNTER_BUFFER_BINDING:
             ASSERT(static_cast<size_t>(index) < mAtomicCounterBuffers.size());
-            *data = mAtomicCounterBuffers[index].id();
+            *data = mAtomicCounterBuffers[index].id().value;
             break;
         case GL_SHADER_STORAGE_BUFFER_BINDING:
             ASSERT(static_cast<size_t>(index) < mShaderStorageBuffers.size());
-            *data = mShaderStorageBuffers[index].id();
+            *data = mShaderStorageBuffers[index].id().value;
             break;
         case GL_VERTEX_BINDING_BUFFER:
             ASSERT(static_cast<size_t>(index) < mVertexArray->getMaxBindings());
-            *data = mVertexArray->getVertexBinding(index).getBuffer().id();
+            *data = mVertexArray->getVertexBinding(index).getBuffer().id().value;
             break;
         case GL_VERTEX_BINDING_DIVISOR:
             ASSERT(static_cast<size_t>(index) < mVertexArray->getMaxBindings());
@@ -2531,7 +2543,7 @@
             break;
         case GL_IMAGE_BINDING_NAME:
             ASSERT(static_cast<size_t>(index) < mImageUnits.size());
-            *data = mImageUnits[index].texture.id();
+            *data = mImageUnits[index].texture.id().value;
             break;
         case GL_IMAGE_BINDING_LEVEL:
             ASSERT(static_cast<size_t>(index) < mImageUnits.size());
@@ -2688,6 +2700,24 @@
     return angle::Result::Continue;
 }
 
+angle::Result State::syncImages(const Context *context)
+{
+    if (mDirtyImages.none())
+        return angle::Result::Continue;
+
+    for (size_t imageUnitIndex : mDirtyImages)
+    {
+        Texture *texture = mImageUnits[imageUnitIndex].texture.get();
+        if (texture && texture->hasAnyDirtyBit())
+        {
+            ANGLE_TRY(texture->syncState(context));
+        }
+    }
+
+    mDirtyImages.reset();
+    return angle::Result::Continue;
+}
+
 angle::Result State::syncSamplers(const Context *context)
 {
     if (mDirtySamplers.none())
@@ -2891,6 +2921,12 @@
     {
         const ImageUnit &image = mImageUnits[unit];
         ASSERT(image.texture.get());
+        if (image.texture->hasAnyDirtyBit())
+        {
+            mDirtyImages.set(unit);
+            mDirtyObjects.set(DIRTY_OBJECT_IMAGES);
+        }
+
         if (mRobustResourceInit && image.texture->initState() == InitState::MayNeedInit)
         {
             mDirtyObjects.set(DIRTY_OBJECT_IMAGES_INIT);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/State.h b/Source/ThirdParty/ANGLE/src/libANGLE/State.h
index 4f99382..43bbb28 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/State.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/State.h
@@ -234,7 +234,7 @@
         return mSamplerTextures[type][sampler].get();
     }
 
-    GLuint getSamplerTextureId(unsigned int sampler, TextureType type) const;
+    TextureID getSamplerTextureId(unsigned int sampler, TextureType type) const;
     void detachTexture(const Context *context, const TextureMap &zeroTextures, TextureID texture);
     void initializeZeroTextures(const Context *context, const TextureMap &zeroTextures);
 
@@ -242,7 +242,7 @@
 
     // Sampler object binding manipulation
     void setSamplerBinding(const Context *context, GLuint textureUnit, Sampler *sampler);
-    GLuint getSamplerId(GLuint textureUnit) const
+    SamplerID getSamplerId(GLuint textureUnit) const
     {
         ASSERT(textureUnit < mSamplers.size());
         return mSamplers[textureUnit].id();
@@ -257,7 +257,7 @@
 
     // Renderbuffer binding manipulation
     void setRenderbufferBinding(const Context *context, Renderbuffer *renderbuffer);
-    GLuint getRenderbufferId() const { return mRenderbuffer.id(); }
+    RenderbufferID getRenderbufferId() const { return mRenderbuffer.id(); }
     Renderbuffer *getCurrentRenderbuffer() const { return mRenderbuffer.get(); }
     void detachRenderbuffer(const Context *context, RenderbufferID renderbuffer);
 
@@ -323,7 +323,7 @@
     bool isQueryActive(QueryType type) const;
     bool isQueryActive(Query *query) const;
     void setActiveQuery(const Context *context, QueryType type, Query *query);
-    GLuint getActiveQueryId(QueryType type) const;
+    QueryID getActiveQueryId(QueryType type) const;
     Query *getActiveQuery(QueryType type) const;
 
     // Program Pipeline binding manipulation
@@ -586,6 +586,7 @@
         DIRTY_OBJECT_DRAW_FRAMEBUFFER,
         DIRTY_OBJECT_VERTEX_ARRAY,
         DIRTY_OBJECT_TEXTURES,  // Top-level dirty bit. Also see mDirtyTextures.
+        DIRTY_OBJECT_IMAGES,    // Top-level dirty bit. Also see mDirtyImages.
         DIRTY_OBJECT_SAMPLERS,  // Top-level dirty bit. Also see mDirtySamplers.
         DIRTY_OBJECT_PROGRAM,
         DIRTY_OBJECT_UNKNOWN,
@@ -702,6 +703,7 @@
     angle::Result syncDrawFramebuffer(const Context *context);
     angle::Result syncVertexArray(const Context *context);
     angle::Result syncTextures(const Context *context);
+    angle::Result syncImages(const Context *context);
     angle::Result syncSamplers(const Context *context);
     angle::Result syncProgram(const Context *context);
 
@@ -709,8 +711,8 @@
     static constexpr DirtyObjectHandler kDirtyObjectHandlers[DIRTY_OBJECT_MAX] = {
         &State::syncTexturesInit,    &State::syncImagesInit,      &State::syncReadAttachments,
         &State::syncDrawAttachments, &State::syncReadFramebuffer, &State::syncDrawFramebuffer,
-        &State::syncVertexArray,     &State::syncTextures,        &State::syncSamplers,
-        &State::syncProgram,
+        &State::syncVertexArray,     &State::syncTextures,        &State::syncImages,
+        &State::syncSamplers,        &State::syncProgram,
     };
 
     // Robust init must happen before Framebuffer init for the Vulkan back-end.
@@ -727,8 +729,9 @@
     static_assert(DIRTY_OBJECT_DRAW_FRAMEBUFFER == 5, "check DIRTY_OBJECT_DRAW_FRAMEBUFFER index");
     static_assert(DIRTY_OBJECT_VERTEX_ARRAY == 6, "check DIRTY_OBJECT_VERTEX_ARRAY index");
     static_assert(DIRTY_OBJECT_TEXTURES == 7, "check DIRTY_OBJECT_TEXTURES index");
-    static_assert(DIRTY_OBJECT_SAMPLERS == 8, "check DIRTY_OBJECT_SAMPLERS index");
-    static_assert(DIRTY_OBJECT_PROGRAM == 9, "check DIRTY_OBJECT_PROGRAM index");
+    static_assert(DIRTY_OBJECT_IMAGES == 8, "check DIRTY_OBJECT_IMAGES index");
+    static_assert(DIRTY_OBJECT_SAMPLERS == 9, "check DIRTY_OBJECT_SAMPLERS index");
+    static_assert(DIRTY_OBJECT_PROGRAM == 10, "check DIRTY_OBJECT_PROGRAM index");
 
     // Dispatch table for buffer update functions.
     static const angle::PackedEnumMap<BufferBinding, BufferBindingSetter> kBufferSetters;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Texture.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/Texture.cpp
index 3cb41b2..23f7d68 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Texture.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Texture.cpp
@@ -616,7 +616,7 @@
 }
 
 Texture::Texture(rx::GLImplFactory *factory, TextureID id, TextureType type)
-    : RefCountObject(id.value),
+    : RefCountObject(id),
       mState(type),
       mTexture(factory->createTexture(mState)),
       mImplObserver(this, rx::kTextureImageImplObserverMessageIndex),
@@ -1266,10 +1266,11 @@
     ANGLE_TRY(releaseTexImageInternal(context));
     ANGLE_TRY(orphanImages(context));
 
-    ANGLE_TRY(mTexture->setStorage(context, type, levels, internalFormat, size));
-
     mState.mImmutableFormat = true;
     mState.mImmutableLevels = static_cast<GLuint>(levels);
+
+    ANGLE_TRY(mTexture->setStorage(context, type, levels, internalFormat, size));
+
     mState.clearImageDescs();
     mState.setImageDescChain(0, static_cast<GLuint>(levels - 1), size, Format(internalFormat),
                              InitState::MayNeedInit);
@@ -1673,7 +1674,7 @@
 
 GLuint Texture::getId() const
 {
-    return id();
+    return id().value;
 }
 
 GLuint Texture::getNativeID() const
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/Texture.h b/Source/ThirdParty/ANGLE/src/libANGLE/Texture.h
index f1ecf04..a6281e5 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/Texture.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/Texture.h
@@ -212,7 +212,9 @@
 bool operator==(const TextureState &a, const TextureState &b);
 bool operator!=(const TextureState &a, const TextureState &b);
 
-class Texture final : public RefCountObject, public egl::ImageSibling, public LabeledObject
+class Texture final : public RefCountObject<TextureID>,
+                      public egl::ImageSibling,
+                      public LabeledObject
 {
   public:
     Texture(rx::GLImplFactory *factory, TextureID id, TextureType type);
@@ -438,7 +440,10 @@
 
     void onAttach(const Context *context) override;
     void onDetach(const Context *context) override;
+
+    // Used specifically for FramebufferAttachmentObject.
     GLuint getId() const override;
+
     GLuint getNativeID() const;
 
     // Needed for robust resource init.
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.cpp
index 5af2309..98f2491 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.cpp
@@ -87,7 +87,7 @@
 TransformFeedback::TransformFeedback(rx::GLImplFactory *implFactory,
                                      TransformFeedbackID id,
                                      const Caps &caps)
-    : RefCountObject(id.value),
+    : RefCountObject(id),
       mState(caps.maxTransformFeedbackSeparateAttributes),
       mImplementation(implFactory->createTransformFeedback(mState))
 {
@@ -242,12 +242,12 @@
     return mState.mProgram != nullptr && mState.mProgram->id().value == program.value;
 }
 
-angle::Result TransformFeedback::detachBuffer(const Context *context, GLuint bufferName)
+angle::Result TransformFeedback::detachBuffer(const Context *context, BufferID bufferID)
 {
     bool isBound = context->isCurrentTransformFeedback(this);
     for (size_t index = 0; index < mState.mIndexedBuffers.size(); index++)
     {
-        if (mState.mIndexedBuffers[index].id() == bufferName)
+        if (mState.mIndexedBuffers[index].id() == bufferID)
         {
             if (isBound)
             {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.h b/Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.h
index aa01b43..a646427 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/TransformFeedback.h
@@ -57,7 +57,7 @@
     std::vector<OffsetBindingPointer<Buffer>> mIndexedBuffers;
 };
 
-class TransformFeedback final : public RefCountObject, public LabeledObject
+class TransformFeedback final : public RefCountObject<TransformFeedbackID>, public LabeledObject
 {
   public:
     TransformFeedback(rx::GLImplFactory *implFactory, TransformFeedbackID id, const Caps &caps);
@@ -101,7 +101,7 @@
     // Returns true if any buffer bound to this object is also bound to another target.
     bool buffersBoundForOtherUse() const;
 
-    angle::Result detachBuffer(const Context *context, GLuint bufferName);
+    angle::Result detachBuffer(const Context *context, BufferID bufferID);
 
     rx::TransformFeedbackImpl *getImplementation() const;
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking.cpp
index e6a88f7..16b8e3b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/VaryingPacking.cpp
@@ -287,8 +287,8 @@
 
     for (const auto &ref : mergedVaryings)
     {
-        const sh::ShaderVariable *input  = ref.second.vertex;
-        const sh::ShaderVariable *output = ref.second.fragment;
+        const sh::ShaderVariable *input  = ref.second.frontShader;
+        const sh::ShaderVariable *output = ref.second.backShader;
 
         // Only pack statically used varyings that have a matched input or output, plus special
         // builtins. Note that we pack all statically used user-defined varyings even if they are
@@ -313,7 +313,7 @@
                 // variable is taken from the fragment shader.
                 if (varying->isStruct())
                 {
-                    ASSERT(!varying->isArray());
+                    ASSERT(!(varying->isArray() && varying == input));
                     for (GLuint fieldIndex = 0; fieldIndex < varying->fields.size(); ++fieldIndex)
                     {
                         const sh::ShaderVariable &field = varying->fields[fieldIndex];
@@ -406,7 +406,6 @@
 bool VaryingPacking::packUserVaryings(gl::InfoLog &infoLog,
                                       const std::vector<PackedVarying> &packedVaryings)
 {
-
     // "Variables are packed into the registers one at a time so that they each occupy a contiguous
     // subrectangle. No splitting of variables is permitted."
     for (const PackedVarying &packedVarying : packedVaryings)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.cpp
index 6a83e6c..8987129 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.cpp
@@ -144,14 +144,14 @@
     return mState.mLabel;
 }
 
-bool VertexArray::detachBuffer(const Context *context, GLuint bufferName)
+bool VertexArray::detachBuffer(const Context *context, BufferID bufferID)
 {
     bool isBound           = context->isCurrentVertexArray(this);
     bool anyBufferDetached = false;
     for (uint32_t bindingIndex = 0; bindingIndex < gl::MAX_VERTEX_ATTRIB_BINDINGS; ++bindingIndex)
     {
         VertexBinding &binding = mState.mVertexBindings[bindingIndex];
-        if (binding.getBuffer().id() == bufferName)
+        if (binding.getBuffer().id() == bufferID)
         {
             if (isBound)
             {
@@ -180,7 +180,7 @@
         }
     }
 
-    if (mState.mElementArrayBuffer.get() && mState.mElementArrayBuffer->id() == bufferName)
+    if (mState.mElementArrayBuffer.get() && mState.mElementArrayBuffer->id() == bufferID)
     {
         if (isBound && mState.mElementArrayBuffer.get())
             mState.mElementArrayBuffer->onNonTFBindingChanged(-1);
@@ -315,7 +315,8 @@
         mCachedTransformFeedbackConflictedBindingsMask.set(
             bindingIndex, boundBuffer->isBoundForTransformFeedbackAndOtherUse());
         mState.mClientMemoryAttribsMask &= ~binding->getBoundAttributesMask();
-        updateCachedMappedArrayBuffers(boundBuffer->isMapped(), binding->getBoundAttributesMask());
+        updateCachedMappedArrayBuffers((boundBuffer->isMapped() == GL_TRUE),
+                                       binding->getBoundAttributesMask());
     }
     else
     {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.h b/Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.h
index cf4b7a9..354f767 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/VertexArray.h
@@ -179,7 +179,7 @@
     }
 
     // Returns true if the function finds and detaches a bound buffer.
-    bool detachBuffer(const Context *context, GLuint bufferName);
+    bool detachBuffer(const Context *context, BufferID bufferID);
 
     void setVertexAttribDivisor(const Context *context, size_t index, GLuint divisor);
     void enableAttribute(size_t attribIndex, bool enabledState);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_2_0_params.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_2_0_params.cpp
index 14f0405..1d50a79 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_2_0_params.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_2_0_params.cpp
@@ -100,7 +100,7 @@
                                         const BufferID *buffers,
                                         ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureMemory(buffers, sizeof(BufferID) * n, paramCapture);
 }
 
 void CaptureDeleteFramebuffers_framebuffersPacked(const Context *context,
@@ -109,7 +109,7 @@
                                                   const FramebufferID *framebuffers,
                                                   ParamCapture *paramCapture)
 {
-    CaptureMemory(framebuffers, sizeof(GLuint) * n, paramCapture);
+    CaptureMemory(framebuffers, sizeof(FramebufferID) * n, paramCapture);
 }
 
 void CaptureDeleteRenderbuffers_renderbuffersPacked(const Context *context,
@@ -127,7 +127,7 @@
                                           const TextureID *textures,
                                           ParamCapture *paramCapture)
 {
-    CaptureMemory(textures, sizeof(GLuint) * n, paramCapture);
+    CaptureMemory(textures, sizeof(TextureID) * n, paramCapture);
 }
 
 void CaptureDrawElements_indices(const Context *context,
@@ -156,7 +156,7 @@
                                      BufferID *buffers,
                                      ParamCapture *paramCapture)
 {
-    paramCapture->readBufferSizeBytes = sizeof(GLuint) * n;
+    CaptureGenHandles(n, buffers, paramCapture);
 }
 
 void CaptureGenFramebuffers_framebuffersPacked(const Context *context,
@@ -165,7 +165,7 @@
                                                FramebufferID *framebuffers,
                                                ParamCapture *paramCapture)
 {
-    paramCapture->readBufferSizeBytes = sizeof(GLuint) * n;
+    CaptureGenHandles(n, framebuffers, paramCapture);
 }
 
 void CaptureGenRenderbuffers_renderbuffersPacked(const Context *context,
@@ -174,8 +174,7 @@
                                                  RenderbufferID *renderbuffers,
                                                  ParamCapture *paramCapture)
 {
-    paramCapture->readBufferSizeBytes = sizeof(RenderbufferID) * n;
-    CaptureMemory(renderbuffers, paramCapture->readBufferSizeBytes, paramCapture);
+    CaptureGenHandles(n, renderbuffers, paramCapture);
 }
 
 void CaptureGenTextures_texturesPacked(const Context *context,
@@ -184,7 +183,7 @@
                                        TextureID *textures,
                                        ParamCapture *paramCapture)
 {
-    paramCapture->readBufferSizeBytes = sizeof(GLuint) * n;
+    CaptureGenHandles(n, textures, paramCapture);
 }
 
 void CaptureGetActiveAttrib_length(const Context *context,
@@ -643,10 +642,11 @@
 {
     for (GLsizei index = 0; index < count; ++index)
     {
+        size_t len = ((length && length[index] >= 0) ? length[index] : strlen(string[index]));
         // includes the '\0' suffix
-        size_t len = (length ? length[index] : strlen(string[index])) + 1;
-        CaptureMemory(string[index], len, paramCapture);
-        paramCapture->data[paramCapture->data.size() - 1][len] = '\0';
+        std::vector<uint8_t> data(len + 1, 0);
+        memcpy(data.data(), string[index], len);
+        paramCapture->data.emplace_back(std::move(data));
     }
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_0_params.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_0_params.cpp
index 24f33eb..d73c431 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_0_params.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_0_params.cpp
@@ -82,7 +82,7 @@
                                     const QueryID *ids,
                                     ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureMemory(ids, sizeof(QueryID) * n, paramCapture);
 }
 
 void CaptureDeleteSamplers_samplersPacked(const Context *context,
@@ -91,7 +91,7 @@
                                           const SamplerID *samplers,
                                           ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureMemory(samplers, sizeof(SamplerID) * count, paramCapture);
 }
 
 void CaptureDeleteTransformFeedbacks_idsPacked(const Context *context,
@@ -100,7 +100,7 @@
                                                const TransformFeedbackID *ids,
                                                ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureMemory(ids, sizeof(TransformFeedbackID) * n, paramCapture);
 }
 
 void CaptureDeleteVertexArrays_arraysPacked(const Context *context,
@@ -109,7 +109,7 @@
                                             const VertexArrayID *arrays,
                                             ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureMemory(arrays, sizeof(VertexArrayID) * n, paramCapture);
 }
 
 void CaptureDrawBuffers_bufs(const Context *context,
@@ -152,7 +152,7 @@
                                  QueryID *ids,
                                  ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureGenHandles(n, ids, paramCapture);
 }
 
 void CaptureGenSamplers_samplersPacked(const Context *context,
@@ -161,7 +161,7 @@
                                        SamplerID *samplers,
                                        ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureGenHandles(count, samplers, paramCapture);
 }
 
 void CaptureGenTransformFeedbacks_idsPacked(const Context *context,
@@ -170,7 +170,7 @@
                                             TransformFeedbackID *ids,
                                             ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureGenHandles(n, ids, paramCapture);
 }
 
 void CaptureGenVertexArrays_arraysPacked(const Context *context,
@@ -179,7 +179,7 @@
                                          VertexArrayID *arrays,
                                          ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureGenHandles(n, arrays, paramCapture);
 }
 
 void CaptureGetActiveUniformBlockName_length(const Context *context,
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_1_params.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_1_params.cpp
index 995cd7f..8cadb2b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_1_params.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_3_1_params.cpp
@@ -29,7 +29,7 @@
                                                    const ProgramPipelineID *pipelines,
                                                    ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureMemory(pipelines, sizeof(ProgramPipelineID) * n, paramCapture);
 }
 
 void CaptureDrawArraysIndirect_indirect(const Context *context,
@@ -57,7 +57,7 @@
                                                 ProgramPipelineID *pipelines,
                                                 ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureGenHandles(n, pipelines, paramCapture);
 }
 
 void CaptureGetBooleani_v_data(const Context *context,
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_ext_params.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_ext_params.cpp
index aa28efd..7506b81 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_ext_params.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/capture_gles_ext_params.cpp
@@ -2177,7 +2177,7 @@
                                        const QueryID *ids,
                                        ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureMemory(ids, sizeof(QueryID) * n, paramCapture);
 }
 
 void CaptureGenQueriesEXT_idsPacked(const Context *context,
@@ -2186,7 +2186,7 @@
                                     QueryID *ids,
                                     ParamCapture *paramCapture)
 {
-    UNIMPLEMENTED();
+    CaptureGenHandles(n, ids, paramCapture);
 }
 
 void CaptureGetQueryObjecti64vEXT_params(const Context *context,
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/features.h b/Source/ThirdParty/ANGLE/src/libANGLE/features.h
index 9459237..5a562da 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/features.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/features.h
@@ -53,8 +53,9 @@
 #endif
 
 // Controls if our threading code uses std::async or falls back to single-threaded operations.
-#if !defined(ANGLE_STD_ASYNC_WORKERS)
+// Note that we can't easily use std::async in UWPs due to UWP threading restrictions.
+#if !defined(ANGLE_STD_ASYNC_WORKERS) && !defined(ANGLE_ENABLE_WINDOWS_UWP)
 #    define ANGLE_STD_ASYNC_WORKERS ANGLE_ENABLED
-#endif  // !defined(ANGLE_STD_ASYNC_WORKERS)
+#endif  // !defined(ANGLE_STD_ASYNC_WORKERS) && & !defined(ANGLE_ENABLE_WINDOWS_UWP)
 
 #endif  // LIBANGLE_FEATURES_H_
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp
index 823c069..8780a85 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/formatutils.cpp
@@ -144,6 +144,15 @@
     return extensions.*bool1 || extensions.*bool2 || extensions.*bool3;
 }
 
+static bool UnsizedHalfFloatOESRGBATextureAttachmentSupport(const Version &clientVersion,
+                                                            const Extensions &extensions)
+{
+    // dEQP requires ES3 + EXT_color_buffer_half_float for rendering to RGB[A] + HALF_FLOAT_OES
+    // textures but WebGL allows it with just ES 2.0
+    return (clientVersion.major >= 3 || extensions.webglCompatibility) &&
+           extensions.colorBufferHalfFloat;
+}
+
 // R8, RG8
 static bool SizedRGSupport(const Version &clientVersion, const Extensions &extensions)
 {
@@ -1004,8 +1013,8 @@
     AddRGBAFormat(&map, GL_RGBA,         false, 16, 16, 16, 16, 0, GL_RGBA, GL_HALF_FLOAT,                   GL_FLOAT, false, NeverSupported,                                                          NeverSupported,                                  NeverSupported,                                 NeverSupported);
     AddRGBAFormat(&map, GL_RED,          false, 16,  0,  0,  0, 0, GL_RED,  GL_HALF_FLOAT_OES,               GL_FLOAT, false, RequireExtAndExt<&Extensions::textureHalfFloat, &Extensions::textureRG>, RequireExt<&Extensions::textureHalfFloatLinear>, AlwaysSupported,                                NeverSupported);
     AddRGBAFormat(&map, GL_RG,           false, 16, 16,  0,  0, 0, GL_RG,   GL_HALF_FLOAT_OES,               GL_FLOAT, false, RequireExtAndExt<&Extensions::textureHalfFloat, &Extensions::textureRG>, RequireExt<&Extensions::textureHalfFloatLinear>, AlwaysSupported,                                NeverSupported);
-    AddRGBAFormat(&map, GL_RGB,          false, 16, 16, 16,  0, 0, GL_RGB,  GL_HALF_FLOAT_OES,               GL_FLOAT, false, RequireExt<&Extensions::textureHalfFloat>,                               RequireExt<&Extensions::textureHalfFloatLinear>, RequireExt<&Extensions::colorBufferHalfFloat>,  NeverSupported);
-    AddRGBAFormat(&map, GL_RGBA,         false, 16, 16, 16, 16, 0, GL_RGBA, GL_HALF_FLOAT_OES,               GL_FLOAT, false, RequireExt<&Extensions::textureHalfFloat>,                               RequireExt<&Extensions::textureHalfFloatLinear>, RequireExt<&Extensions::colorBufferHalfFloat>,  NeverSupported);
+    AddRGBAFormat(&map, GL_RGB,          false, 16, 16, 16,  0, 0, GL_RGB,  GL_HALF_FLOAT_OES,               GL_FLOAT, false, RequireExt<&Extensions::textureHalfFloat>,                               RequireExt<&Extensions::textureHalfFloatLinear>, UnsizedHalfFloatOESRGBATextureAttachmentSupport, NeverSupported);
+    AddRGBAFormat(&map, GL_RGBA,         false, 16, 16, 16, 16, 0, GL_RGBA, GL_HALF_FLOAT_OES,               GL_FLOAT, false, RequireExt<&Extensions::textureHalfFloat>,                               RequireExt<&Extensions::textureHalfFloatLinear>, UnsizedHalfFloatOESRGBATextureAttachmentSupport, NeverSupported);
     AddRGBAFormat(&map, GL_RED,          false, 32,  0,  0,  0, 0, GL_RED,  GL_FLOAT,                        GL_FLOAT, false, RequireExtAndExt<&Extensions::textureFloat, &Extensions::textureRG>,     RequireExt<&Extensions::textureFloatLinear>,     AlwaysSupported,                                NeverSupported);
     AddRGBAFormat(&map, GL_RG,           false, 32, 32,  0,  0, 0, GL_RG,   GL_FLOAT,                        GL_FLOAT, false, RequireExtAndExt<&Extensions::textureFloat, &Extensions::textureRG>,     RequireExt<&Extensions::textureFloatLinear>,     AlwaysSupported,                                NeverSupported);
     AddRGBAFormat(&map, GL_RGB,          false, 32, 32, 32,  0, 0, GL_RGB,  GL_FLOAT,                        GL_FLOAT, false, RequireExt<&Extensions::textureFloat>,                                   RequireExt<&Extensions::textureFloatLinear>,     NeverSupported,                                 NeverSupported);
@@ -1203,11 +1212,23 @@
                                        GLuint rowPitch,
                                        GLuint *resultOut) const
 {
-    GLuint rows =
-        (imageHeight > 0 ? static_cast<GLuint>(imageHeight) : static_cast<GLuint>(height));
+    CheckedNumeric<GLuint> pixelsHeight(imageHeight > 0 ? static_cast<GLuint>(imageHeight)
+                                                        : static_cast<GLuint>(height));
+
+    CheckedNumeric<GLuint> rowCount;
+    if (compressed)
+    {
+        CheckedNumeric<GLuint> checkedBlockHeight(compressedBlockHeight);
+        rowCount = (pixelsHeight + checkedBlockHeight - 1u) / checkedBlockHeight;
+    }
+    else
+    {
+        rowCount = pixelsHeight;
+    }
+
     CheckedNumeric<GLuint> checkedRowPitch(rowPitch);
 
-    return CheckedMathResult(checkedRowPitch * rows, resultOut);
+    return CheckedMathResult(checkedRowPitch * rowCount, resultOut);
 }
 
 bool InternalFormat::computeDepthPitch(GLenum formatType,
@@ -1612,6 +1633,7 @@
 #endif
             }
         case VertexAttribType::HalfFloat:
+        case VertexAttribType::HalfFloatOES:
             switch (components)
             {
                 case 1:
@@ -1657,6 +1679,49 @@
             if (normalized)
                 return angle::FormatID::R10G10B10A2_UNORM;
             return angle::FormatID::R10G10B10A2_USCALED;
+        case VertexAttribType::Int1010102:
+            switch (components)
+            {
+                case 3:
+                    if (pureInteger)
+                        return angle::FormatID::X2R10G10B10_SINT_VERTEX;
+                    if (normalized)
+                        return angle::FormatID::X2R10G10B10_SNORM_VERTEX;
+                    return angle::FormatID::X2R10G10B10_SSCALED_VERTEX;
+                case 4:
+                    if (pureInteger)
+                        return angle::FormatID::A2R10G10B10_SINT_VERTEX;
+                    if (normalized)
+                        return angle::FormatID::A2R10G10B10_SNORM_VERTEX;
+                    return angle::FormatID::A2R10G10B10_SSCALED_VERTEX;
+                default:
+                    UNREACHABLE();
+#if !UNREACHABLE_IS_NORETURN
+                    return angle::FormatID::NONE;
+#endif
+            }
+        case VertexAttribType::UnsignedInt1010102:
+            switch (components)
+            {
+                case 3:
+                    if (pureInteger)
+                        return angle::FormatID::X2R10G10B10_UINT_VERTEX;
+                    if (normalized)
+                        return angle::FormatID::X2R10G10B10_UNORM_VERTEX;
+                    return angle::FormatID::X2R10G10B10_USCALED_VERTEX;
+
+                case 4:
+                    if (pureInteger)
+                        return angle::FormatID::A2R10G10B10_UINT_VERTEX;
+                    if (normalized)
+                        return angle::FormatID::A2R10G10B10_UNORM_VERTEX;
+                    return angle::FormatID::A2R10G10B10_USCALED_VERTEX;
+                default:
+                    UNREACHABLE();
+#if !UNREACHABLE_IS_NORETURN
+                    return angle::FormatID::NONE;
+#endif
+            }
         default:
             UNREACHABLE();
 #if !UNREACHABLE_IS_NORETURN
@@ -2144,6 +2209,61 @@
             static const VertexFormat format(GL_UNSIGNED_INT_2_10_10_10_REV, GL_FALSE, 4, true);
             return format;
         }
+        case angle::FormatID::A2R10G10B10_SSCALED_VERTEX:
+        {
+            static const VertexFormat format(GL_INT_10_10_10_2_OES, GL_FALSE, 4, false);
+            return format;
+        }
+        case angle::FormatID::A2R10G10B10_USCALED_VERTEX:
+        {
+            static const VertexFormat format(GL_UNSIGNED_INT_10_10_10_2_OES, GL_FALSE, 4, false);
+            return format;
+        }
+        case angle::FormatID::A2R10G10B10_SNORM_VERTEX:
+        {
+            static const VertexFormat format(GL_INT_10_10_10_2_OES, GL_TRUE, 4, false);
+            return format;
+        }
+        case angle::FormatID::A2R10G10B10_UNORM_VERTEX:
+        {
+            static const VertexFormat format(GL_UNSIGNED_INT_10_10_10_2_OES, GL_TRUE, 4, false);
+            return format;
+        }
+        case angle::FormatID::A2R10G10B10_SINT_VERTEX:
+        {
+            static const VertexFormat format(GL_INT_10_10_10_2_OES, GL_FALSE, 4, true);
+            return format;
+        }
+        case angle::FormatID::A2R10G10B10_UINT_VERTEX:
+        {
+            static const VertexFormat format(GL_UNSIGNED_INT_10_10_10_2_OES, GL_FALSE, 4, true);
+            return format;
+        }
+        case angle::FormatID::X2R10G10B10_SSCALED_VERTEX:
+        {
+            static const VertexFormat format(GL_INT_10_10_10_2_OES, GL_FALSE, 4, false);
+            return format;
+        }
+        case angle::FormatID::X2R10G10B10_USCALED_VERTEX:
+        {
+            static const VertexFormat format(GL_UNSIGNED_INT_10_10_10_2_OES, GL_FALSE, 4, false);
+            return format;
+        }
+        case angle::FormatID::X2R10G10B10_SNORM_VERTEX:
+        {
+            static const VertexFormat format(GL_INT_10_10_10_2_OES, GL_TRUE, 4, false);
+            return format;
+        }
+        case angle::FormatID::X2R10G10B10_UNORM_VERTEX:
+        {
+            static const VertexFormat format(GL_UNSIGNED_INT_10_10_10_2_OES, GL_TRUE, 4, false);
+            return format;
+        }
+        case angle::FormatID::X2R10G10B10_SINT_VERTEX:
+        {
+            static const VertexFormat format(GL_INT_10_10_10_2_OES, GL_FALSE, 4, true);
+            return format;
+        }
         default:
         {
             static const VertexFormat format(GL_NONE, GL_FALSE, 0, false);
@@ -2214,6 +2334,18 @@
         case angle::FormatID::R10G10B10A2_UNORM:
         case angle::FormatID::R10G10B10A2_SINT:
         case angle::FormatID::R10G10B10A2_UINT:
+        case angle::FormatID::A2R10G10B10_SSCALED_VERTEX:
+        case angle::FormatID::A2R10G10B10_USCALED_VERTEX:
+        case angle::FormatID::A2R10G10B10_SINT_VERTEX:
+        case angle::FormatID::A2R10G10B10_UINT_VERTEX:
+        case angle::FormatID::A2R10G10B10_SNORM_VERTEX:
+        case angle::FormatID::A2R10G10B10_UNORM_VERTEX:
+        case angle::FormatID::X2R10G10B10_SSCALED_VERTEX:
+        case angle::FormatID::X2R10G10B10_USCALED_VERTEX:
+        case angle::FormatID::X2R10G10B10_SINT_VERTEX:
+        case angle::FormatID::X2R10G10B10_UINT_VERTEX:
+        case angle::FormatID::X2R10G10B10_SNORM_VERTEX:
+        case angle::FormatID::X2R10G10B10_UNORM_VERTEX:
             return 4;
 
         case angle::FormatID::R16G16B16_SSCALED:
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.cpp
index a653faf..bfddbd0 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.cpp
@@ -691,4 +691,131 @@
             return "unknown";
     }
 }
+
+ResourceIDType GetResourceIDTypeFromParamType(ParamType paramType)
+{
+    switch (paramType)
+    {
+        case ParamType::TBufferID:
+            return ResourceIDType::Buffer;
+        case ParamType::TBufferIDConstPointer:
+            return ResourceIDType::Buffer;
+        case ParamType::TBufferIDPointer:
+            return ResourceIDType::Buffer;
+        case ParamType::TFenceNVID:
+            return ResourceIDType::FenceNV;
+        case ParamType::TFenceNVIDConstPointer:
+            return ResourceIDType::FenceNV;
+        case ParamType::TFenceNVIDPointer:
+            return ResourceIDType::FenceNV;
+        case ParamType::TFramebufferID:
+            return ResourceIDType::Framebuffer;
+        case ParamType::TFramebufferIDConstPointer:
+            return ResourceIDType::Framebuffer;
+        case ParamType::TFramebufferIDPointer:
+            return ResourceIDType::Framebuffer;
+        case ParamType::TMemoryObjectID:
+            return ResourceIDType::MemoryObject;
+        case ParamType::TMemoryObjectIDConstPointer:
+            return ResourceIDType::MemoryObject;
+        case ParamType::TMemoryObjectIDPointer:
+            return ResourceIDType::MemoryObject;
+        case ParamType::TPathID:
+            return ResourceIDType::Path;
+        case ParamType::TProgramPipelineID:
+            return ResourceIDType::ProgramPipeline;
+        case ParamType::TProgramPipelineIDConstPointer:
+            return ResourceIDType::ProgramPipeline;
+        case ParamType::TProgramPipelineIDPointer:
+            return ResourceIDType::ProgramPipeline;
+        case ParamType::TQueryID:
+            return ResourceIDType::Query;
+        case ParamType::TQueryIDConstPointer:
+            return ResourceIDType::Query;
+        case ParamType::TQueryIDPointer:
+            return ResourceIDType::Query;
+        case ParamType::TRenderbufferID:
+            return ResourceIDType::Renderbuffer;
+        case ParamType::TRenderbufferIDConstPointer:
+            return ResourceIDType::Renderbuffer;
+        case ParamType::TRenderbufferIDPointer:
+            return ResourceIDType::Renderbuffer;
+        case ParamType::TSamplerID:
+            return ResourceIDType::Sampler;
+        case ParamType::TSamplerIDConstPointer:
+            return ResourceIDType::Sampler;
+        case ParamType::TSamplerIDPointer:
+            return ResourceIDType::Sampler;
+        case ParamType::TSemaphoreID:
+            return ResourceIDType::Semaphore;
+        case ParamType::TSemaphoreIDConstPointer:
+            return ResourceIDType::Semaphore;
+        case ParamType::TSemaphoreIDPointer:
+            return ResourceIDType::Semaphore;
+        case ParamType::TShaderProgramID:
+            return ResourceIDType::ShaderProgram;
+        case ParamType::TShaderProgramIDConstPointer:
+            return ResourceIDType::ShaderProgram;
+        case ParamType::TShaderProgramIDPointer:
+            return ResourceIDType::ShaderProgram;
+        case ParamType::TTextureID:
+            return ResourceIDType::Texture;
+        case ParamType::TTextureIDConstPointer:
+            return ResourceIDType::Texture;
+        case ParamType::TTextureIDPointer:
+            return ResourceIDType::Texture;
+        case ParamType::TTransformFeedbackID:
+            return ResourceIDType::TransformFeedback;
+        case ParamType::TTransformFeedbackIDConstPointer:
+            return ResourceIDType::TransformFeedback;
+        case ParamType::TTransformFeedbackIDPointer:
+            return ResourceIDType::TransformFeedback;
+        case ParamType::TVertexArrayID:
+            return ResourceIDType::VertexArray;
+        case ParamType::TVertexArrayIDConstPointer:
+            return ResourceIDType::VertexArray;
+        case ParamType::TVertexArrayIDPointer:
+            return ResourceIDType::VertexArray;
+        default:
+            return ResourceIDType::InvalidEnum;
+    }
+}
+
+const char *GetResourceIDTypeName(ResourceIDType resourceIDType)
+{
+    switch (resourceIDType)
+    {
+        case ResourceIDType::Buffer:
+            return "Buffer";
+        case ResourceIDType::FenceNV:
+            return "FenceNV";
+        case ResourceIDType::Framebuffer:
+            return "Framebuffer";
+        case ResourceIDType::MemoryObject:
+            return "MemoryObject";
+        case ResourceIDType::Path:
+            return "Path";
+        case ResourceIDType::ProgramPipeline:
+            return "ProgramPipeline";
+        case ResourceIDType::Query:
+            return "Query";
+        case ResourceIDType::Renderbuffer:
+            return "Renderbuffer";
+        case ResourceIDType::Sampler:
+            return "Sampler";
+        case ResourceIDType::Semaphore:
+            return "Semaphore";
+        case ResourceIDType::ShaderProgram:
+            return "ShaderProgram";
+        case ResourceIDType::Texture:
+            return "Texture";
+        case ResourceIDType::TransformFeedback:
+            return "TransformFeedback";
+        case ResourceIDType::VertexArray:
+            return "VertexArray";
+        default:
+            UNREACHABLE();
+            return "GetResourceIDTypeName error";
+    }
+}
 }  // namespace angle
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.h b/Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.h
index ce3cce0..22e13d6 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/frame_capture_utils_autogen.h
@@ -139,6 +139,8 @@
     TvoidPointerPointer,
 };
 
+constexpr uint32_t kParamTypeCount = 120;
+
 union ParamValue
 {
     gl::AlphaTestFunc AlphaTestFuncVal;
@@ -2470,6 +2472,29 @@
 
 void WriteParamTypeToStream(std::ostream &os, ParamType paramType, const ParamValue &paramValue);
 const char *ParamTypeToString(ParamType paramType);
+
+enum class ResourceIDType
+{
+    Buffer,
+    FenceNV,
+    Framebuffer,
+    MemoryObject,
+    Path,
+    ProgramPipeline,
+    Query,
+    Renderbuffer,
+    Sampler,
+    Semaphore,
+    ShaderProgram,
+    Texture,
+    TransformFeedback,
+    VertexArray,
+    EnumCount,
+    InvalidEnum = EnumCount
+};
+
+ResourceIDType GetResourceIDTypeFromParamType(ParamType paramType);
+const char *GetResourceIDTypeName(ResourceIDType resourceIDType);
 }  // namespace angle
 
 #endif  // LIBANGLE_FRAME_CAPTURE_UTILS_AUTOGEN_H_
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/queryutils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/queryutils.cpp
index 95f0611..3605e30 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/queryutils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/queryutils.cpp
@@ -534,7 +534,7 @@
                 CastFromStateValue<ParamType>(pname, static_cast<GLint>(attrib.format->isNorm()));
             break;
         case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
-            *params = CastFromGLintStateValue<ParamType>(pname, binding.getBuffer().id());
+            *params = CastFromGLintStateValue<ParamType>(pname, binding.getBuffer().id().value);
             break;
         case GL_VERTEX_ATTRIB_ARRAY_DIVISOR:
             *params = CastFromStateValue<ParamType>(pname, binding.getDivisor());
@@ -615,24 +615,32 @@
 
 GLint GetInputResourceProperty(const Program *program, GLuint index, GLenum prop)
 {
-    const auto &attribute = program->getInputResource(index);
+    const sh::ShaderVariable &variable = program->getInputResource(index);
+
     switch (prop)
     {
         case GL_TYPE:
         case GL_ARRAY_SIZE:
+            return GetCommonVariableProperty(variable, prop);
+
         case GL_NAME_LENGTH:
-            return GetCommonVariableProperty(attribute, prop);
+            return clampCast<GLint>(program->getInputResourceName(index).size() + 1u);
 
         case GL_LOCATION:
-            return program->getAttributeLocation(attribute.name);
+            return variable.location;
 
+        // The query is targeted at the set of active input variables used by the first shader stage
+        // of program. If program contains multiple shader stages then input variables from any
+        // stage other than the first will not be enumerated. Since we found the variable to get
+        // this far, we know it exists in the first attached shader stage.
         case GL_REFERENCED_BY_VERTEX_SHADER:
-            return 1;
-
+            return program->getState().getFirstAttachedShaderStageType() == ShaderType::Vertex;
         case GL_REFERENCED_BY_FRAGMENT_SHADER:
+            return program->getState().getFirstAttachedShaderStageType() == ShaderType::Fragment;
         case GL_REFERENCED_BY_COMPUTE_SHADER:
+            return program->getState().getFirstAttachedShaderStageType() == ShaderType::Compute;
         case GL_REFERENCED_BY_GEOMETRY_SHADER_EXT:
-            return 0;
+            return program->getState().getFirstAttachedShaderStageType() == ShaderType::Geometry;
 
         default:
             UNREACHABLE();
@@ -642,28 +650,40 @@
 
 GLint GetOutputResourceProperty(const Program *program, GLuint index, const GLenum prop)
 {
-    const auto &outputVariable = program->getOutputResource(index);
+    const sh::ShaderVariable &outputVariable = program->getOutputResource(index);
+
     switch (prop)
     {
         case GL_TYPE:
         case GL_ARRAY_SIZE:
-        case GL_NAME_LENGTH:
             return GetCommonVariableProperty(outputVariable, prop);
 
+        case GL_NAME_LENGTH:
+            return clampCast<GLint>(program->getOutputResourceName(index).size() + 1u);
+
         case GL_LOCATION:
-            return program->getFragDataLocation(outputVariable.name);
+            return outputVariable.location;
 
         case GL_LOCATION_INDEX_EXT:
             // EXT_blend_func_extended
-            return program->getFragDataIndex(outputVariable.name);
+            if (program->getState().getLastAttachedShaderStageType() == gl::ShaderType::Fragment)
+            {
+                return program->getFragDataIndex(outputVariable.name);
+            }
+            return GL_INVALID_INDEX;
 
-        case GL_REFERENCED_BY_FRAGMENT_SHADER:
-            return 1;
-
+        // The set of active user-defined outputs from the final shader stage in this program. If
+        // the final stage is a Fragment Shader, then this represents the fragment outputs that get
+        // written to individual color buffers. If the program only contains a Compute Shader, then
+        // there are no user-defined outputs.
         case GL_REFERENCED_BY_VERTEX_SHADER:
+            return program->getState().getLastAttachedShaderStageType() == ShaderType::Vertex;
+        case GL_REFERENCED_BY_FRAGMENT_SHADER:
+            return program->getState().getLastAttachedShaderStageType() == ShaderType::Fragment;
         case GL_REFERENCED_BY_COMPUTE_SHADER:
+            return program->getState().getLastAttachedShaderStageType() == ShaderType::Compute;
         case GL_REFERENCED_BY_GEOMETRY_SHADER_EXT:
-            return 0;
+            return program->getState().getLastAttachedShaderStageType() == ShaderType::Geometry;
 
         default:
             UNREACHABLE();
@@ -698,7 +718,7 @@
     switch (programInterface)
     {
         case GL_PROGRAM_INPUT:
-            return clampCast<GLint>(program->getAttributes().size());
+            return clampCast<GLint>(program->getState().getProgramInputs().size());
 
         case GL_PROGRAM_OUTPUT:
             return clampCast<GLint>(program->getState().getOutputVariables().size());
@@ -744,12 +764,11 @@
     switch (programInterface)
     {
         case GL_PROGRAM_INPUT:
-            maxNameLength = FindMaxSize(program->getAttributes(), &sh::ShaderVariable::name);
+            maxNameLength = program->getInputResourceMaxNameSize();
             break;
 
         case GL_PROGRAM_OUTPUT:
-            maxNameLength =
-                FindMaxSize(program->getState().getOutputVariables(), &sh::ShaderVariable::name);
+            maxNameLength = program->getOutputResourceMaxNameSize();
             break;
 
         case GL_UNIFORM:
@@ -1707,7 +1726,7 @@
 
 GLint GetBufferVariableResourceProperty(const Program *program, GLuint index, const GLenum prop)
 {
-    const auto &bufferVariable = program->getBufferVariableByIndex(index);
+    const BufferVariable &bufferVariable = program->getBufferVariableByIndex(index);
     switch (prop)
     {
         case GL_TYPE:
@@ -1836,10 +1855,10 @@
     switch (programInterface)
     {
         case GL_PROGRAM_INPUT:
-            return program->getAttributeLocation(name);
+            return program->getInputResourceLocation(name);
 
         case GL_PROGRAM_OUTPUT:
-            return program->getFragDataLocation(name);
+            return program->getOutputResourceLocation(name);
 
         case GL_UNIFORM:
             return program->getUniformLocation(name);
@@ -1861,10 +1880,17 @@
 {
     if (!program->isLinked())
     {
-        if (length != nullptr)
-        {
-            *length = 0;
-        }
+        return;
+    }
+
+    if (length != nullptr)
+    {
+        *length = 0;
+    }
+
+    if (bufSize == 0)
+    {
+        // No room to write the results
         return;
     }
 
@@ -2894,7 +2920,14 @@
     switch (attribute)
     {
         case EGL_CONFIG_ID:
-            *value = context->getConfig()->configID;
+            if (context->getConfig() != EGL_NO_CONFIG_KHR)
+            {
+                *value = context->getConfig()->configID;
+            }
+            else
+            {
+                *value = 0;
+            }
             break;
         case EGL_CONTEXT_CLIENT_TYPE:
             *value = context->getClientType();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/DeviceImpl.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/DeviceImpl.h
index aac406e..30cee7d 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/DeviceImpl.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/DeviceImpl.h
@@ -15,11 +15,13 @@
 
 namespace egl
 {
-class Device;
+class Display;
 }
 
 namespace rx
 {
+class DisplayImpl;
+
 class DeviceImpl : angle::NonCopyable
 {
   public:
@@ -28,7 +30,9 @@
 
     virtual egl::Error initialize() = 0;
 
-    virtual egl::Error getDevice(void **outValue)                               = 0;
+    virtual egl::Error getAttribute(const egl::Display *display,
+                                    EGLint attribute,
+                                    void **outValue)                            = 0;
     virtual EGLint getType()                                                    = 0;
     virtual void generateExtensions(egl::DeviceExtensions *outExtensions) const = 0;
 };
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format.h
index 7eb5dab..4c3602a 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format.h
@@ -57,6 +57,7 @@
     constexpr bool isSnorm() const;
     constexpr bool isUnorm() const;
     constexpr bool isFloat() const;
+    constexpr bool isVertexTypeHalfFloat() const;
 
     constexpr bool isInt() const { return isSint() || isUint(); }
     constexpr bool isNorm() const { return isSnorm() || isUnorm(); }
@@ -209,6 +210,11 @@
     return componentType == GL_FLOAT;
 }
 
+constexpr bool Format::isVertexTypeHalfFloat() const
+{
+    return vertexAttribType == gl::VertexAttribType::HalfFloat;
+}
+
 }  // namespace angle
 
 #endif  // LIBANGLE_RENDERER_FORMAT_H_
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/FormatID_autogen.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/FormatID_autogen.h
index c2a1b8c..69abaf9 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/FormatID_autogen.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/FormatID_autogen.h
@@ -20,6 +20,12 @@
     NONE,
     A16_FLOAT,
     A1R5G5B5_UNORM,
+    A2R10G10B10_SINT_VERTEX,
+    A2R10G10B10_SNORM_VERTEX,
+    A2R10G10B10_SSCALED_VERTEX,
+    A2R10G10B10_UINT_VERTEX,
+    A2R10G10B10_UNORM_VERTEX,
+    A2R10G10B10_USCALED_VERTEX,
     A32_FLOAT,
     A8_UNORM,
     ASTC_10x10_SRGB_BLOCK,
@@ -214,10 +220,16 @@
     R8_UNORM,
     R8_USCALED,
     R9G9B9E5_SHAREDEXP,
-    S8_UINT
+    S8_UINT,
+    X2R10G10B10_SINT_VERTEX,
+    X2R10G10B10_SNORM_VERTEX,
+    X2R10G10B10_SSCALED_VERTEX,
+    X2R10G10B10_UINT_VERTEX,
+    X2R10G10B10_UNORM_VERTEX,
+    X2R10G10B10_USCALED_VERTEX
 };
 
-constexpr uint32_t kNumANGLEFormats = 198;
+constexpr uint32_t kNumANGLEFormats = 210;
 
 }  // namespace angle
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format_table_autogen.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format_table_autogen.cpp
index d5fef80..dd11eef 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format_table_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/Format_table_autogen.cpp
@@ -27,6 +27,12 @@
     { FormatID::NONE, GL_NONE, GL_NONE, nullptr, NoCopyFunctions, nullptr, nullptr, GL_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, false, false, gl::VertexAttribType::InvalidEnum },
     { FormatID::A16_FLOAT, GL_ALPHA16F_EXT, GL_ALPHA16F_EXT, GenerateMip<A16F>, NoCopyFunctions, ReadColor<A16F, GLfloat>, WriteColor<A16F, GLfloat>, GL_FLOAT, 0, 0, 0, 16, 0, 0, 0, 2, 1, false, false, false, gl::VertexAttribType::Float },
     { FormatID::A1R5G5B5_UNORM, GL_A1RGB5_ANGLEX, GL_A1RGB5_ANGLEX, GenerateMip<A1R5G5B5>, NoCopyFunctions, ReadColor<A1R5G5B5, GLfloat>, WriteColor<A1R5G5B5, GLfloat>, GL_UNSIGNED_NORMALIZED, 5, 5, 5, 1, 0, 0, 0, 2, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::InvalidEnum },
+    { FormatID::A2R10G10B10_SINT_VERTEX, GL_INT_10_10_10_2_OES, GL_INT_10_10_10_2_OES, nullptr, NoCopyFunctions, nullptr, nullptr, GL_INT, 10, 10, 10, 2, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::Int1010102 },
+    { FormatID::A2R10G10B10_SNORM_VERTEX, GL_A2_RGB10_SNORM_ANGLEX, GL_A2_RGB10_SNORM_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_SIGNED_NORMALIZED, 10, 10, 10, 2, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::Int1010102 },
+    { FormatID::A2R10G10B10_SSCALED_VERTEX, GL_A2_RGB10_SSCALED_ANGLEX, GL_A2_RGB10_SSCALED_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_INT, 10, 10, 10, 2, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, true, gl::VertexAttribType::Int1010102 },
+    { FormatID::A2R10G10B10_UINT_VERTEX, GL_UNSIGNED_INT_10_10_10_2_OES, GL_UNSIGNED_INT_10_10_10_2_OES, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_INT, 10, 10, 10, 2, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::UnsignedInt1010102 },
+    { FormatID::A2R10G10B10_UNORM_VERTEX, GL_A2_RGB10_UNORM_ANGLEX, GL_A2_RGB10_UNORM_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 10, 10, 10, 2, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::UnsignedInt1010102 },
+    { FormatID::A2R10G10B10_USCALED_VERTEX, GL_A2_RGB10_USCALED_ANGLEX, GL_A2_RGB10_USCALED_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_INT, 10, 10, 10, 2, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, true, gl::VertexAttribType::UnsignedInt1010102 },
     { FormatID::A32_FLOAT, GL_ALPHA32F_EXT, GL_ALPHA32F_EXT, GenerateMip<A32F>, NoCopyFunctions, ReadColor<A32F, GLfloat>, WriteColor<A32F, GLfloat>, GL_FLOAT, 0, 0, 0, 32, 0, 0, 0, 4, 3, false, false, false, gl::VertexAttribType::Float },
     { FormatID::A8_UNORM, GL_ALPHA8_EXT, GL_ALPHA8_EXT, GenerateMip<A8>, NoCopyFunctions, ReadColor<A8, GLfloat>, WriteColor<A8, GLfloat>, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 8, 0, 0, 0, 1, 0, false, false, false, gl::VertexAttribType::InvalidEnum },
     { FormatID::ASTC_10x10_SRGB_BLOCK, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 0, 0, 0, 0, 0, 0, 0, 16, std::numeric_limits<GLuint>::max(), true, false, false, gl::VertexAttribType::InvalidEnum },
@@ -222,6 +228,12 @@
     { FormatID::R8_USCALED, GL_R8_USCALED_ANGLEX, GL_R8_USCALED_ANGLEX, GenerateMip<R8>, NoCopyFunctions, ReadColor<R8, GLuint>, WriteColor<R8, GLuint>, GL_UNSIGNED_INT, 8, 0, 0, 0, 0, 0, 0, 1, 0, false, false, true, gl::VertexAttribType::UnsignedByte },
     { FormatID::R9G9B9E5_SHAREDEXP, GL_RGB9_E5, GL_RGB9_E5, GenerateMip<R9G9B9E5>, NoCopyFunctions, ReadColor<R9G9B9E5, GLfloat>, WriteColor<R9G9B9E5, GLfloat>, GL_FLOAT, 9, 9, 9, 0, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::InvalidEnum },
     { FormatID::S8_UINT, GL_STENCIL_INDEX8, GL_STENCIL_INDEX8, nullptr, NoCopyFunctions, ReadDepthStencil<S8>, WriteDepthStencil<S8>, GL_UNSIGNED_INT, 0, 0, 0, 0, 0, 0, 8, 1, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::InvalidEnum },
+    { FormatID::X2R10G10B10_SINT_VERTEX, GL_X2_RGB10_SINT_ANGLEX, GL_X2_RGB10_SINT_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_INT, 10, 10, 10, 0, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::Int1010102 },
+    { FormatID::X2R10G10B10_SNORM_VERTEX, GL_X2_RGB10_SNORM_ANGLEX, GL_X2_RGB10_SNORM_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_SIGNED_NORMALIZED, 10, 10, 10, 0, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::Int1010102 },
+    { FormatID::X2R10G10B10_SSCALED_VERTEX, GL_X2_RGB10_SSCALED_ANGLEX, GL_X2_RGB10_SSCALED_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_INT, 10, 10, 10, 0, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, true, gl::VertexAttribType::Int1010102 },
+    { FormatID::X2R10G10B10_UINT_VERTEX, GL_X2_RGB10_UINT_ANGLEX, GL_X2_RGB10_UINT_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_INT, 10, 10, 10, 0, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::UnsignedInt1010102 },
+    { FormatID::X2R10G10B10_UNORM_VERTEX, GL_X2_RGB10_UNORM_ANGLEX, GL_X2_RGB10_UNORM_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_NORMALIZED, 10, 10, 10, 0, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, false, gl::VertexAttribType::UnsignedInt1010102 },
+    { FormatID::X2R10G10B10_USCALED_VERTEX, GL_X2_RGB10_USCALED_ANGLEX, GL_X2_RGB10_USCALED_ANGLEX, nullptr, NoCopyFunctions, nullptr, nullptr, GL_UNSIGNED_INT, 10, 10, 10, 0, 0, 0, 0, 4, std::numeric_limits<GLuint>::max(), false, false, true, gl::VertexAttribType::UnsignedInt1010102 },
     // clang-format on
 };
 
@@ -232,6 +244,14 @@
     {
         case GL_A1RGB5_ANGLEX:
             return FormatID::A1R5G5B5_UNORM;
+        case GL_A2_RGB10_SNORM_ANGLEX:
+            return FormatID::A2R10G10B10_SNORM_VERTEX;
+        case GL_A2_RGB10_SSCALED_ANGLEX:
+            return FormatID::A2R10G10B10_SSCALED_VERTEX;
+        case GL_A2_RGB10_UNORM_ANGLEX:
+            return FormatID::A2R10G10B10_UNORM_VERTEX;
+        case GL_A2_RGB10_USCALED_ANGLEX:
+            return FormatID::A2R10G10B10_USCALED_VERTEX;
         case GL_ALPHA16F_EXT:
             return FormatID::A16_FLOAT;
         case GL_ALPHA32F_EXT:
@@ -410,6 +430,8 @@
             return FormatID::ETC1_LOSSY_DECODE_R8G8B8_UNORM_BLOCK;
         case GL_ETC1_RGB8_OES:
             return FormatID::ETC1_R8G8B8_UNORM_BLOCK;
+        case GL_INT_10_10_10_2_OES:
+            return FormatID::A2R10G10B10_SINT_VERTEX;
         case GL_LUMINANCE16F_EXT:
             return FormatID::L16_FLOAT;
         case GL_LUMINANCE32F_EXT:
@@ -630,6 +652,20 @@
             return FormatID::R8G8B8A8_UNORM_SRGB;
         case GL_STENCIL_INDEX8:
             return FormatID::S8_UINT;
+        case GL_UNSIGNED_INT_10_10_10_2_OES:
+            return FormatID::A2R10G10B10_UINT_VERTEX;
+        case GL_X2_RGB10_SINT_ANGLEX:
+            return FormatID::X2R10G10B10_SINT_VERTEX;
+        case GL_X2_RGB10_SNORM_ANGLEX:
+            return FormatID::X2R10G10B10_SNORM_VERTEX;
+        case GL_X2_RGB10_SSCALED_ANGLEX:
+            return FormatID::X2R10G10B10_SSCALED_VERTEX;
+        case GL_X2_RGB10_UINT_ANGLEX:
+            return FormatID::X2R10G10B10_UINT_VERTEX;
+        case GL_X2_RGB10_UNORM_ANGLEX:
+            return FormatID::X2R10G10B10_UNORM_VERTEX;
+        case GL_X2_RGB10_USCALED_ANGLEX:
+            return FormatID::X2R10G10B10_USCALED_VERTEX;
         default:
             return FormatID::NONE;
     }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format.py b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format.py
index 05aa785..88e3236 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format.py
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format.py
@@ -135,6 +135,9 @@
         return 'rgba'
     if internal_format == 'GL_RGB10_UNORM_ANGLEX':
         return 'rgb'
+    # signed/unsigned int_10_10_10_2 for vertex format
+    if internal_format.find('INT_10_10_10_2_OES') == 0:
+        return 'rgba'
 
     channels_pattern = re.compile('GL_(COMPRESSED_)?(SIGNED_)?(ETC\d_)?([A-Z]+)')
     match = re.search(channels_pattern, internal_format)
@@ -243,6 +246,16 @@
     if num_channel < 1 or num_channel > 4:
         return "nullptr"
 
+    if src_format.endswith('_VERTEX'):
+        assert 'FLOAT' in dst_format, (
+            'get_vertex_copy_function: can only convert to float,' + ' not to ' + dst_format)
+        is_signed = 'true' if 'SINT' in src_format or 'SNORM' in src_format or 'SSCALED' in src_format else 'false'
+        is_normal = 'true' if 'NORM' in src_format else 'false'
+        if 'A2' in src_format:
+            return 'CopyW2XYZ10ToXYZW32FVertexData<%s, %s>' % (is_signed, is_normal)
+        else:
+            return 'CopyXYZ10ToXYZW32FVertexData<%s, %s>' % (is_signed, is_normal)
+
     if 'FIXED' in src_format:
         assert 'FLOAT' in dst_format, (
             'get_vertex_copy_function: can only convert fixed to float,' + ' not to ' + dst_format)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_map.json b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_map.json
index f8421c1..3cdc833 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_map.json
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/angle_format_map.json
@@ -198,5 +198,17 @@
   [ "GL_RG32_FIXED_ANGLEX", "R32G32_FIXED" ],
   [ "GL_RGB32_FIXED_ANGLEX", "R32G32B32_FIXED" ],
   [ "GL_RGBA32_FIXED_ANGLEX", "R32G32B32A32_FIXED" ],
-  [ "GL_RGB10_UNORM_ANGLEX", "R10G10B10X2_UNORM" ]
+  [ "GL_RGB10_UNORM_ANGLEX", "R10G10B10X2_UNORM" ],
+  [ "GL_UNSIGNED_INT_10_10_10_2_OES", "A2R10G10B10_UINT_VERTEX" ],
+  [ "GL_INT_10_10_10_2_OES", "A2R10G10B10_SINT_VERTEX" ],
+  [ "GL_A2_RGB10_USCALED_ANGLEX", "A2R10G10B10_USCALED_VERTEX" ],
+  [ "GL_A2_RGB10_SSCALED_ANGLEX", "A2R10G10B10_SSCALED_VERTEX" ],
+  [ "GL_A2_RGB10_UNORM_ANGLEX", "A2R10G10B10_UNORM_VERTEX" ],
+  [ "GL_A2_RGB10_SNORM_ANGLEX", "A2R10G10B10_SNORM_VERTEX" ],
+  [ "GL_X2_RGB10_UINT_ANGLEX", "X2R10G10B10_UINT_VERTEX" ],
+  [ "GL_X2_RGB10_SINT_ANGLEX", "X2R10G10B10_SINT_VERTEX" ],
+  [ "GL_X2_RGB10_USCALED_ANGLEX", "X2R10G10B10_USCALED_VERTEX" ],
+  [ "GL_X2_RGB10_SSCALED_ANGLEX", "X2R10G10B10_SSCALED_VERTEX" ],
+  [ "GL_X2_RGB10_UNORM_ANGLEX", "X2R10G10B10_UNORM_VERTEX" ],
+  [ "GL_X2_RGB10_SNORM_ANGLEX", "X2R10G10B10_SNORM_VERTEX" ]
 ]
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/copyvertex.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/copyvertex.h
index 2baf4c0..a0fd95b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/copyvertex.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/copyvertex.h
@@ -50,6 +50,18 @@
                                     size_t count,
                                     uint8_t *output);
 
+template <bool isSigned, bool normalized>
+void CopyXYZ10ToXYZW32FVertexData(const uint8_t *input,
+                                  size_t stride,
+                                  size_t count,
+                                  uint8_t *output);
+
+template <bool isSigned, bool normalized>
+void CopyW2XYZ10ToXYZW32FVertexData(const uint8_t *input,
+                                    size_t stride,
+                                    size_t count,
+                                    uint8_t *output);
+
 }  // namespace rx
 
 #include "copyvertex.inc.h"
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/copyvertex.inc.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/copyvertex.inc.h
index 99d8b66..1d61a44 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/copyvertex.inc.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/copyvertex.inc.h
@@ -193,8 +193,8 @@
             {
                 if (NL::is_signed)
                 {
-                    const float divisor = 1.0f / (2 * static_cast<float>(NL::max()) + 1);
-                    offsetOutput[j]     = (2 * static_cast<float>(offsetInput[j]) + 1) * divisor;
+                    offsetOutput[j] = static_cast<float>(offsetInput[j]) / NL::max();
+                    offsetOutput[j] = (offsetOutput[j] >= -1.0f) ? (offsetOutput[j]) : (-1.0f);
                 }
                 else
                 {
@@ -476,4 +476,68 @@
     }
 }
 
+template <bool isSigned, bool normalized>
+inline void CopyXYZ10ToXYZW32FVertexData(const uint8_t *input,
+                                         size_t stride,
+                                         size_t count,
+                                         uint8_t *output)
+{
+    const size_t outputComponentSize = 4;
+    const size_t componentCount      = 4;
+
+    const uint32_t rgbMask  = 0x3FF;  // 1 set in bits 0 through 9
+    const size_t redShift   = 22;     // red is bits 22 through 31
+    const size_t greenShift = 12;     // green is bits 12 through 21
+    const size_t blueShift  = 2;      // blue is bits 2 through 11
+
+    const uint32_t alphaDefaultValueBits = normalized ? (isSigned ? 0x1 : 0x3) : 0x1;
+
+    for (size_t i = 0; i < count; i++)
+    {
+        GLuint packedValue    = *reinterpret_cast<const GLuint *>(input + (i * stride));
+        uint8_t *offsetOutput = output + (i * outputComponentSize * componentCount);
+
+        priv::CopyPackedRGB<isSigned, normalized, true>((packedValue >> redShift) & rgbMask,
+                                                        offsetOutput + (0 * outputComponentSize));
+        priv::CopyPackedRGB<isSigned, normalized, true>((packedValue >> greenShift) & rgbMask,
+                                                        offsetOutput + (1 * outputComponentSize));
+        priv::CopyPackedRGB<isSigned, normalized, true>((packedValue >> blueShift) & rgbMask,
+                                                        offsetOutput + (2 * outputComponentSize));
+        priv::CopyPackedAlpha<isSigned, normalized, true>(alphaDefaultValueBits,
+                                                          offsetOutput + (3 * outputComponentSize));
+    }
+}
+
+template <bool isSigned, bool normalized>
+inline void CopyW2XYZ10ToXYZW32FVertexData(const uint8_t *input,
+                                           size_t stride,
+                                           size_t count,
+                                           uint8_t *output)
+{
+    const size_t outputComponentSize = 4;
+    const size_t componentCount      = 4;
+
+    const uint32_t rgbMask  = 0x3FF;  // 1 set in bits 0 through 9
+    const size_t redShift   = 22;     // red is bits 22 through 31
+    const size_t greenShift = 12;     // green is bits 12 through 21
+    const size_t blueShift  = 2;      // blue is bits 2 through 11
+
+    const uint32_t alphaMask = 0x3;  // 1 set in bits 0 and 1
+    const size_t alphaShift  = 0;    // Alpha is the 30 and 31 bits
+
+    for (size_t i = 0; i < count; i++)
+    {
+        GLuint packedValue    = *reinterpret_cast<const GLuint *>(input + (i * stride));
+        uint8_t *offsetOutput = output + (i * outputComponentSize * componentCount);
+
+        priv::CopyPackedRGB<isSigned, normalized, true>((packedValue >> redShift) & rgbMask,
+                                                        offsetOutput + (0 * outputComponentSize));
+        priv::CopyPackedRGB<isSigned, normalized, true>((packedValue >> greenShift) & rgbMask,
+                                                        offsetOutput + (1 * outputComponentSize));
+        priv::CopyPackedRGB<isSigned, normalized, true>((packedValue >> blueShift) & rgbMask,
+                                                        offsetOutput + (2 * outputComponentSize));
+        priv::CopyPackedAlpha<isSigned, normalized, true>((packedValue >> alphaShift) & alphaMask,
+                                                          offsetOutput + (3 * outputComponentSize));
+    }
+}
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DeviceD3D.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DeviceD3D.cpp
index 695ace2..79dfb09 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DeviceD3D.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DeviceD3D.cpp
@@ -7,7 +7,6 @@
 // DeviceD3D.cpp: D3D implementation of egl::Device
 
 #include "libANGLE/renderer/d3d/DeviceD3D.h"
-#include "libANGLE/renderer/d3d/RendererD3D.h"
 
 #include "libANGLE/Device.h"
 #include "libANGLE/Display.h"
@@ -33,9 +32,12 @@
 #endif
 }
 
-egl::Error DeviceD3D::getDevice(void **outValue)
+egl::Error DeviceD3D::getAttribute(const egl::Display *display, EGLint attribute, void **outValue)
 {
     ASSERT(mIsInitialized);
+    ANGLE_UNUSED_VARIABLE(display);
+    // Validated at higher levels.
+    ASSERT(getType() == attribute);
     *outValue = mDevice;
     return egl::NoError();
 }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DeviceD3D.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DeviceD3D.h
index ee66693..c169eb7 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DeviceD3D.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/DeviceD3D.h
@@ -22,7 +22,9 @@
     ~DeviceD3D() override;
 
     egl::Error initialize() override;
-    egl::Error getDevice(void **outValue) override;
+    egl::Error getAttribute(const egl::Display *display,
+                            EGLint attribute,
+                            void **outValue) override;
     EGLint getType() override;
     void generateExtensions(egl::DeviceExtensions *outExtensions) const override;
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/HLSLCompiler.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
index 811e1932..aabe067 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/HLSLCompiler.cpp
@@ -121,7 +121,7 @@
     }
 
     ANGLE_TRACE_EVENT0("gpu.angle", "HLSLCompiler::initialize");
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
 #    if defined(ANGLE_PRELOADED_D3DCOMPILER_MODULE_NAMES)
     // Find a D3DCompiler module that had already been loaded based on a predefined list of
     // versions.
@@ -214,12 +214,12 @@
 {
     ASSERT(mInitialized);
 
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
     ASSERT(mD3DCompilerModule);
 #endif
     ASSERT(mD3DCompileFunc);
 
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE) && defined(ANGLE_ENABLE_DEBUG_TRACE)
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP) && defined(ANGLE_ENABLE_DEBUG_TRACE)
     std::string sourcePath = getTempPath();
     std::ostringstream stream;
     stream << "#line 2 \"" << sourcePath << "\"\n\n" << hlsl;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index 2febac0..6a097b5 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -1557,7 +1557,7 @@
 
     // Generate new dynamic layout with attribute conversions
     std::string finalVertexHLSL = mDynamicHLSL->generateVertexShaderForInputLayout(
-        mShaderHLSL[gl::ShaderType::Vertex], mCachedInputLayout, mState.getAttributes());
+        mShaderHLSL[gl::ShaderType::Vertex], mCachedInputLayout, mState.getProgramInputs());
 
     // Generate new vertex executable
     ShaderExecutableD3D *vertexExecutable = nullptr;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/RendererD3D.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/RendererD3D.cpp
index ba71982..00c57f0 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/RendererD3D.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/RendererD3D.cpp
@@ -240,7 +240,9 @@
 {
     switch (hr)
     {
+#ifdef ANGLE_ENABLE_D3D9
         case D3DERR_OUTOFVIDEOMEMORY:
+#endif
         case E_OUTOFMEMORY:
             return GL_OUT_OF_MEMORY;
         default:
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ShaderD3D.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ShaderD3D.cpp
index bf82a0c..e97e03f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ShaderD3D.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/ShaderD3D.cpp
@@ -252,7 +252,7 @@
 
     const std::string &source = mData.getSource();
 
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
     if (gl::DebugAnnotationsActive())
     {
         sourcePath = getTempPath();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
index 735d6ae..b7284ed 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Buffer11.cpp
@@ -684,8 +684,9 @@
                                                UINT *numConstantsOut)
 {
     NativeStorage *bufferStorage = nullptr;
-
-    if (offset == 0 || mRenderer->getRenderer11DeviceCaps().supportsConstantBufferOffsets)
+    if ((offset == 0 &&
+         size < static_cast<GLsizeiptr>(mRenderer->getNativeCaps().maxUniformBlockSize)) ||
+        mRenderer->getRenderer11DeviceCaps().supportsConstantBufferOffsets)
     {
         ANGLE_TRY(getBufferStorage(context, BUFFER_USAGE_UNIFORM, &bufferStorage));
         CalculateConstantBufferParams(offset, size, firstConstantOut, numConstantsOut);
@@ -1217,9 +1218,12 @@
 
             // Note: it seems that D3D11 allows larger buffers on some platforms, but not all.
             // (Windows 10 seems to allow larger constant buffers, but not Windows 7)
-            bufferDesc->ByteWidth =
-                std::min<UINT>(bufferDesc->ByteWidth,
-                               static_cast<UINT>(renderer->getNativeCaps().maxUniformBlockSize));
+            if (!renderer->getRenderer11DeviceCaps().supportsConstantBufferOffsets)
+            {
+                bufferDesc->ByteWidth = std::min<UINT>(
+                    bufferDesc->ByteWidth,
+                    static_cast<UINT>(renderer->getNativeCaps().maxUniformBlockSize));
+            }
             break;
 
         case BUFFER_USAGE_RAW_UAV:
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Context11.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
index 49e98a4..4cc0faa 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Context11.cpp
@@ -268,7 +268,7 @@
     ASSERT(count > 0);
     ANGLE_TRY(mRenderer->getStateManager()->updateState(
         context, mode, first, count, gl::DrawElementsType::InvalidEnum, nullptr, 0, 0));
-    return mRenderer->drawArrays(context, mode, first, count, 0);
+    return mRenderer->drawArrays(context, mode, first, count, 0, 0);
 }
 
 angle::Result Context11::drawArraysInstanced(const gl::Context *context,
@@ -280,7 +280,7 @@
     ASSERT(count > 0);
     ANGLE_TRY(mRenderer->getStateManager()->updateState(
         context, mode, first, count, gl::DrawElementsType::InvalidEnum, nullptr, instanceCount, 0));
-    return mRenderer->drawArrays(context, mode, first, count, instanceCount);
+    return mRenderer->drawArrays(context, mode, first, count, instanceCount, 0);
 }
 
 angle::Result Context11::drawArraysInstancedBaseInstance(const gl::Context *context,
@@ -290,7 +290,10 @@
                                                          GLsizei instanceCount,
                                                          GLuint baseInstance)
 {
-    return drawArraysInstanced(context, mode, first, count, instanceCount);
+    ASSERT(count > 0);
+    ANGLE_TRY(mRenderer->getStateManager()->updateState(
+        context, mode, first, count, gl::DrawElementsType::InvalidEnum, nullptr, instanceCount, 0));
+    return mRenderer->drawArrays(context, mode, first, count, instanceCount, baseInstance);
 }
 
 ANGLE_INLINE angle::Result Context11::drawElementsImpl(const gl::Context *context,
@@ -380,7 +383,8 @@
         ANGLE_TRY(mRenderer->getStateManager()->updateState(context, mode, cmd->first, cmd->count,
                                                             gl::DrawElementsType::InvalidEnum,
                                                             nullptr, cmd->instanceCount, 0));
-        return mRenderer->drawArrays(context, mode, cmd->first, cmd->count, cmd->instanceCount);
+        return mRenderer->drawArrays(context, mode, cmd->first, cmd->count, cmd->instanceCount,
+                                     cmd->baseInstance);
     }
     else
     {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
index 3125043..0690118 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/DebugAnnotator11.cpp
@@ -67,12 +67,14 @@
 
 void DebugAnnotator11::initialize(ID3D11DeviceContext *context)
 {
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
     // ID3DUserDefinedAnnotation.GetStatus only works on Windows10 or greater.
     // Returning true unconditionally from DebugAnnotator11::getStatus() means
     // writing out all compiled shaders to temporary files even if debugging
     // tools are not attached. See rx::ShaderD3D::prepareSourceAndReturnOptions.
     // If you want debug annotations, you must use Windows 10.
     if (IsWindows10OrGreater())
+#endif
     {
         mAnnotationThread = std::this_thread::get_id();
         mUserDefinedAnnotation.Attach(
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
index 0b32c5e..7df9d1f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
@@ -62,7 +62,7 @@
 #include "libANGLE/renderer/renderer_utils.h"
 #include "libANGLE/trace.h"
 
-#ifdef ANGLE_ENABLE_WINDOWS_STORE
+#ifdef ANGLE_ENABLE_WINDOWS_UWP
 #    include "libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h"
 #else
 #    include "libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.h"
@@ -402,6 +402,7 @@
     mRenderer11DeviceCaps.B5G5R5A1support                        = 0;
 
     mD3d11Module          = nullptr;
+    mD3d12Module          = nullptr;
     mDxgiModule           = nullptr;
     mDCompModule          = nullptr;
     mCreatedWithDeviceEXT = false;
@@ -513,7 +514,7 @@
 
     ANGLE_TRY(initializeD3DDevice());
 
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
 #    if !ANGLE_SKIP_DXGI_1_2_CHECK
     {
         ANGLE_TRACE_EVENT0("gpu.angle", "Renderer11::initialize (DXGICheck)");
@@ -668,35 +669,119 @@
         D3D11_SDK_VERSION, &mDevice, &(mRenderer11DeviceCaps.featureLevel), &mDeviceContext);
 }
 
+HRESULT Renderer11::callD3D11On12CreateDevice(PFN_D3D12_CREATE_DEVICE createDevice12,
+                                              PFN_D3D11ON12_CREATE_DEVICE createDevice11on12,
+                                              bool debug)
+{
+    angle::ComPtr<IDXGIFactory4> factory;
+    HRESULT result = CreateDXGIFactory1(IID_PPV_ARGS(&factory));
+    if (FAILED(result))
+    {
+        return result;
+    }
+
+    if (mRequestedDriverType == D3D_DRIVER_TYPE_WARP)
+    {
+        angle::ComPtr<IDXGIAdapter> warpAdapter;
+        result = factory->EnumWarpAdapter(IID_PPV_ARGS(&warpAdapter));
+        if (SUCCEEDED(result))
+        {
+            result = createDevice12(warpAdapter.Get(), mAvailableFeatureLevels[0],
+                                    IID_PPV_ARGS(&mDevice12));
+        }
+    }
+    else
+    {
+        // Passing nullptr into pAdapter chooses the default adapter which will be the hardware
+        // adapter if it exists.
+        result = createDevice12(nullptr, mAvailableFeatureLevels[0], IID_PPV_ARGS(&mDevice12));
+    }
+
+    if (SUCCEEDED(result))
+    {
+        D3D12_COMMAND_QUEUE_DESC queueDesc = {};
+        queueDesc.Flags                    = D3D12_COMMAND_QUEUE_FLAG_NONE;
+        queueDesc.Type                     = D3D12_COMMAND_LIST_TYPE_DIRECT;
+        result = mDevice12->CreateCommandQueue(&queueDesc, IID_PPV_ARGS(&mCommandQueue));
+    }
+
+    if (SUCCEEDED(result))
+    {
+        result = createDevice11on12(
+            mDevice12.Get(), debug ? D3D11_CREATE_DEVICE_DEBUG : 0, mAvailableFeatureLevels.data(),
+            static_cast<unsigned int>(mAvailableFeatureLevels.size()),
+            reinterpret_cast<IUnknown **>(mCommandQueue.GetAddressOf()), 1 /* NumQueues */,
+            0 /* NodeMask */, &mDevice, &mDeviceContext, &(mRenderer11DeviceCaps.featureLevel));
+    }
+
+    return result;
+}
+
 egl::Error Renderer11::initializeD3DDevice()
 {
     HRESULT result = S_OK;
+    bool createD3D11on12Device = false;
 
     if (!mCreatedWithDeviceEXT)
     {
-#if !defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
         PFN_D3D11_CREATE_DEVICE D3D11CreateDevice = nullptr;
+        PFN_D3D12_CREATE_DEVICE D3D12CreateDevice         = nullptr;
+        PFN_D3D11ON12_CREATE_DEVICE D3D11on12CreateDevice = nullptr;
         {
             ANGLE_TRACE_EVENT0("gpu.angle", "Renderer11::initialize (Load DLLs)");
             mDxgiModule  = LoadLibrary(TEXT("dxgi.dll"));
             mD3d11Module = LoadLibrary(TEXT("d3d11.dll"));
             mDCompModule = LoadLibrary(TEXT("dcomp.dll"));
 
-            if (mD3d11Module == nullptr || mDxgiModule == nullptr)
-            {
-                return egl::EglNotInitialized(D3D11_INIT_MISSING_DEP)
-                       << "Could not load D3D11 or DXGI library.";
-            }
-
             // create the D3D11 device
             ASSERT(mDevice == nullptr);
-            D3D11CreateDevice = reinterpret_cast<PFN_D3D11_CREATE_DEVICE>(
-                GetProcAddress(mD3d11Module, "D3D11CreateDevice"));
 
-            if (D3D11CreateDevice == nullptr)
+            const egl::AttributeMap &attributes = mDisplay->getAttributeMap();
+            createD3D11on12Device =
+                static_cast<EGLint>(attributes.get(EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE, EGL_FALSE));
+
+            if (createD3D11on12Device)
             {
-                return egl::EglNotInitialized(D3D11_INIT_MISSING_DEP)
-                       << "Could not retrieve D3D11CreateDevice address.";
+                mD3d12Module = LoadLibrary(TEXT("d3d12.dll"));
+                if (mD3d12Module == nullptr)
+                {
+                    return egl::EglNotInitialized(D3D11_INIT_MISSING_DEP)
+                           << "Could not load D3D12 library.";
+                }
+
+                D3D12CreateDevice = reinterpret_cast<PFN_D3D12_CREATE_DEVICE>(
+                    GetProcAddress(mD3d12Module, "D3D12CreateDevice"));
+                if (D3D12CreateDevice == nullptr)
+                {
+                    return egl::EglNotInitialized(D3D11_INIT_MISSING_DEP)
+                           << "Could not retrieve D3D12CreateDevice address.";
+                }
+
+                D3D11on12CreateDevice = reinterpret_cast<PFN_D3D11ON12_CREATE_DEVICE>(
+                    GetProcAddress(mD3d11Module, "D3D11On12CreateDevice"));
+                if (D3D11on12CreateDevice == nullptr)
+                {
+                    return egl::EglNotInitialized(D3D11_INIT_MISSING_DEP)
+                           << "Could not retrieve D3D11On12CreateDevice address.";
+                }
+            }
+            else
+            {
+                if (mD3d11Module == nullptr || mDxgiModule == nullptr)
+                {
+                    return egl::EglNotInitialized(D3D11_INIT_MISSING_DEP)
+                           << "Could not load D3D11 or DXGI library.";
+                }
+
+                D3D11CreateDevice = reinterpret_cast<PFN_D3D11_CREATE_DEVICE>(
+                    GetProcAddress(mD3d11Module, "D3D11CreateDevice"));
+
+                if (D3D11CreateDevice == nullptr)
+                {
+                    return egl::EglNotInitialized(D3D11_INIT_MISSING_DEP)
+                           << "Could not retrieve D3D11CreateDevice address.";
+                }
             }
         }
 #endif
@@ -704,7 +789,14 @@
         if (mCreateDebugDevice)
         {
             ANGLE_TRACE_EVENT0("gpu.angle", "D3D11CreateDevice (Debug)");
-            result = callD3D11CreateDevice(D3D11CreateDevice, true);
+            if (createD3D11on12Device)
+            {
+                result = callD3D11On12CreateDevice(D3D12CreateDevice, D3D11on12CreateDevice, true);
+            }
+            else
+            {
+                result = callD3D11CreateDevice(D3D11CreateDevice, true);
+            }
 
             if (result == E_INVALIDARG && mAvailableFeatureLevels.size() > 1u &&
                 mAvailableFeatureLevels[0] == D3D_FEATURE_LEVEL_11_1)
@@ -713,7 +805,15 @@
                 // Try again without passing D3D_FEATURE_LEVEL_11_1 in case we have other feature
                 // levels to fall back on.
                 mAvailableFeatureLevels.erase(mAvailableFeatureLevels.begin());
-                result = callD3D11CreateDevice(D3D11CreateDevice, true);
+                if (createD3D11on12Device)
+                {
+                    result =
+                        callD3D11On12CreateDevice(D3D12CreateDevice, D3D11on12CreateDevice, true);
+                }
+                else
+                {
+                    result = callD3D11CreateDevice(D3D11CreateDevice, true);
+                }
             }
 
             if (!mDevice || FAILED(result))
@@ -725,8 +825,14 @@
         if (!mDevice || FAILED(result))
         {
             ANGLE_TRACE_EVENT0("gpu.angle", "D3D11CreateDevice");
-
-            result = callD3D11CreateDevice(D3D11CreateDevice, false);
+            if (createD3D11on12Device)
+            {
+                result = callD3D11On12CreateDevice(D3D12CreateDevice, D3D11on12CreateDevice, false);
+            }
+            else
+            {
+                result = callD3D11CreateDevice(D3D11CreateDevice, false);
+            }
 
             if (result == E_INVALIDARG && mAvailableFeatureLevels.size() > 1u &&
                 mAvailableFeatureLevels[0] == D3D_FEATURE_LEVEL_11_1)
@@ -735,7 +841,15 @@
                 // Try again without passing D3D_FEATURE_LEVEL_11_1 in case we have other feature
                 // levels to fall back on.
                 mAvailableFeatureLevels.erase(mAvailableFeatureLevels.begin());
-                result = callD3D11CreateDevice(D3D11CreateDevice, false);
+                if (createD3D11on12Device)
+                {
+                    result =
+                        callD3D11On12CreateDevice(D3D12CreateDevice, D3D11on12CreateDevice, false);
+                }
+                else
+                {
+                    result = callD3D11CreateDevice(D3D11CreateDevice, false);
+                }
             }
 
             // Cleanup done by destructor
@@ -755,7 +869,7 @@
 
         // We should use the inputted D3D11 device instead
         void *device = nullptr;
-        ANGLE_TRY(deviceD3D->getDevice(&device));
+        ANGLE_TRY(deviceD3D->getAttribute(mDisplay, EGL_D3D11_DEVICE_ANGLE, &device));
 
         ID3D11Device *d3dDevice = static_cast<ID3D11Device *>(device);
         if (FAILED(d3dDevice->GetDeviceRemovedReason()))
@@ -1140,11 +1254,13 @@
     // All D3D feature levels support robust resource init
     outExtensions->robustResourceInitialization = true;
 
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
     // Compositor Native Window capabilies require WinVer >= 1803
     if (CompositorNativeWindow11::IsSupportedWinRelease())
     {
         outExtensions->windowsUIComposition = true;
     }
+#endif
 }
 
 angle::Result Renderer11::flush(Context11 *context11)
@@ -1202,7 +1318,7 @@
     static_assert(sizeof(ABI::Windows::UI::Composition::SpriteVisual *) == sizeof(HWND),
                   "Pointer size must match Window Handle size");
 
-#ifdef ANGLE_ENABLE_WINDOWS_STORE
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
     return NativeWindow11WinRT::IsValidNativeWindow(window);
 #else
     if (NativeWindow11Win32::IsValidNativeWindow(window))
@@ -1218,6 +1334,9 @@
                                                 const egl::Config *config,
                                                 const egl::AttributeMap &attribs) const
 {
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
+    return new NativeWindow11WinRT(window, config->alphaSize > 0);
+#else
     auto useWinUiComp = window != nullptr && !NativeWindow11Win32::IsValidNativeWindow(window);
 
     if (useWinUiComp)
@@ -1226,15 +1345,11 @@
     }
     else
     {
-#ifdef ANGLE_ENABLE_WINDOWS_STORE
-        UNUSED_VARIABLE(attribs);
-        return new NativeWindow11WinRT(window, config->alphaSize > 0);
-#else
         return new NativeWindow11Win32(
             window, config->alphaSize > 0,
             attribs.get(EGL_DIRECT_COMPOSITION_ANGLE, EGL_FALSE) == EGL_TRUE);
-#endif
     }
+#endif
 }
 
 egl::Error Renderer11::getD3DTextureInfo(const egl::Config *configuration,
@@ -1476,7 +1591,8 @@
                                      gl::PrimitiveMode mode,
                                      GLint firstVertex,
                                      GLsizei vertexCount,
-                                     GLsizei instanceCount)
+                                     GLsizei instanceCount,
+                                     GLuint baseInstance)
 {
     if (mStateManager.getCullEverything())
     {
@@ -1520,7 +1636,7 @@
                 // D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST and DrawIndexedInstanced is called instead.
                 if (adjustedInstanceCount == 0)
                 {
-                    mDeviceContext->DrawIndexedInstanced(6, clampedVertexCount, 0, 0, 0);
+                    mDeviceContext->DrawIndexedInstanced(6, clampedVertexCount, 0, 0, baseInstance);
                     return angle::Result::Continue;
                 }
 
@@ -1534,7 +1650,7 @@
                 {
                     ANGLE_TRY(mStateManager.updateVertexOffsetsForPointSpritesEmulation(
                         context, firstVertex, i));
-                    mDeviceContext->DrawIndexedInstanced(6, clampedVertexCount, 0, 0, 0);
+                    mDeviceContext->DrawIndexedInstanced(6, clampedVertexCount, 0, 0, baseInstance);
                 }
 
                 // This required by updateVertexOffsets... above but is outside of the loop for
@@ -1554,7 +1670,7 @@
     }
     else
     {
-        mDeviceContext->DrawInstanced(clampedVertexCount, adjustedInstanceCount, 0, 0);
+        mDeviceContext->DrawInstanced(clampedVertexCount, adjustedInstanceCount, 0, baseInstance);
     }
     return angle::Result::Continue;
 }
@@ -1968,6 +2084,15 @@
         mDCompModule = nullptr;
     }
 
+    mDevice12.Reset();
+    mCommandQueue.Reset();
+
+    if (mD3d12Module)
+    {
+        FreeLibrary(mD3d12Module);
+        mD3d12Module = nullptr;
+    }
+
     mCompiler.release();
 
     mSupportsShareHandles.reset();
@@ -2108,14 +2233,14 @@
 
     if (deviceType == d3d11::ANGLE_D3D11_DEVICE_TYPE_WARP)
     {
-#ifndef ANGLE_ENABLE_WINDOWS_STORE
+#if !defined(ANGLE_ENABLE_WINDOWS_UWP)
         if (!IsWindows8OrGreater())
         {
             // WARP on Windows 7 doesn't support shared handles
             mSupportsShareHandles = false;
             return false;
         }
-#endif  // ANGLE_ENABLE_WINDOWS_STORE
+#endif  // !defined(ANGLE_ENABLE_WINDOWS_UWP)
 
         // WARP on Windows 8.0+ supports shared handles when shared with another WARP device
         // TODO: allow applications to query for HARDWARE or WARP-specific share handles,
@@ -2226,8 +2351,8 @@
     {
         TextureHelper11 tex;
         ANGLE_TRY(resolveMultisampledTexture(context, sourceRenderTarget,
-                                             colorAttachment->getDepthSize(),
-                                             colorAttachment->getStencilSize(), &tex));
+                                             colorAttachment->getDepthSize() > 0,
+                                             colorAttachment->getStencilSize() > 0, &tex));
 
         D3D11_SHADER_RESOURCE_VIEW_DESC viewDesc;
         viewDesc.Format                    = sourceRenderTarget->getFormatSet().srvFormat;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
index 1c6ba46..dd7efaa 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
@@ -410,7 +410,8 @@
                              gl::PrimitiveMode mode,
                              GLint firstVertex,
                              GLsizei vertexCount,
-                             GLsizei instanceCount);
+                             GLsizei instanceCount,
+                             GLuint baseInstance);
     angle::Result drawElements(const gl::Context *context,
                                gl::PrimitiveMode mode,
                                GLint startVertex,
@@ -552,6 +553,9 @@
         const gl::TextureCaps &depthStencilBufferFormatCaps) const;
 
     HRESULT callD3D11CreateDevice(PFN_D3D11_CREATE_DEVICE createDevice, bool debug);
+    HRESULT callD3D11On12CreateDevice(PFN_D3D12_CREATE_DEVICE createDevice12,
+                                      PFN_D3D11ON12_CREATE_DEVICE createDevice11on12,
+                                      bool debug);
     egl::Error initializeD3DDevice();
     egl::Error initializeDevice();
     void releaseDeviceResources();
@@ -568,6 +572,7 @@
                                                              UINT vertexCount);
 
     HMODULE mD3d11Module;
+    HMODULE mD3d12Module;
     HMODULE mDxgiModule;
     HMODULE mDCompModule;
     std::vector<D3D_FEATURE_LEVEL> mAvailableFeatureLevels;
@@ -602,6 +607,9 @@
 
     double mLastHistogramUpdateTime;
 
+    angle::ComPtr<ID3D12Device> mDevice12;
+    angle::ComPtr<ID3D12CommandQueue> mCommandQueue;
+
     ID3D11Device *mDevice;
     Renderer11DeviceCaps mRenderer11DeviceCaps;
     ID3D11DeviceContext *mDeviceContext;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
index f85edee7..3cc4ab4 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/TextureStorage11.cpp
@@ -391,7 +391,7 @@
                                                const d3d11::SharedSRV **outSRV)
 {
     // TODO(Xinghua.cao@intel.com): Add solution to handle swizzle required.
-    ImageKey key(imageUnit.level, imageUnit.layered, imageUnit.layer, imageUnit.access,
+    ImageKey key(imageUnit.level, (imageUnit.layered == GL_TRUE), imageUnit.layer, imageUnit.access,
                  imageUnit.format);
     ANGLE_TRY(getCachedOrCreateSRVForImage(context, key, outSRV));
     return angle::Result::Continue;
@@ -423,7 +423,7 @@
                                                const d3d11::SharedUAV **outUAV)
 {
     // TODO(Xinghua.cao@intel.com): Add solution to handle swizzle required.
-    ImageKey key(imageUnit.level, imageUnit.layered, imageUnit.layer, imageUnit.access,
+    ImageKey key(imageUnit.level, (imageUnit.layered == GL_TRUE), imageUnit.layer, imageUnit.access,
                  imageUnit.format);
     ANGLE_TRY(getCachedOrCreateUAVForImage(context, key, outUAV));
     return angle::Result::Continue;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.cpp
index 5cf6af1..ac6d9a5 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.cpp
@@ -10,7 +10,7 @@
 #include "libANGLE/renderer/d3d/d3d11/Renderer11.h"
 #include "libANGLE/renderer/d3d/d3d11/renderer11_utils.h"
 
-#if defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
 #    include <windows.applicationmodel.core.h>
 #    include <wrl.h>
 #    include <wrl/wrappers/corewrappers.h>
@@ -44,7 +44,7 @@
         return;
     }
 
-#if defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
     ID3D11Device *device      = mRenderer->getDevice();
     IDXGIDevice3 *dxgiDevice3 = d3d11::DynamicCastComObject<IDXGIDevice3>(device);
     if (dxgiDevice3)
@@ -57,7 +57,7 @@
 
 bool Trim11::registerForRendererTrimRequest()
 {
-#if defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
     ICoreApplication *coreApplication = nullptr;
     HRESULT result                    = GetActivationFactory(
         HStringReference(RuntimeClass_Windows_ApplicationModel_Core_CoreApplication).Get(),
@@ -84,7 +84,7 @@
 
 void Trim11::unregisterForRendererTrimRequest()
 {
-#if defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
     if (mApplicationSuspendedEventToken.value != 0)
     {
         ICoreApplication *coreApplication = nullptr;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.h
index 8c5cdb7..eb1f3e7 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/Trim11.h
@@ -13,7 +13,7 @@
 #include "libANGLE/Error.h"
 #include "libANGLE/angletypes.h"
 
-#if defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
 #    include <EventToken.h>
 #endif
 
@@ -29,7 +29,7 @@
 
   private:
     Renderer11 *mRenderer;
-#if defined(ANGLE_ENABLE_WINDOWS_STORE)
+#if defined(ANGLE_ENABLE_WINDOWS_UWP)
     EventRegistrationToken mApplicationSuspendedEventToken;
 #endif
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp
index 826b20d..496f7c4 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.cpp
@@ -341,7 +341,7 @@
 
     if (FAILED(hr))
     {
-        return isSupported;
+        return !!isSupported;
     }
 
     Microsoft::WRL::ComPtr<ABI::Windows::Foundation::Metadata::IApiInformationStatics> api;
@@ -351,19 +351,19 @@
 
     if (FAILED(hr))
     {
-        return isSupported;
+        return !!isSupported;
     }
 
     hr = GetStringReference(L"Windows.Foundation.UniversalApiContract", &contractName,
                             &contractNameHeader);
     if (FAILED(hr))
     {
-        return isSupported;
+        return !!isSupported;
     }
 
     api->IsApiContractPresentByMajor(contractName, 6, &isSupported);
 
-    return isSupported;
+    return !!isSupported;
 }
 
 HRESULT RoHelper::GetStringReference(PCWSTR source, HSTRING *act, HSTRING_HEADER *header)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
index f04591d..085be7f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp
@@ -1693,7 +1693,7 @@
     // D3D11 does not support vertex attribute aliasing
     limitations->noVertexAttributeAliasing = true;
 
-#ifdef ANGLE_ENABLE_WINDOWS_STORE
+#ifdef ANGLE_ENABLE_WINDOWS_UWP
     // Setting a non-zero divisor on attribute zero doesn't work on certain Windows Phone 8-era
     // devices. We should prevent developers from doing this on ALL Windows Store devices. This will
     // maintain consistency across all Windows devices. We allow non-zero divisors on attribute zero
@@ -2382,84 +2382,91 @@
                         const DXGI_ADAPTER_DESC &adapterDesc,
                         angle::FeaturesD3D *features)
 {
-    bool is9_3 = (deviceCaps.featureLevel <= D3D_FEATURE_LEVEL_9_3);
-
-    features->mrtPerfWorkaround.enabled                = true;
-    features->setDataFasterThanImageUpload.enabled     = true;
-    features->zeroMaxLodWorkaround.enabled             = is9_3;
-    features->useInstancedPointSpriteEmulation.enabled = is9_3;
-
-    // TODO(jmadill): Narrow problematic driver range.
-    if (IsNvidia(adapterDesc.VendorId))
+    bool isNvidia                  = IsNvidia(adapterDesc.VendorId);
+    bool isIntel                   = IsIntel(adapterDesc.VendorId);
+    bool isSkylake                 = false;
+    bool isBroadwell               = false;
+    bool isHaswell                 = false;
+    bool isAMD                     = IsAMD(adapterDesc.VendorId);
+    bool isFeatureLevel9_3         = (deviceCaps.featureLevel <= D3D_FEATURE_LEVEL_9_3);
+    IntelDriverVersion capsVersion = IntelDriverVersion(0);
+    if (isIntel)
     {
-        if (deviceCaps.driverVersion.valid())
+        capsVersion = d3d11_gl::GetIntelDriverVersion(deviceCaps.driverVersion);
+
+        isSkylake   = IsSkylake(adapterDesc.DeviceId);
+        isBroadwell = IsBroadwell(adapterDesc.DeviceId);
+        isHaswell   = IsHaswell(adapterDesc.DeviceId);
+    }
+
+    if (isNvidia)
+    {
+        // TODO(jmadill): Narrow problematic driver range.
+        bool driverVersionValid = deviceCaps.driverVersion.valid();
+        if (driverVersionValid)
         {
             WORD part1 = HIWORD(deviceCaps.driverVersion.value().LowPart);
             WORD part2 = LOWORD(deviceCaps.driverVersion.value().LowPart);
 
             // Disable the workaround to fix a second driver bug on newer NVIDIA.
-            features->depthStencilBlitExtraCopy.enabled = (part1 <= 13u && part2 < 6881);
+            ANGLE_FEATURE_CONDITION(
+                features, depthStencilBlitExtraCopy,
+                (part1 <= 13u && part2 < 6881) && isNvidia && driverVersionValid)
         }
         else
         {
-            features->depthStencilBlitExtraCopy.enabled = true;
+            ANGLE_FEATURE_CONDITION(features, depthStencilBlitExtraCopy,
+                                    isNvidia && !driverVersionValid)
         }
     }
 
+    ANGLE_FEATURE_CONDITION(features, mrtPerfWorkaround, true)
+    ANGLE_FEATURE_CONDITION(features, zeroMaxLodWorkaround, isFeatureLevel9_3)
+    ANGLE_FEATURE_CONDITION(features, useInstancedPointSpriteEmulation, isFeatureLevel9_3)
+
     // TODO(jmadill): Disable workaround when we have a fixed compiler DLL.
-    features->expandIntegerPowExpressions.enabled = true;
+    ANGLE_FEATURE_CONDITION(features, expandIntegerPowExpressions, true)
 
-    features->flushAfterEndingTransformFeedback.enabled = IsNvidia(adapterDesc.VendorId);
-    features->getDimensionsIgnoresBaseLevel.enabled     = IsNvidia(adapterDesc.VendorId);
-    features->skipVSConstantRegisterZero.enabled        = IsNvidia(adapterDesc.VendorId);
-    features->forceAtomicValueResolution.enabled        = IsNvidia(adapterDesc.VendorId);
+    ANGLE_FEATURE_CONDITION(features, flushAfterEndingTransformFeedback, isNvidia)
+    ANGLE_FEATURE_CONDITION(features, getDimensionsIgnoresBaseLevel, isNvidia)
+    ANGLE_FEATURE_CONDITION(features, skipVSConstantRegisterZero, isNvidia)
+    ANGLE_FEATURE_CONDITION(features, forceAtomicValueResolution, isNvidia)
 
-    if (IsIntel(adapterDesc.VendorId))
-    {
-        IntelDriverVersion capsVersion = d3d11_gl::GetIntelDriverVersion(deviceCaps.driverVersion);
+    ANGLE_FEATURE_CONDITION(features, preAddTexelFetchOffsets, isIntel)
+    ANGLE_FEATURE_CONDITION(features, useSystemMemoryForConstantBuffers, isIntel)
 
-        features->preAddTexelFetchOffsets.enabled           = true;
-        features->useSystemMemoryForConstantBuffers.enabled = true;
-        features->disableB5G6R5Support.enabled          = capsVersion < IntelDriverVersion(4539);
-        features->addDummyTextureNoRenderTarget.enabled = capsVersion < IntelDriverVersion(4815);
-        if (IsSkylake(adapterDesc.DeviceId))
-        {
-            features->callClearTwice.enabled    = capsVersion < IntelDriverVersion(4771);
-            features->emulateIsnanFloat.enabled = capsVersion < IntelDriverVersion(4542);
-        }
-        else if (IsBroadwell(adapterDesc.DeviceId) || IsHaswell(adapterDesc.DeviceId))
-        {
-            features->rewriteUnaryMinusOperator.enabled = capsVersion < IntelDriverVersion(4624);
+    ANGLE_FEATURE_CONDITION(features, callClearTwice,
+                            isIntel && isSkylake && capsVersion < IntelDriverVersion(4771))
+    ANGLE_FEATURE_CONDITION(features, emulateIsnanFloat,
+                            isIntel && isSkylake && capsVersion < IntelDriverVersion(4542))
+    ANGLE_FEATURE_CONDITION(
+        features, rewriteUnaryMinusOperator,
+        isIntel && (isBroadwell || isHaswell) && capsVersion < IntelDriverVersion(4624))
 
-            // Haswell drivers occasionally corrupt (small?) (vertex?) texture data uploads.
-            features->setDataFasterThanImageUpload.enabled = false;
-        }
-    }
+    ANGLE_FEATURE_CONDITION(features, addDummyTextureNoRenderTarget,
+                            isIntel && capsVersion < IntelDriverVersion(4815))
 
-    if (IsAMD(adapterDesc.VendorId))
-    {
-        features->disableB5G6R5Support.enabled = true;
-    }
+    // Haswell drivers occasionally corrupt (small?) (vertex?) texture data uploads.
+    ANGLE_FEATURE_CONDITION(features, setDataFasterThanImageUpload, !(isBroadwell || isHaswell))
+
+    ANGLE_FEATURE_CONDITION(features, disableB5G6R5Support,
+                            (isIntel && capsVersion < IntelDriverVersion(4539)) || isAMD)
 
     // TODO(jmadill): Disable when we have a fixed driver version.
-    features->emulateTinyStencilTextures.enabled = IsAMD(adapterDesc.VendorId);
-
     // The tiny stencil texture workaround involves using CopySubresource or UpdateSubresource on a
     // depth stencil texture.  This is not allowed until feature level 10.1 but since it is not
     // possible to support ES3 on these devices, there is no need for the workaround to begin with
     // (anglebug.com/1572).
-    if (deviceCaps.featureLevel < D3D_FEATURE_LEVEL_10_1)
-    {
-        features->emulateTinyStencilTextures.enabled = false;
-    }
+    ANGLE_FEATURE_CONDITION(features, emulateTinyStencilTextures,
+                            isAMD && !(deviceCaps.featureLevel < D3D_FEATURE_LEVEL_10_1))
 
     // If the VPAndRTArrayIndexFromAnyShaderFeedingRasterizer feature is not available, we have to
     // select the viewport / RT array index in the geometry shader.
-    features->selectViewInGeometryShader.enabled =
-        (deviceCaps.supportsVpRtIndexWriteFromVertexShader == false);
+    ANGLE_FEATURE_CONDITION(features, selectViewInGeometryShader,
+                            !deviceCaps.supportsVpRtIndexWriteFromVertexShader)
 
     // Never clear for robust resource init.  This matches Chrome's texture clearning behaviour.
-    features->allowClearForRobustResourceInit.enabled = false;
+    ANGLE_FEATURE_CONDITION(features, allowClearForRobustResourceInit, false)
 
     // Call platform hooks for testing overrides.
     auto *platform = ANGLEPlatformCurrent();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
index 8dc6076..82df5e9 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h
@@ -49,11 +49,15 @@
     ComPtr<IMap<HSTRING, IInspectable *>> mPropertyMap;
 };
 
-[uuid(7F924F66 - EBAE - 40E5 - A10B - B8F35E245190)] class CoreWindowSizeChangedHandler
+// clang format would break the uuid below
+// clang-format off
+[uuid(7F924F66-EBAE-40E5-A10B-B8F35E245190)] class CoreWindowSizeChangedHandler
     : public Microsoft::WRL::RuntimeClass<
           Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
           IWindowSizeChangedEventHandler>
 {
+    // clang-format on
+
   public:
     CoreWindowSizeChangedHandler() {}
     HRESULT RuntimeClassInitialize(std::shared_ptr<InspectableNativeWindow> host)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp
index d613fe0..7e85f93 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.cpp
@@ -88,8 +88,15 @@
                                              DXGI_FORMAT format,
                                              UINT width,
                                              UINT height,
+                                             UINT samples,
                                              IDXGISwapChain **swapChain)
 {
+    if (samples > 1)
+    {
+        // Multisample not implemented for WinRT window types
+        return E_NOTIMPL;
+    }
+
     if (mImpl)
     {
         IDXGIFactory2 *factory2     = d3d11::DynamicCastComObject<IDXGIFactory2>(factory);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
index 85bfc26..d359a8b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/NativeWindow11WinRT.h
@@ -34,6 +34,7 @@
                             DXGI_FORMAT format,
                             UINT width,
                             UINT height,
+                            UINT samples,
                             IDXGISwapChain **swapChain) override;
 
     void commitChange() override;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
index 671dab0..75a901a 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.h
@@ -43,11 +43,15 @@
     ComPtr<IDXGISwapChain1> mSwapChain;
 };
 
-[uuid(8ACBD974 - 8187 - 4508 - AD80 - AEC77F93CF36)] class SwapChainPanelSizeChangedHandler
+// clang format would break the uuid below
+// clang-format off
+[uuid(8ACBD974-8187-4508-AD80-AEC77F93CF36)] class SwapChainPanelSizeChangedHandler
     : public Microsoft::WRL::RuntimeClass<
           Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::ClassicCom>,
           ABI::Windows::UI::Xaml::ISizeChangedEventHandler>
 {
+    // clang-format on
+
   public:
     SwapChainPanelSizeChangedHandler() {}
     HRESULT RuntimeClassInitialize(std::shared_ptr<InspectableNativeWindow> host)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp
index 0baf067..989a1c7 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/d3d/d3d9/renderer9_utils.cpp
@@ -805,15 +805,15 @@
 
 void InitializeFeatures(angle::FeaturesD3D *features)
 {
-    features->mrtPerfWorkaround.enabled                = true;
-    features->setDataFasterThanImageUpload.enabled     = false;
-    features->useInstancedPointSpriteEmulation.enabled = false;
+    ANGLE_FEATURE_CONDITION(features, mrtPerfWorkaround, true)
+    ANGLE_FEATURE_CONDITION(features, setDataFasterThanImageUpload, false)
+    ANGLE_FEATURE_CONDITION(features, useInstancedPointSpriteEmulation, false)
 
     // TODO(jmadill): Disable workaround when we have a fixed compiler DLL.
-    features->expandIntegerPowExpressions.enabled = true;
+    ANGLE_FEATURE_CONDITION(features, expandIntegerPowExpressions, true)
 
     // Never clear for robust resource init.  This matches Chrome's texture clearning behaviour.
-    features->allowClearForRobustResourceInit.enabled = false;
+    ANGLE_FEATURE_CONDITION(features, allowClearForRobustResourceInit, false)
 
     // Call platform hooks for testing overrides.
     auto *platform = ANGLEPlatformCurrent();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gen_angle_format_table.py b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gen_angle_format_table.py
index 863076a..53117f0 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gen_angle_format_table.py
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gen_angle_format_table.py
@@ -92,6 +92,11 @@
 """
 
 
+def ceil_int(value, mod):
+    assert mod > 0 and value > 0, 'integer modulation should be larger than 0'
+    return (value + mod - 1) / mod
+
+
 def is_depth_stencil(angle_format):
     if not 'channels' in angle_format or not angle_format['channels']:
         return False
@@ -111,6 +116,9 @@
         return None
     if 'BLOCK' in angle_format['id']:
         return None
+    if 'VERTEX' in angle_format['id']:
+        return None
+
     bits = angle_format['bits']
 
     if 'channelStruct' in angle_format:
@@ -145,7 +153,8 @@
 
 def get_mip_generation_function(angle_format):
     channel_struct = get_channel_struct(angle_format)
-    if is_depth_stencil(angle_format) or channel_struct == None or "BLOCK" in angle_format["id"]:
+    if is_depth_stencil(angle_format) or channel_struct == None \
+            or "BLOCK" in angle_format["id"] or "VERTEX" in angle_format["id"]:
         return 'nullptr'
     return 'GenerateMip<' + channel_struct + '>'
 
@@ -239,6 +248,7 @@
     has_r16 = "R16" in format_id
     has_r32 = "R32" in format_id
     has_r10 = "R10" in format_id
+    has_vertex = "VERTEX" in format_id
 
     if has_fixed:
         return "Fixed"
@@ -250,7 +260,10 @@
         return "Byte" if has_s else "UnsignedByte"
 
     if has_r10:
-        return "Int2101010" if has_s else "UnsignedInt2101010"
+        if has_vertex:
+            return "Int1010102" if has_s else "UnsignedInt1010102"
+        else:
+            return "Int2101010" if has_s else "UnsignedInt2101010"
 
     if has_r16:
         return "Short" if has_s else "UnsignedShort"
@@ -317,7 +330,7 @@
         sum_of_bits = 0
         for channel in angle_format.kChannels:
             sum_of_bits += int(parsed[channel])
-        pixel_bytes = sum_of_bits / 8
+        pixel_bytes = ceil_int(sum_of_bits, 8)
     parsed["pixelBytes"] = pixel_bytes
     parsed["componentAlignmentMask"] = get_component_alignment_mask(parsed["channels"],
                                                                     parsed["bits"])
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp
index eddb5b1..a7e16c1 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.cpp
@@ -35,29 +35,29 @@
 namespace
 {
 
-angle::Result CheckCompileStatus(ContextGL *contextGL,
+angle::Result CheckCompileStatus(const gl::Context *context,
                                  const rx::FunctionsGL *functions,
                                  GLuint shader)
 {
     GLint compileStatus = GL_FALSE;
-    functions->getShaderiv(shader, GL_COMPILE_STATUS, &compileStatus);
+    ANGLE_GL_TRY(context, functions->getShaderiv(shader, GL_COMPILE_STATUS, &compileStatus));
 
     ASSERT(compileStatus == GL_TRUE);
-    ANGLE_CHECK(contextGL, compileStatus == GL_TRUE, "Failed to compile internal blit shader.",
-                GL_OUT_OF_MEMORY);
+    ANGLE_CHECK(GetImplAs<ContextGL>(context), compileStatus == GL_TRUE,
+                "Failed to compile internal blit shader.", GL_OUT_OF_MEMORY);
 
     return angle::Result::Continue;
 }
 
-angle::Result CheckLinkStatus(ContextGL *contextGL,
+angle::Result CheckLinkStatus(const gl::Context *context,
                               const rx::FunctionsGL *functions,
                               GLuint program)
 {
     GLint linkStatus = GL_FALSE;
-    functions->getProgramiv(program, GL_LINK_STATUS, &linkStatus);
+    ANGLE_GL_TRY(context, functions->getProgramiv(program, GL_LINK_STATUS, &linkStatus));
     ASSERT(linkStatus == GL_TRUE);
-    ANGLE_CHECK(contextGL, linkStatus == GL_TRUE, "Failed to link internal blit program.",
-                GL_OUT_OF_MEMORY);
+    ANGLE_CHECK(GetImplAs<ContextGL>(context), linkStatus == GL_TRUE,
+                "Failed to link internal blit program.", GL_OUT_OF_MEMORY);
 
     return angle::Result::Continue;
 }
@@ -199,14 +199,17 @@
     return angle::Result::Continue;
 }
 
-void UnbindAttachments(const FunctionsGL *functions,
-                       GLenum framebufferTarget,
-                       const ClearBindTargetVector &bindTargets)
+angle::Result UnbindAttachments(const gl::Context *context,
+                                const FunctionsGL *functions,
+                                GLenum framebufferTarget,
+                                const ClearBindTargetVector &bindTargets)
 {
     for (GLenum bindTarget : bindTargets)
     {
-        functions->framebufferRenderbuffer(framebufferTarget, bindTarget, GL_RENDERBUFFER, 0);
+        ANGLE_GL_TRY(context, functions->framebufferRenderbuffer(framebufferTarget, bindTarget,
+                                                                 GL_RENDERBUFFER, 0));
     }
+    return angle::Result::Continue;
 }
 
 }  // anonymous namespace
@@ -282,8 +285,10 @@
     mStateManager->setPixelUnpackState(unpack);
     mStateManager->setPixelUnpackBuffer(
         context->getState().getTargetBuffer(gl::BufferBinding::PixelUnpack));
-    mFunctions->texImage2D(ToGLenum(target), static_cast<GLint>(level), internalFormat,
-                           sourceArea.width, sourceArea.height, 0, format, readType, nullptr);
+    ANGLE_GL_TRY_ALWAYS_CHECK(
+        context,
+        mFunctions->texImage2D(ToGLenum(target), static_cast<GLint>(level), internalFormat,
+                               sourceArea.width, sourceArea.height, 0, format, readType, nullptr));
 
     return copySubImageToLUMAWorkaroundTexture(context, texture, textureType, target, lumaFormat,
                                                level, gl::Offset(0, 0, 0), sourceArea, source);
@@ -299,10 +304,10 @@
                                                           const gl::Rectangle &sourceArea,
                                                           gl::Framebuffer *source)
 {
-    ANGLE_TRY(initializeResources());
+    ANGLE_TRY(initializeResources(context));
 
     BlitProgram *blitProgram = nullptr;
-    ANGLE_TRY(getBlitProgram(context, BlitProgramType::FLOAT_TO_FLOAT, &blitProgram));
+    ANGLE_TRY(getBlitProgram(context, gl::TextureType::_2D, GL_FLOAT, GL_FLOAT, &blitProgram));
 
     // Blit the framebuffer to the first scratch texture
     const FramebufferGL *sourceFramebufferGL = GetImplAs<FramebufferGL>(source);
@@ -318,8 +323,10 @@
         nativegl::GetCopyTexImageImageFormat(mFunctions, mFeatures, readFormat, readType);
 
     mStateManager->bindTexture(gl::TextureType::_2D, mScratchTextures[0]);
-    mFunctions->copyTexImage2D(GL_TEXTURE_2D, 0, copyTexImageFormat.internalFormat, sourceArea.x,
-                               sourceArea.y, sourceArea.width, sourceArea.height, 0);
+    ANGLE_GL_TRY_ALWAYS_CHECK(
+        context, mFunctions->copyTexImage2D(GL_TEXTURE_2D, 0, copyTexImageFormat.internalFormat,
+                                            sourceArea.x, sourceArea.y, sourceArea.width,
+                                            sourceArea.height, 0));
 
     // Set the swizzle of the scratch texture so that the channels sample into the correct emulated
     // LUMA channels.
@@ -329,58 +336,63 @@
         GL_ZERO,
         GL_ZERO,
     };
-    mFunctions->texParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzle);
+    ANGLE_GL_TRY(context,
+                 mFunctions->texParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzle));
 
     // Make a temporary framebuffer using the second scratch texture to render the swizzled result
     // to.
     mStateManager->bindTexture(gl::TextureType::_2D, mScratchTextures[1]);
-    mFunctions->texImage2D(
-        GL_TEXTURE_2D, 0, copyTexImageFormat.internalFormat, sourceArea.width, sourceArea.height, 0,
-        gl::GetUnsizedFormat(copyTexImageFormat.internalFormat), readType, nullptr);
+    ANGLE_GL_TRY_ALWAYS_CHECK(
+        context, mFunctions->texImage2D(GL_TEXTURE_2D, 0, copyTexImageFormat.internalFormat,
+                                        sourceArea.width, sourceArea.height, 0,
+                                        gl::GetUnsizedFormat(copyTexImageFormat.internalFormat),
+                                        readType, nullptr));
 
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
-    mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
-                                     mScratchTextures[1], 0);
+    ANGLE_GL_TRY(context, mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                                           GL_TEXTURE_2D, mScratchTextures[1], 0));
 
     // Render to the destination texture, sampling from the scratch texture
     ScopedGLState scopedState;
     ANGLE_TRY(scopedState.enter(context, gl::Rectangle(0, 0, sourceArea.width, sourceArea.height)));
     scopedState.willUseTextureUnit(context, 0);
 
-    setScratchTextureParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-    setScratchTextureParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    ANGLE_TRY(setScratchTextureParameter(context, GL_TEXTURE_MIN_FILTER, GL_NEAREST));
+    ANGLE_TRY(setScratchTextureParameter(context, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
 
     mStateManager->activeTexture(0);
     mStateManager->bindTexture(gl::TextureType::_2D, mScratchTextures[0]);
 
     mStateManager->useProgram(blitProgram->program);
-    mFunctions->uniform1i(blitProgram->sourceTextureLocation, 0);
-    mFunctions->uniform2f(blitProgram->scaleLocation, 1.0, 1.0);
-    mFunctions->uniform2f(blitProgram->offsetLocation, 0.0, 0.0);
-    mFunctions->uniform1i(blitProgram->multiplyAlphaLocation, 0);
-    mFunctions->uniform1i(blitProgram->unMultiplyAlphaLocation, 0);
+    ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->sourceTextureLocation, 0));
+    ANGLE_GL_TRY(context, mFunctions->uniform2f(blitProgram->scaleLocation, 1.0, 1.0));
+    ANGLE_GL_TRY(context, mFunctions->uniform2f(blitProgram->offsetLocation, 0.0, 0.0));
+    ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->multiplyAlphaLocation, 0));
+    ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->unMultiplyAlphaLocation, 0));
 
     mStateManager->bindVertexArray(mVAO, 0);
-    mFunctions->drawArrays(GL_TRIANGLES, 0, 3);
+    ANGLE_GL_TRY(context, mFunctions->drawArrays(GL_TRIANGLES, 0, 3));
 
     // Copy the swizzled texture to the destination texture
     mStateManager->bindTexture(textureType, texture);
 
     if (nativegl::UseTexImage3D(textureType))
     {
-        mFunctions->copyTexSubImage3D(ToGLenum(target), static_cast<GLint>(level), destOffset.x,
-                                      destOffset.y, destOffset.z, 0, 0, sourceArea.width,
-                                      sourceArea.height);
+        ANGLE_GL_TRY(context,
+                     mFunctions->copyTexSubImage3D(ToGLenum(target), static_cast<GLint>(level),
+                                                   destOffset.x, destOffset.y, destOffset.z, 0, 0,
+                                                   sourceArea.width, sourceArea.height));
     }
     else
     {
         ASSERT(nativegl::UseTexImage2D(textureType));
-        mFunctions->copyTexSubImage2D(ToGLenum(target), static_cast<GLint>(level), destOffset.x,
-                                      destOffset.y, 0, 0, sourceArea.width, sourceArea.height);
+        ANGLE_GL_TRY(context, mFunctions->copyTexSubImage2D(
+                                  ToGLenum(target), static_cast<GLint>(level), destOffset.x,
+                                  destOffset.y, 0, 0, sourceArea.width, sourceArea.height));
     }
 
     // Finally orphan the scratch textures so they can be GCed by the driver.
-    orphanScratchTextures();
+    ANGLE_TRY(orphanScratchTextures(context));
 
     ANGLE_TRY(scopedState.exit(context));
     return angle::Result::Continue;
@@ -393,10 +405,10 @@
                                                 const gl::Rectangle &destAreaIn,
                                                 GLenum filter)
 {
-    ANGLE_TRY(initializeResources());
+    ANGLE_TRY(initializeResources(context));
 
     BlitProgram *blitProgram = nullptr;
-    ANGLE_TRY(getBlitProgram(context, BlitProgramType::FLOAT_TO_FLOAT, &blitProgram));
+    ANGLE_TRY(getBlitProgram(context, gl::TextureType::_2D, GL_FLOAT, GL_FLOAT, &blitProgram));
 
     // We'll keep things simple by removing reversed coordinates from the rectangles. In the end
     // we'll apply the reversal to the source texture coordinates if needed. The destination
@@ -437,17 +449,19 @@
         mStateManager->bindFramebuffer(GL_READ_FRAMEBUFFER, sourceGL->getFramebufferID());
         mStateManager->bindTexture(gl::TextureType::_2D, textureId);
 
-        mFunctions->copyTexImage2D(GL_TEXTURE_2D, 0, format, inBoundsSource.x, inBoundsSource.y,
-                                   inBoundsSource.width, inBoundsSource.height, 0);
+        ANGLE_GL_TRY_ALWAYS_CHECK(
+            context,
+            mFunctions->copyTexImage2D(GL_TEXTURE_2D, 0, format, inBoundsSource.x, inBoundsSource.y,
+                                       inBoundsSource.width, inBoundsSource.height, 0));
 
         // Translate sourceArea to be relative to the copied image.
         sourceArea.x -= inBoundsSource.x;
         sourceArea.y -= inBoundsSource.y;
 
-        setScratchTextureParameter(GL_TEXTURE_MIN_FILTER, filter);
-        setScratchTextureParameter(GL_TEXTURE_MAG_FILTER, filter);
-        setScratchTextureParameter(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-        setScratchTextureParameter(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+        ANGLE_TRY(setScratchTextureParameter(context, GL_TEXTURE_MIN_FILTER, filter));
+        ANGLE_TRY(setScratchTextureParameter(context, GL_TEXTURE_MAG_FILTER, filter));
+        ANGLE_TRY(setScratchTextureParameter(context, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE));
+        ANGLE_TRY(setScratchTextureParameter(context, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE));
     }
 
     // Transform the source area to the texture coordinate space (where 0.0 and 1.0 correspond to
@@ -482,17 +496,19 @@
     mStateManager->bindTexture(gl::TextureType::_2D, textureId);
 
     mStateManager->useProgram(blitProgram->program);
-    mFunctions->uniform1i(blitProgram->sourceTextureLocation, 0);
-    mFunctions->uniform2f(blitProgram->scaleLocation, texCoordScale.x(), texCoordScale.y());
-    mFunctions->uniform2f(blitProgram->offsetLocation, texCoordOffset.x(), texCoordOffset.y());
-    mFunctions->uniform1i(blitProgram->multiplyAlphaLocation, 0);
-    mFunctions->uniform1i(blitProgram->unMultiplyAlphaLocation, 0);
+    ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->sourceTextureLocation, 0));
+    ANGLE_GL_TRY(context, mFunctions->uniform2f(blitProgram->scaleLocation, texCoordScale.x(),
+                                                texCoordScale.y()));
+    ANGLE_GL_TRY(context, mFunctions->uniform2f(blitProgram->offsetLocation, texCoordOffset.x(),
+                                                texCoordOffset.y()));
+    ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->multiplyAlphaLocation, 0));
+    ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->unMultiplyAlphaLocation, 0));
 
     const FramebufferGL *destGL = GetImplAs<FramebufferGL>(dest);
     mStateManager->bindFramebuffer(GL_DRAW_FRAMEBUFFER, destGL->getFramebufferID());
 
     mStateManager->bindVertexArray(mVAO, 0);
-    mFunctions->drawArrays(GL_TRIANGLES, 0, 3);
+    ANGLE_GL_TRY(context, mFunctions->drawArrays(GL_TRIANGLES, 0, 3));
 
     ANGLE_TRY(scopedState.exit(context));
     return angle::Result::Continue;
@@ -519,24 +535,24 @@
     ASSERT(source->getType() == gl::TextureType::_2D ||
            source->getType() == gl::TextureType::External ||
            source->getType() == gl::TextureType::Rectangle);
-    ANGLE_TRY(initializeResources());
+    ANGLE_TRY(initializeResources(context));
 
     // Make sure the destination texture can be rendered to before setting anything else up.  Some
     // cube maps may not be renderable until all faces have been filled.
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
-    mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, ToGLenum(destTarget),
-                                     destID, static_cast<GLint>(destLevel));
-    GLenum status = mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER);
+    ANGLE_GL_TRY(context, mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                                           ToGLenum(destTarget), destID,
+                                                           static_cast<GLint>(destLevel)));
+    GLenum status = ANGLE_GL_TRY(context, mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER));
     if (status != GL_FRAMEBUFFER_COMPLETE)
     {
         *copySucceededOut = false;
         return angle::Result::Continue;
     }
 
-    BlitProgramType blitProgramType =
-        getBlitProgramType(source->getType(), sourceComponentType, destComponentType);
     BlitProgram *blitProgram = nullptr;
-    ANGLE_TRY(getBlitProgram(context, blitProgramType, &blitProgram));
+    ANGLE_TRY(getBlitProgram(context, source->getType(), sourceComponentType, destComponentType,
+                             &blitProgram));
 
     // Setup the source texture
     if (needsLumaWorkaround)
@@ -589,22 +605,25 @@
     }
 
     mStateManager->useProgram(blitProgram->program);
-    mFunctions->uniform1i(blitProgram->sourceTextureLocation, 0);
-    mFunctions->uniform2f(blitProgram->scaleLocation, scale.x(), scale.y());
-    mFunctions->uniform2f(blitProgram->offsetLocation, offset.x(), offset.y());
+    ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->sourceTextureLocation, 0));
+    ANGLE_GL_TRY(context, mFunctions->uniform2f(blitProgram->scaleLocation, scale.x(), scale.y()));
+    ANGLE_GL_TRY(context,
+                 mFunctions->uniform2f(blitProgram->offsetLocation, offset.x(), offset.y()));
     if (unpackPremultiplyAlpha == unpackUnmultiplyAlpha)
     {
-        mFunctions->uniform1i(blitProgram->multiplyAlphaLocation, 0);
-        mFunctions->uniform1i(blitProgram->unMultiplyAlphaLocation, 0);
+        ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->multiplyAlphaLocation, 0));
+        ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->unMultiplyAlphaLocation, 0));
     }
     else
     {
-        mFunctions->uniform1i(blitProgram->multiplyAlphaLocation, unpackPremultiplyAlpha);
-        mFunctions->uniform1i(blitProgram->unMultiplyAlphaLocation, unpackUnmultiplyAlpha);
+        ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->multiplyAlphaLocation,
+                                                    unpackPremultiplyAlpha));
+        ANGLE_GL_TRY(context, mFunctions->uniform1i(blitProgram->unMultiplyAlphaLocation,
+                                                    unpackUnmultiplyAlpha));
     }
 
     mStateManager->bindVertexArray(mVAO, 0);
-    mFunctions->drawArrays(GL_TRIANGLES, 0, 3);
+    ANGLE_GL_TRY(context, mFunctions->drawArrays(GL_TRIANGLES, 0, 3));
 
     *copySucceededOut = true;
     ANGLE_TRY(scopedState.exit(context));
@@ -629,7 +648,7 @@
                                                 bool unpackPremultiplyAlpha,
                                                 bool unpackUnmultiplyAlpha)
 {
-    ANGLE_TRY(initializeResources());
+    ANGLE_TRY(initializeResources(context));
 
     ContextGL *contextGL = GetImplAs<ContextGL>(context);
 
@@ -643,10 +662,10 @@
     gl::Rectangle readPixelsArea = sourceArea;
 
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
-    mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-                                     ToGLenum(source->getType()), source->getTextureID(),
-                                     static_cast<GLint>(sourceLevel));
-    GLenum status = mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER);
+    ANGLE_GL_TRY(context, mFunctions->framebufferTexture2D(
+                              GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, ToGLenum(source->getType()),
+                              source->getTextureID(), static_cast<GLint>(sourceLevel)));
+    GLenum status = ANGLE_GL_TRY(context, mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER));
     if (status != GL_FRAMEBUFFER_COMPLETE)
     {
         // The source texture cannot be read with glReadPixels. Copy it into another RGBA texture
@@ -657,9 +676,11 @@
 
         gl::TextureType scratchTextureType = gl::TextureType::_2D;
         mStateManager->bindTexture(scratchTextureType, mScratchTextures[0]);
-        mFunctions->texImage2D(ToGLenum(scratchTextureType), 0, texImageFormat.internalFormat,
-                               sourceArea.width, sourceArea.height, 0, texImageFormat.format,
-                               texImageFormat.type, nullptr);
+        ANGLE_GL_TRY_ALWAYS_CHECK(
+            context,
+            mFunctions->texImage2D(ToGLenum(scratchTextureType), 0, texImageFormat.internalFormat,
+                                   sourceArea.width, sourceArea.height, 0, texImageFormat.format,
+                                   texImageFormat.type, nullptr));
 
         bool copySucceeded = false;
         ANGLE_TRY(copySubTexture(
@@ -675,15 +696,16 @@
 
         // Bind the scratch texture as the readback texture
         mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
-        mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-                                         ToGLenum(scratchTextureType), mScratchTextures[0], 0);
+        ANGLE_GL_TRY(context, mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                                               ToGLenum(scratchTextureType),
+                                                               mScratchTextures[0], 0));
 
         // The scratch texture sized to sourceArea so adjust the readpixels area
         readPixelsArea.x = 0;
         readPixelsArea.y = 0;
 
         // Recheck the status
-        status = mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER);
+        status = ANGLE_GL_TRY(context, mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER));
     }
 
     ASSERT(status == GL_FRAMEBUFFER_COMPLETE);
@@ -718,8 +740,9 @@
     unpack.alignment = 1;
     mStateManager->setPixelUnpackState(unpack);
     mStateManager->setPixelUnpackBuffer(nullptr);
-    mFunctions->readPixels(readPixelsArea.x, readPixelsArea.y, readPixelsArea.width,
-                           readPixelsArea.height, readPixelsFormat, GL_UNSIGNED_BYTE, sourceMemory);
+    ANGLE_GL_TRY(context, mFunctions->readPixels(readPixelsArea.x, readPixelsArea.y,
+                                                 readPixelsArea.width, readPixelsArea.height,
+                                                 readPixelsFormat, GL_UNSIGNED_BYTE, sourceMemory));
 
     angle::FormatID destFormatID =
         angle::Format::InternalFormatToID(destInternalFormatInfo.sizedInternalFormat);
@@ -740,14 +763,16 @@
         nativegl::GetTexSubImageFormat(mFunctions, mFeatures, destFormat, destType);
 
     mStateManager->bindTexture(dest->getType(), dest->getTextureID());
-    mFunctions->texSubImage2D(ToGLenum(destTarget), static_cast<GLint>(destLevel), destOffset.x,
+    ANGLE_GL_TRY(context, mFunctions->texSubImage2D(
+                              ToGLenum(destTarget), static_cast<GLint>(destLevel), destOffset.x,
                               destOffset.y, readPixelsArea.width, readPixelsArea.height,
-                              texSubImageFormat.format, texSubImageFormat.type, destMemory);
+                              texSubImageFormat.format, texSubImageFormat.type, destMemory));
 
     return angle::Result::Continue;
 }
 
-angle::Result BlitGL::copyTexSubImage(TextureGL *source,
+angle::Result BlitGL::copyTexSubImage(const gl::Context *context,
+                                      TextureGL *source,
                                       size_t sourceLevel,
                                       TextureGL *dest,
                                       gl::TextureTarget destTarget,
@@ -756,14 +781,14 @@
                                       const gl::Offset &destOffset,
                                       bool *copySucceededOut)
 {
-    ANGLE_TRY(initializeResources());
+    ANGLE_TRY(initializeResources(context));
 
     // Make sure the source texture can create a complete framebuffer before continuing.
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
-    mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
-                                     ToGLenum(source->getType()), source->getTextureID(),
-                                     static_cast<GLint>(sourceLevel));
-    GLenum status = mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER);
+    ANGLE_GL_TRY(context, mFunctions->framebufferTexture2D(
+                              GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, ToGLenum(source->getType()),
+                              source->getTextureID(), static_cast<GLint>(sourceLevel)));
+    GLenum status = ANGLE_GL_TRY(context, mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER));
     if (status != GL_FRAMEBUFFER_COMPLETE)
     {
         *copySucceededOut = false;
@@ -772,21 +797,23 @@
 
     mStateManager->bindTexture(dest->getType(), dest->getTextureID());
 
-    mFunctions->copyTexSubImage2D(ToGLenum(destTarget), static_cast<GLint>(destLevel), destOffset.x,
-                                  destOffset.y, sourceArea.x, sourceArea.y, sourceArea.width,
-                                  sourceArea.height);
+    ANGLE_GL_TRY(context,
+                 mFunctions->copyTexSubImage2D(ToGLenum(destTarget), static_cast<GLint>(destLevel),
+                                               destOffset.x, destOffset.y, sourceArea.x,
+                                               sourceArea.y, sourceArea.width, sourceArea.height));
 
     *copySucceededOut = true;
     return angle::Result::Continue;
 }
 
-angle::Result BlitGL::clearRenderableTexture(TextureGL *source,
+angle::Result BlitGL::clearRenderableTexture(const gl::Context *context,
+                                             TextureGL *source,
                                              GLenum sizedInternalFormat,
                                              int numTextureLayers,
                                              const gl::ImageIndex &imageIndex,
                                              bool *clearSucceededOut)
 {
-    ANGLE_TRY(initializeResources());
+    ANGLE_TRY(initializeResources(context));
 
     ClearBindTargetVector bindTargets;
     ClearBindTargetVector unbindTargets;
@@ -795,26 +822,26 @@
                               &clearMask));
 
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
-    UnbindAttachments(mFunctions, GL_FRAMEBUFFER, unbindTargets);
+    ANGLE_TRY(UnbindAttachments(context, mFunctions, GL_FRAMEBUFFER, unbindTargets));
 
     if (nativegl::UseTexImage2D(source->getType()))
     {
         ASSERT(numTextureLayers == 1);
         for (GLenum bindTarget : bindTargets)
         {
-            mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, bindTarget,
-                                             ToGLenum(imageIndex.getTarget()),
-                                             source->getTextureID(), imageIndex.getLevelIndex());
+            ANGLE_GL_TRY(context, mFunctions->framebufferTexture2D(
+                                      GL_FRAMEBUFFER, bindTarget, ToGLenum(imageIndex.getTarget()),
+                                      source->getTextureID(), imageIndex.getLevelIndex()));
         }
 
-        GLenum status = mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER);
+        GLenum status = ANGLE_GL_TRY(context, mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER));
         if (status == GL_FRAMEBUFFER_COMPLETE)
         {
-            mFunctions->clear(clearMask);
+            ANGLE_GL_TRY(context, mFunctions->clear(clearMask));
         }
         else
         {
-            UnbindAttachments(mFunctions, GL_FRAMEBUFFER, bindTargets);
+            ANGLE_TRY(UnbindAttachments(context, mFunctions, GL_FRAMEBUFFER, bindTargets));
             *clearSucceededOut = false;
             return angle::Result::Continue;
         }
@@ -828,18 +855,20 @@
         {
             for (GLenum bindTarget : bindTargets)
             {
-                mFunctions->framebufferTexture(GL_FRAMEBUFFER, bindTarget, source->getTextureID(),
-                                               imageIndex.getLevelIndex());
+                ANGLE_GL_TRY(context, mFunctions->framebufferTexture(GL_FRAMEBUFFER, bindTarget,
+                                                                     source->getTextureID(),
+                                                                     imageIndex.getLevelIndex()));
             }
 
-            GLenum status = mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER);
+            GLenum status =
+                ANGLE_GL_TRY(context, mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER));
             if (status == GL_FRAMEBUFFER_COMPLETE)
             {
-                mFunctions->clear(clearMask);
+                ANGLE_GL_TRY(context, mFunctions->clear(clearMask));
             }
             else
             {
-                UnbindAttachments(mFunctions, GL_FRAMEBUFFER, bindTargets);
+                ANGLE_TRY(UnbindAttachments(context, mFunctions, GL_FRAMEBUFFER, bindTargets));
                 *clearSucceededOut = false;
                 return angle::Result::Continue;
             }
@@ -858,19 +887,20 @@
             {
                 for (GLenum bindTarget : bindTargets)
                 {
-                    mFunctions->framebufferTextureLayer(
-                        GL_FRAMEBUFFER, bindTarget, source->getTextureID(),
-                        imageIndex.getLevelIndex(), layer + firstLayer);
+                    ANGLE_GL_TRY(context, mFunctions->framebufferTextureLayer(
+                                              GL_FRAMEBUFFER, bindTarget, source->getTextureID(),
+                                              imageIndex.getLevelIndex(), layer + firstLayer));
                 }
 
-                GLenum status = mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER);
+                GLenum status =
+                    ANGLE_GL_TRY(context, mFunctions->checkFramebufferStatus(GL_FRAMEBUFFER));
                 if (status == GL_FRAMEBUFFER_COMPLETE)
                 {
-                    mFunctions->clear(clearMask);
+                    ANGLE_GL_TRY(context, mFunctions->clear(clearMask));
                 }
                 else
                 {
-                    UnbindAttachments(mFunctions, GL_FRAMEBUFFER, bindTargets);
+                    ANGLE_TRY(UnbindAttachments(context, mFunctions, GL_FRAMEBUFFER, bindTargets));
                     *clearSucceededOut = false;
                     return angle::Result::Continue;
                 }
@@ -878,14 +908,16 @@
         }
     }
 
-    UnbindAttachments(mFunctions, GL_FRAMEBUFFER, bindTargets);
+    ANGLE_TRY(UnbindAttachments(context, mFunctions, GL_FRAMEBUFFER, bindTargets));
     *clearSucceededOut = true;
     return angle::Result::Continue;
 }
 
-angle::Result BlitGL::clearRenderbuffer(RenderbufferGL *source, GLenum sizedInternalFormat)
+angle::Result BlitGL::clearRenderbuffer(const gl::Context *context,
+                                        RenderbufferGL *source,
+                                        GLenum sizedInternalFormat)
 {
-    ANGLE_TRY(initializeResources());
+    ANGLE_TRY(initializeResources(context));
 
     ClearBindTargetVector bindTargets;
     ClearBindTargetVector unbindTargets;
@@ -894,25 +926,27 @@
                               &clearMask));
 
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
-    UnbindAttachments(mFunctions, GL_FRAMEBUFFER, unbindTargets);
+    ANGLE_TRY(UnbindAttachments(context, mFunctions, GL_FRAMEBUFFER, unbindTargets));
 
     for (GLenum bindTarget : bindTargets)
     {
-        mFunctions->framebufferRenderbuffer(GL_FRAMEBUFFER, bindTarget, GL_RENDERBUFFER,
-                                            source->getRenderbufferID());
+        ANGLE_GL_TRY(context,
+                     mFunctions->framebufferRenderbuffer(
+                         GL_FRAMEBUFFER, bindTarget, GL_RENDERBUFFER, source->getRenderbufferID()));
     }
-    mFunctions->clear(clearMask);
+    ANGLE_GL_TRY(context, mFunctions->clear(clearMask));
 
     // Unbind
     for (GLenum bindTarget : bindTargets)
     {
-        mFunctions->framebufferRenderbuffer(GL_FRAMEBUFFER, bindTarget, GL_RENDERBUFFER, 0);
+        ANGLE_GL_TRY(context, mFunctions->framebufferRenderbuffer(GL_FRAMEBUFFER, bindTarget,
+                                                                  GL_RENDERBUFFER, 0));
     }
 
     return angle::Result::Continue;
 }
 
-angle::Result BlitGL::clearFramebuffer(FramebufferGL *source)
+angle::Result BlitGL::clearFramebuffer(const gl::Context *context, FramebufferGL *source)
 {
     // initializeResources skipped because no local state is used
 
@@ -921,53 +955,56 @@
     ANGLE_TRY(SetClearState(mStateManager, true, true, true, &clearMask));
 
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, source->getFramebufferID());
-    mFunctions->clear(clearMask);
+    ANGLE_GL_TRY(context, mFunctions->clear(clearMask));
 
     return angle::Result::Continue;
 }
 
-angle::Result BlitGL::clearRenderableTextureAlphaToOne(GLuint texture,
+angle::Result BlitGL::clearRenderableTextureAlphaToOne(const gl::Context *context,
+                                                       GLuint texture,
                                                        gl::TextureTarget target,
                                                        size_t level)
 {
     // Clearing the alpha of 3D textures is not supported/needed yet.
     ASSERT(nativegl::UseTexImage2D(TextureTargetToType(target)));
 
-    ANGLE_TRY(initializeResources());
+    ANGLE_TRY(initializeResources(context));
 
     mStateManager->setClearColor(gl::ColorF(0.0f, 0.0f, 0.0f, 1.0f));
     mStateManager->setColorMask(false, false, false, true);
     mStateManager->setScissorTestEnabled(false);
 
     mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mScratchFBO);
-    mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, ToGLenum(target),
-                                     texture, static_cast<GLint>(level));
-    mFunctions->clear(GL_COLOR_BUFFER_BIT);
+    ANGLE_GL_TRY(context, mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                                           ToGLenum(target), texture,
+                                                           static_cast<GLint>(level)));
+    ANGLE_GL_TRY(context, mFunctions->clear(GL_COLOR_BUFFER_BIT));
 
     // Unbind the texture from the the scratch framebuffer
-    mFunctions->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 0);
+    ANGLE_GL_TRY(context, mFunctions->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+                                                              GL_RENDERBUFFER, 0));
 
     return angle::Result::Continue;
 }
 
-angle::Result BlitGL::initializeResources()
+angle::Result BlitGL::initializeResources(const gl::Context *context)
 {
     for (size_t i = 0; i < ArraySize(mScratchTextures); i++)
     {
         if (mScratchTextures[i] == 0)
         {
-            mFunctions->genTextures(1, &mScratchTextures[i]);
+            ANGLE_GL_TRY(context, mFunctions->genTextures(1, &mScratchTextures[i]));
         }
     }
 
     if (mScratchFBO == 0)
     {
-        mFunctions->genFramebuffers(1, &mScratchFBO);
+        ANGLE_GL_TRY(context, mFunctions->genFramebuffers(1, &mScratchFBO));
     }
 
     if (mVertexBuffer == 0)
     {
-        mFunctions->genBuffers(1, &mVertexBuffer);
+        ANGLE_GL_TRY(context, mFunctions->genBuffers(1, &mVertexBuffer));
         mStateManager->bindBuffer(gl::BufferBinding::Array, mVertexBuffer);
 
         // Use a single, large triangle, to avoid arithmetic precision issues where fragments
@@ -976,12 +1013,13 @@
             -0.5f, 0.0f, 1.5f, 0.0f, 0.5f, 2.0f,
         };
 
-        mFunctions->bufferData(GL_ARRAY_BUFFER, sizeof(float) * 6, vertexData, GL_STATIC_DRAW);
+        ANGLE_GL_TRY(context, mFunctions->bufferData(GL_ARRAY_BUFFER, sizeof(float) * 6, vertexData,
+                                                     GL_STATIC_DRAW));
     }
 
     if (mVAO == 0)
     {
-        mFunctions->genVertexArrays(1, &mVAO);
+        ANGLE_GL_TRY(context, mFunctions->genVertexArrays(1, &mVAO));
 
         mStateManager->bindVertexArray(mVAO, 0);
         mStateManager->bindBuffer(gl::BufferBinding::Array, mVertexBuffer);
@@ -989,19 +1027,20 @@
         // Enable all attributes with the same buffer so that it doesn't matter what location the
         // texcoord attribute is assigned
         GLint maxAttributes = 0;
-        mFunctions->getIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxAttributes);
+        ANGLE_GL_TRY(context, mFunctions->getIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxAttributes));
 
         for (GLint i = 0; i < maxAttributes; i++)
         {
-            mFunctions->enableVertexAttribArray(i);
-            mFunctions->vertexAttribPointer(i, 2, GL_FLOAT, GL_FALSE, 0, nullptr);
+            ANGLE_GL_TRY(context, mFunctions->enableVertexAttribArray(i));
+            ANGLE_GL_TRY(context,
+                         mFunctions->vertexAttribPointer(i, 2, GL_FLOAT, GL_FALSE, 0, nullptr));
         }
     }
 
     return angle::Result::Continue;
 }
 
-void BlitGL::orphanScratchTextures()
+angle::Result BlitGL::orphanScratchTextures(const gl::Context *context)
 {
     for (auto texture : mScratchTextures)
     {
@@ -1009,60 +1048,37 @@
         gl::PixelUnpackState unpack;
         mStateManager->setPixelUnpackState(unpack);
         mStateManager->setPixelUnpackBuffer(nullptr);
-        mFunctions->texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 0, GL_RGBA, GL_UNSIGNED_BYTE,
-                               nullptr);
+        ANGLE_GL_TRY(context, mFunctions->texImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 0, 0, 0, GL_RGBA,
+                                                     GL_UNSIGNED_BYTE, nullptr));
     }
+    return angle::Result::Continue;
 }
 
-void BlitGL::setScratchTextureParameter(GLenum param, GLenum value)
+angle::Result BlitGL::setScratchTextureParameter(const gl::Context *context,
+                                                 GLenum param,
+                                                 GLenum value)
 {
     for (auto texture : mScratchTextures)
     {
         mStateManager->bindTexture(gl::TextureType::_2D, texture);
-        mFunctions->texParameteri(GL_TEXTURE_2D, param, value);
-        mFunctions->texParameteri(GL_TEXTURE_2D, param, value);
+        ANGLE_GL_TRY(context, mFunctions->texParameteri(GL_TEXTURE_2D, param, value));
+        ANGLE_GL_TRY(context, mFunctions->texParameteri(GL_TEXTURE_2D, param, value));
     }
-}
-
-BlitGL::BlitProgramType BlitGL::getBlitProgramType(gl::TextureType sourceTextureType,
-                                                   GLenum sourceComponentType,
-                                                   GLenum destComponentType)
-{
-    if (sourceComponentType == GL_UNSIGNED_INT)
-    {
-        ASSERT(destComponentType == GL_UNSIGNED_INT);
-        return BlitProgramType::UINT_TO_UINT;
-    }
-    else
-    {
-        // Source is a float type
-        ASSERT(sourceComponentType != GL_INT);
-        if (destComponentType == GL_UNSIGNED_INT)
-        {
-            return sourceTextureType == gl::TextureType::External
-                       ? BlitProgramType::FLOAT_TO_UINT_EXTERNAL
-                       : BlitProgramType::FLOAT_TO_UINT;
-        }
-        else
-        {
-            // Dest is a float type
-            return sourceTextureType == gl::TextureType::External
-                       ? BlitProgramType::FLOAT_TO_FLOAT_EXTERNAL
-                       : BlitProgramType::FLOAT_TO_FLOAT;
-        }
-    }
+    return angle::Result::Continue;
 }
 
 angle::Result BlitGL::getBlitProgram(const gl::Context *context,
-                                     BlitProgramType type,
+                                     gl::TextureType sourceTextureType,
+                                     GLenum sourceComponentType,
+                                     GLenum destComponentType,
                                      BlitProgram **program)
 {
-    ContextGL *contextGL = GetImplAs<ContextGL>(context);
 
-    BlitProgram &result = mBlitPrograms[type];
+    BlitProgramType programType(sourceTextureType, sourceComponentType, destComponentType);
+    BlitProgram &result = mBlitPrograms[programType];
     if (result.program == 0)
     {
-        result.program = mFunctions->createProgram();
+        result.program = ANGLE_GL_TRY(context, mFunctions->createProgram());
 
         // Depending on what types need to be output by the shaders, different versions need to be
         // used.
@@ -1072,9 +1088,10 @@
         std::string fsInputVariableQualifier;
         std::string fsOutputVariableQualifier;
         std::string sampleFunction;
-        if (type == BlitProgramType::FLOAT_TO_FLOAT ||
-            type == BlitProgramType::FLOAT_TO_FLOAT_EXTERNAL)
+        if (sourceComponentType != GL_UNSIGNED_INT && destComponentType != GL_UNSIGNED_INT &&
+            sourceTextureType != gl::TextureType::Rectangle)
         {
+            // Simple case, float-to-float with 2D or external textures.  Only needs ESSL/GLSL 100
             version                   = "100";
             vsInputVariableQualifier  = "attribute";
             vsOutputVariableQualifier = "varying";
@@ -1119,38 +1136,41 @@
             std::string vsSourceStr  = vsSourceStream.str();
             const char *vsSourceCStr = vsSourceStr.c_str();
 
-            GLuint vs = mFunctions->createShader(GL_VERTEX_SHADER);
-            mFunctions->shaderSource(vs, 1, &vsSourceCStr, nullptr);
-            mFunctions->compileShader(vs);
-            ANGLE_TRY(CheckCompileStatus(contextGL, mFunctions, vs));
+            GLuint vs = ANGLE_GL_TRY(context, mFunctions->createShader(GL_VERTEX_SHADER));
+            ANGLE_GL_TRY(context, mFunctions->shaderSource(vs, 1, &vsSourceCStr, nullptr));
+            ANGLE_GL_TRY(context, mFunctions->compileShader(vs));
+            ANGLE_TRY(CheckCompileStatus(context, mFunctions, vs));
 
-            mFunctions->attachShader(result.program, vs);
-            mFunctions->deleteShader(vs);
+            ANGLE_GL_TRY(context, mFunctions->attachShader(result.program, vs));
+            ANGLE_GL_TRY(context, mFunctions->deleteShader(vs));
         }
 
         {
             // Sampling texture uniform changes depending on source texture type.
             std::string samplerType;
-            std::string samplerResultType;
-            std::string extensionRequirements;
-            switch (type)
+            switch (sourceTextureType)
             {
-                case BlitProgramType::FLOAT_TO_FLOAT:
-                case BlitProgramType::FLOAT_TO_UINT:
-                    samplerType       = "sampler2D";
-                    samplerResultType = "vec4";
+                case gl::TextureType::_2D:
+                    switch (sourceComponentType)
+                    {
+                        case GL_UNSIGNED_INT:
+                            samplerType = "usampler2D";
+                            break;
+
+                        default:  // Float type
+                            samplerType = "sampler2D";
+                            break;
+                    }
                     break;
 
-                case BlitProgramType::FLOAT_TO_FLOAT_EXTERNAL:
-                case BlitProgramType::FLOAT_TO_UINT_EXTERNAL:
-                    samplerType           = "samplerExternalOES";
-                    samplerResultType     = "vec4";
-                    extensionRequirements = "#extension GL_OES_EGL_image_external : require";
+                case gl::TextureType::External:
+                    ASSERT(sourceComponentType != GL_UNSIGNED_INT);
+                    samplerType = "samplerExternalOES";
                     break;
 
-                case BlitProgramType::UINT_TO_UINT:
-                    samplerType       = "usampler2D";
-                    samplerResultType = "uvec4";
+                case gl::TextureType::Rectangle:
+                    ASSERT(sourceComponentType != GL_UNSIGNED_INT);
+                    samplerType = "sampler2DRect";
                     break;
 
                 default:
@@ -1158,30 +1178,65 @@
                     break;
             }
 
+            std::string samplerResultType;
+            switch (sourceComponentType)
+            {
+                case GL_UNSIGNED_INT:
+                    samplerResultType = "uvec4";
+                    break;
+
+                default:  // Float type
+                    samplerResultType = "vec4";
+                    break;
+            }
+
+            std::string extensionRequirements;
+            switch (sourceTextureType)
+            {
+                case gl::TextureType::External:
+                    extensionRequirements = "#extension GL_OES_EGL_image_external : require";
+                    break;
+
+                case gl::TextureType::Rectangle:
+                    if (mFunctions->hasGLExtension("GL_ARB_texture_rectangle"))
+                    {
+                        extensionRequirements = "#extension GL_ARB_texture_rectangle : require";
+                    }
+                    else
+                    {
+                        ASSERT(mFunctions->isAtLeastGL(gl::Version(3, 1)));
+                    }
+                    break;
+
+                default:
+                    break;
+            }
+
             // Output variables depend on the output type
             std::string outputType;
             std::string outputVariableName;
             std::string outputMultiplier;
-            switch (type)
+            switch (destComponentType)
             {
-                case BlitProgramType::FLOAT_TO_FLOAT:
-                case BlitProgramType::FLOAT_TO_FLOAT_EXTERNAL:
-                    ASSERT(version == "100");
-                    outputType         = "";
-                    outputVariableName = "gl_FragColor";
-                    outputMultiplier   = "1.0";
-                    break;
-
-                case BlitProgramType::FLOAT_TO_UINT:
-                case BlitProgramType::FLOAT_TO_UINT_EXTERNAL:
-                case BlitProgramType::UINT_TO_UINT:
+                case GL_UNSIGNED_INT:
                     outputType         = "uvec4";
                     outputVariableName = "outputUint";
                     outputMultiplier   = "255.0";
                     break;
 
-                default:
-                    UNREACHABLE();
+                default:  //  float type
+                    if (version == "100")
+                    {
+                        outputType         = "";
+                        outputVariableName = "gl_FragColor";
+                        outputMultiplier   = "1.0";
+                    }
+                    else
+                    {
+                        outputType         = "vec4";
+                        outputVariableName = "outputFloat";
+                        outputMultiplier   = "1.0";
+                    }
                     break;
             }
 
@@ -1207,9 +1262,24 @@
             fsSourceStream << "void main()\n";
             fsSourceStream << "{\n";
 
-            // discard if the texcoord is outside (0, 1)^2 so the blitframebuffer workaround
-            // doesn't write when the point sampled is outside of the source framebuffer.
-            fsSourceStream << "    if (clamp(v_texcoord, vec2(0.0), vec2(1.0)) != v_texcoord)\n";
+            std::string maxTexcoord;
+            switch (sourceTextureType)
+            {
+                case gl::TextureType::Rectangle:
+                    // Valid texcoords are within source texture size
+                    maxTexcoord = "vec2(textureSize(u_source_texture))";
+                    break;
+
+                default:
+                    // Valid texcoords are in [0, 1]
+                    maxTexcoord = "vec2(1.0)";
+                    break;
+            }
+
+            // discard if the texcoord is invalid so the blitframebuffer workaround doesn't
+            // write when the point sampled is outside of the source framebuffer.
+            fsSourceStream << "    if (clamp(v_texcoord, vec2(0.0), " << maxTexcoord
+                           << ") != v_texcoord)\n";
             fsSourceStream << "    {\n";
             fsSourceStream << "        discard;\n";
             fsSourceStream << "    }\n";
@@ -1238,26 +1308,28 @@
             std::string fsSourceStr  = fsSourceStream.str();
             const char *fsSourceCStr = fsSourceStr.c_str();
 
-            GLuint fs = mFunctions->createShader(GL_FRAGMENT_SHADER);
-            mFunctions->shaderSource(fs, 1, &fsSourceCStr, nullptr);
-            mFunctions->compileShader(fs);
-            ANGLE_TRY(CheckCompileStatus(contextGL, mFunctions, fs));
+            GLuint fs = ANGLE_GL_TRY(context, mFunctions->createShader(GL_FRAGMENT_SHADER));
+            ANGLE_GL_TRY(context, mFunctions->shaderSource(fs, 1, &fsSourceCStr, nullptr));
+            ANGLE_GL_TRY(context, mFunctions->compileShader(fs));
+            ANGLE_TRY(CheckCompileStatus(context, mFunctions, fs));
 
-            mFunctions->attachShader(result.program, fs);
-            mFunctions->deleteShader(fs);
+            ANGLE_GL_TRY(context, mFunctions->attachShader(result.program, fs));
+            ANGLE_GL_TRY(context, mFunctions->deleteShader(fs));
         }
 
-        mFunctions->linkProgram(result.program);
-        ANGLE_TRY(CheckLinkStatus(contextGL, mFunctions, result.program));
+        ANGLE_GL_TRY(context, mFunctions->linkProgram(result.program));
+        ANGLE_TRY(CheckLinkStatus(context, mFunctions, result.program));
 
-        result.sourceTextureLocation =
-            mFunctions->getUniformLocation(result.program, "u_source_texture");
-        result.scaleLocation  = mFunctions->getUniformLocation(result.program, "u_scale");
-        result.offsetLocation = mFunctions->getUniformLocation(result.program, "u_offset");
-        result.multiplyAlphaLocation =
-            mFunctions->getUniformLocation(result.program, "u_multiply_alpha");
-        result.unMultiplyAlphaLocation =
-            mFunctions->getUniformLocation(result.program, "u_unmultiply_alpha");
+        result.sourceTextureLocation = ANGLE_GL_TRY(
+            context, mFunctions->getUniformLocation(result.program, "u_source_texture"));
+        result.scaleLocation =
+            ANGLE_GL_TRY(context, mFunctions->getUniformLocation(result.program, "u_scale"));
+        result.offsetLocation =
+            ANGLE_GL_TRY(context, mFunctions->getUniformLocation(result.program, "u_offset"));
+        result.multiplyAlphaLocation = ANGLE_GL_TRY(
+            context, mFunctions->getUniformLocation(result.program, "u_multiply_alpha"));
+        result.unMultiplyAlphaLocation = ANGLE_GL_TRY(
+            context, mFunctions->getUniformLocation(result.program, "u_unmultiply_alpha"));
     }
 
     *program = &result;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.h
index 75e78df..4677391 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/BlitGL.h
@@ -107,7 +107,8 @@
                                             bool unpackPremultiplyAlpha,
                                             bool unpackUnmultiplyAlpha);
 
-    angle::Result copyTexSubImage(TextureGL *source,
+    angle::Result copyTexSubImage(const gl::Context *context,
+                                  TextureGL *source,
                                   size_t sourceLevel,
                                   TextureGL *dest,
                                   gl::TextureTarget destTarget,
@@ -116,25 +117,31 @@
                                   const gl::Offset &destOffset,
                                   bool *copySucceededOut);
 
-    angle::Result clearRenderableTexture(TextureGL *source,
+    angle::Result clearRenderableTexture(const gl::Context *context,
+                                         TextureGL *source,
                                          GLenum sizedInternalFormat,
                                          int numTextureLayers,
                                          const gl::ImageIndex &imageIndex,
                                          bool *clearSucceededOut);
 
-    angle::Result clearRenderbuffer(RenderbufferGL *source, GLenum sizedInternalFormat);
+    angle::Result clearRenderbuffer(const gl::Context *context,
+                                    RenderbufferGL *source,
+                                    GLenum sizedInternalFormat);
 
-    angle::Result clearFramebuffer(FramebufferGL *source);
+    angle::Result clearFramebuffer(const gl::Context *context, FramebufferGL *source);
 
-    angle::Result clearRenderableTextureAlphaToOne(GLuint texture,
+    angle::Result clearRenderableTextureAlphaToOne(const gl::Context *context,
+                                                   GLuint texture,
                                                    gl::TextureTarget target,
                                                    size_t level);
 
-    angle::Result initializeResources();
+    angle::Result initializeResources(const gl::Context *context);
 
   private:
-    void orphanScratchTextures();
-    void setScratchTextureParameter(GLenum param, GLenum value);
+    angle::Result orphanScratchTextures(const gl::Context *context);
+    angle::Result setScratchTextureParameter(const gl::Context *context,
+                                             GLenum param,
+                                             GLenum value);
 
     const FunctionsGL *mFunctions;
     const angle::FeaturesGL &mFeatures;
@@ -150,22 +157,14 @@
         GLint unMultiplyAlphaLocation = -1;
     };
 
-    enum class BlitProgramType
-    {
-        FLOAT_TO_FLOAT,
-        FLOAT_TO_FLOAT_EXTERNAL,
-        FLOAT_TO_UINT,
-        FLOAT_TO_UINT_EXTERNAL,
-        UINT_TO_UINT,
-    };
-
-    static BlitProgramType getBlitProgramType(gl::TextureType sourceTextureType,
-                                              GLenum sourceComponentType,
-                                              GLenum destComponentType);
     angle::Result getBlitProgram(const gl::Context *context,
-                                 BlitProgramType type,
+                                 gl::TextureType sourceTextureType,
+                                 GLenum sourceComponentType,
+                                 GLenum destComponentType,
                                  BlitProgram **program);
 
+    // SourceType, SourceComponentType, DestComponentType
+    using BlitProgramType = std::tuple<gl::TextureType, GLenum, GLenum>;
     std::map<BlitProgramType, BlitProgram> mBlitPrograms;
 
     GLuint mScratchTextures[2];
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cpp
index f93fe03..dd22dd8 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.cpp
@@ -91,8 +91,14 @@
 
 RenderbufferImpl *ContextGL::createRenderbuffer(const gl::RenderbufferState &state)
 {
-    return new RenderbufferGL(state, getFunctions(), getFeaturesGL(), getStateManager(),
-                              mRenderer->getBlitter(), getNativeTextureCaps());
+    const FunctionsGL *functions = getFunctions();
+    StateManagerGL *stateManager = getStateManager();
+
+    GLuint renderbuffer = 0;
+    functions->genRenderbuffers(1, &renderbuffer);
+    stateManager->bindRenderbuffer(GL_RENDERBUFFER, renderbuffer);
+
+    return new RenderbufferGL(state, renderbuffer);
 }
 
 BufferImpl *ContextGL::createBuffer(const gl::BufferState &state)
@@ -221,6 +227,10 @@
 
         ANGLE_TRY(vaoGL->syncClientSideData(context, program->getActiveAttribLocationsMask(), first,
                                             count, instanceCount));
+
+#if defined(ANGLE_STATE_VALIDATION_ENABLED)
+        vaoGL->validateState();
+#endif  // ANGLE_STATE_VALIDATION_ENABLED
     }
 
     return angle::Result::Continue;
@@ -252,6 +262,11 @@
         *outIndices = indices;
     }
 
+#if defined(ANGLE_STATE_VALIDATION_ENABLED)
+    const VertexArrayGL *vaoGL = GetImplAs<VertexArrayGL>(vao);
+    vaoGL->validateState();
+#endif  // ANGLE_STATE_VALIDATION_ENABLED
+
     return angle::Result::Continue;
 }
 
@@ -264,6 +279,10 @@
     const bool usesMultiview    = program->usesMultiview();
     const GLsizei instanceCount = usesMultiview ? program->getNumViews() : 0;
 
+#if defined(ANGLE_STATE_VALIDATION_ENABLED)
+    validateState();
+#endif
+
     ANGLE_TRY(setDrawArraysState(context, first, count, instanceCount));
     if (!usesMultiview)
     {
@@ -294,6 +313,82 @@
     return angle::Result::Continue;
 }
 
+gl::AttributesMask ContextGL::updateAttributesForBaseInstance(const gl::Program *program,
+                                                              GLuint baseInstance)
+{
+    gl::AttributesMask attribToUpdateMask;
+
+    if (baseInstance != 0)
+    {
+        const FunctionsGL *functions = getFunctions();
+        const auto &attribs          = mState.getVertexArray()->getVertexAttributes();
+        const auto &bindings         = mState.getVertexArray()->getVertexBindings();
+        for (GLuint attribIndex = 0; attribIndex < gl::MAX_VERTEX_ATTRIBS; attribIndex++)
+        {
+            const gl::VertexAttribute &attrib = attribs[attribIndex];
+            const gl::VertexBinding &binding  = bindings[attrib.bindingIndex];
+            if (program->isAttribLocationActive(attribIndex) && binding.getDivisor() != 0)
+            {
+                attribToUpdateMask.set(attribIndex);
+                const char *p             = static_cast<const char *>(attrib.pointer);
+                const size_t sourceStride = gl::ComputeVertexAttributeStride(attrib, binding);
+                const void *newPointer    = p + sourceStride * baseInstance;
+
+                const BufferGL *buffer = GetImplAs<BufferGL>(binding.getBuffer().get());
+                // We often stream data from scratch buffers when client side data is being used
+                // and that information is in VertexArrayGL.
+                // Assert that the buffer is non-null because this case isn't handled.
+                ASSERT(buffer);
+                getStateManager()->bindBuffer(gl::BufferBinding::Array, buffer->getBufferID());
+                if (attrib.format->isPureInt())
+                {
+                    functions->vertexAttribIPointer(attribIndex, attrib.format->channelCount,
+                                                    gl::ToGLenum(attrib.format->vertexAttribType),
+                                                    attrib.vertexAttribArrayStride, newPointer);
+                }
+                else
+                {
+                    functions->vertexAttribPointer(attribIndex, attrib.format->channelCount,
+                                                   gl::ToGLenum(attrib.format->vertexAttribType),
+                                                   attrib.format->isNorm(),
+                                                   attrib.vertexAttribArrayStride, newPointer);
+                }
+            }
+        }
+    }
+
+    return attribToUpdateMask;
+}
+
+void ContextGL::resetUpdatedAttributes(gl::AttributesMask attribMask)
+{
+    const FunctionsGL *functions = getFunctions();
+    for (size_t attribIndex : attribMask)
+    {
+        const gl::VertexAttribute &attrib =
+            mState.getVertexArray()->getVertexAttributes()[attribIndex];
+        const gl::VertexBinding &binding =
+            (mState.getVertexArray()->getVertexBindings())[attrib.bindingIndex];
+        getStateManager()->bindBuffer(
+            gl::BufferBinding::Array,
+            GetImplAs<BufferGL>(binding.getBuffer().get())->getBufferID());
+        if (attrib.format->isPureInt())
+        {
+            functions->vertexAttribIPointer(static_cast<GLuint>(attribIndex),
+                                            attrib.format->channelCount,
+                                            gl::ToGLenum(attrib.format->vertexAttribType),
+                                            attrib.vertexAttribArrayStride, attrib.pointer);
+        }
+        else
+        {
+            functions->vertexAttribPointer(
+                static_cast<GLuint>(attribIndex), attrib.format->channelCount,
+                gl::ToGLenum(attrib.format->vertexAttribType), attrib.format->isNorm(),
+                attrib.vertexAttribArrayStride, attrib.pointer);
+        }
+    }
+}
+
 angle::Result ContextGL::drawArraysInstancedBaseInstance(const gl::Context *context,
                                                          gl::PrimitiveMode mode,
                                                          GLint first,
@@ -301,7 +396,39 @@
                                                          GLsizei instanceCount,
                                                          GLuint baseInstance)
 {
-    return drawArraysInstanced(context, mode, first, count, instanceCount);
+    GLsizei adjustedInstanceCount = instanceCount;
+    const gl::Program *program    = context->getState().getProgram();
+    if (program->usesMultiview())
+    {
+        adjustedInstanceCount *= program->getNumViews();
+    }
+
+    ANGLE_TRY(setDrawArraysState(context, first, count, adjustedInstanceCount));
+
+    const FunctionsGL *functions = getFunctions();
+
+    if (functions->drawArraysInstancedBaseInstance)
+    {
+        // GL 4.2+ or GL_EXT_base_instance
+        functions->drawArraysInstancedBaseInstance(ToGLenum(mode), first, count,
+                                                   adjustedInstanceCount, baseInstance);
+    }
+    else
+    {
+        // GL 3.3+ or GLES 3.2+
+        // TODO(http://anglebug.com/3910): This is a temporary solution by setting and resetting
+        // pointer offset calling vertexAttribPointer Will refactor stateCache and pass baseInstance
+        // to setDrawArraysState to set pointer offset
+
+        gl::AttributesMask attribToResetMask =
+            updateAttributesForBaseInstance(program, baseInstance);
+
+        functions->drawArraysInstanced(ToGLenum(mode), first, count, adjustedInstanceCount);
+
+        resetUpdatedAttributes(attribToResetMask);
+    }
+
+    return angle::Result::Continue;
 }
 
 angle::Result ContextGL::drawElements(const gl::Context *context,
@@ -316,6 +443,10 @@
     const GLsizei instanceCount = usesMultiview ? program->getNumViews() : 0;
     const void *drawIndexPtr    = nullptr;
 
+#if defined(ANGLE_STATE_VALIDATION_ENABLED)
+    validateState();
+#endif  // ANGLE_STATE_VALIDATION_ENABLED
+
     ANGLE_TRY(setDrawElementsState(context, count, type, indices, instanceCount, &drawIndexPtr));
     if (!usesMultiview)
     {
@@ -373,10 +504,26 @@
 
     const FunctionsGL *functions = getFunctions();
 
-    // GLES 3.2+ or GL 3.2+
-    // or GL_OES_draw_elements_base_vertex / GL_EXT_draw_elements_base_vertex
-    functions->drawElementsInstancedBaseVertex(ToGLenum(mode), count, ToGLenum(type),
-                                               drawIndexPointer, adjustedInstanceCount, baseVertex);
+    if (functions->drawElementsInstancedBaseVertexBaseInstance)
+    {
+        // GL 4.2+ or GL_EXT_base_instance
+        functions->drawElementsInstancedBaseVertexBaseInstance(
+            ToGLenum(mode), count, ToGLenum(type), drawIndexPointer, adjustedInstanceCount,
+            baseVertex, baseInstance);
+    }
+    else
+    {
+        // GL 3.3+ or GLES 3.2+
+        // TODO(http://anglebug.com/3910): same as above
+        gl::AttributesMask attribToResetMask =
+            updateAttributesForBaseInstance(program, baseInstance);
+
+        functions->drawElementsInstancedBaseVertex(ToGLenum(mode), count, ToGLenum(type),
+                                                   drawIndexPointer, adjustedInstanceCount,
+                                                   baseVertex);
+
+        resetUpdatedAttributes(attribToResetMask);
+    }
 
     return angle::Result::Continue;
 }
@@ -656,4 +803,10 @@
     mRenderer->getStateManager()->invalidateTexture(target);
 }
 
+void ContextGL::validateState() const
+{
+    const StateManagerGL *stateManager = mRenderer->getStateManager();
+    stateManager->validateState();
+}
+
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.h
index 5080d62..06b174f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ContextGL.h
@@ -242,6 +242,8 @@
 
     void invalidateTexture(gl::TextureType target) override;
 
+    void validateState() const;
+
   private:
     angle::Result setDrawArraysState(const gl::Context *context,
                                      GLint first,
@@ -255,6 +257,10 @@
                                        GLsizei instanceCount,
                                        const void **outIndices);
 
+    gl::AttributesMask updateAttributesForBaseInstance(const gl::Program *program,
+                                                       GLuint baseInstance);
+    void resetUpdatedAttributes(gl::AttributesMask attribMask);
+
   protected:
     std::shared_ptr<RendererGL> mRenderer;
 };
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.cpp
index 34f980a..e3822ea 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ProgramGL.cpp
@@ -229,8 +229,11 @@
         std::vector<std::string> transformFeedbackVaryingMappedNames;
         for (const auto &tfVarying : mState.getTransformFeedbackVaryingNames())
         {
+            gl::ShaderType tfShaderType = mState.hasLinkedShaderStage(gl::ShaderType::Geometry)
+                                              ? gl::ShaderType::Geometry
+                                              : gl::ShaderType::Vertex;
             std::string tfVaryingMappedName =
-                mState.getAttachedShader(gl::ShaderType::Vertex)
+                mState.getAttachedShader(tfShaderType)
                     ->getTransformFeedbackVaryingMappedName(tfVarying);
             transformFeedbackVaryingMappedNames.push_back(tfVaryingMappedName);
         }
@@ -267,7 +270,7 @@
         }
 
         // Bind attribute locations to match the GL layer.
-        for (const sh::ShaderVariable &attribute : mState.getAttributes())
+        for (const sh::ShaderVariable &attribute : mState.getProgramInputs())
         {
             if (!attribute.active || attribute.isBuiltIn())
             {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.cpp
index 1973bab..2a31625 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.cpp
@@ -23,27 +23,20 @@
 
 namespace rx
 {
-RenderbufferGL::RenderbufferGL(const gl::RenderbufferState &state,
-                               const FunctionsGL *functions,
-                               const angle::FeaturesGL &features,
-                               StateManagerGL *stateManager,
-                               BlitGL *blitter,
-                               const gl::TextureCapsMap &textureCaps)
-    : RenderbufferImpl(state),
-      mFunctions(functions),
-      mFeatures(features),
-      mStateManager(stateManager),
-      mBlitter(blitter),
-      mTextureCaps(textureCaps),
-      mRenderbufferID(0)
+RenderbufferGL::RenderbufferGL(const gl::RenderbufferState &state, GLuint id)
+    : RenderbufferImpl(state), mRenderbufferID(id)
 {
-    mFunctions->genRenderbuffers(1, &mRenderbufferID);
-    mStateManager->bindRenderbuffer(GL_RENDERBUFFER, mRenderbufferID);
 }
 
 RenderbufferGL::~RenderbufferGL()
 {
-    mStateManager->deleteRenderbuffer(mRenderbufferID);
+    ASSERT(mRenderbufferID == 0);
+}
+
+void RenderbufferGL::onDestroy(const gl::Context *context)
+{
+    StateManagerGL *stateManager = GetStateManagerGL(context);
+    stateManager->deleteRenderbuffer(mRenderbufferID);
     mRenderbufferID = 0;
 }
 
@@ -52,12 +45,18 @@
                                          size_t width,
                                          size_t height)
 {
-    mStateManager->bindRenderbuffer(GL_RENDERBUFFER, mRenderbufferID);
+    const FunctionsGL *functions      = GetFunctionsGL(context);
+    StateManagerGL *stateManager      = GetStateManagerGL(context);
+    const angle::FeaturesGL &features = GetFeaturesGL(context);
+
+    stateManager->bindRenderbuffer(GL_RENDERBUFFER, mRenderbufferID);
 
     nativegl::RenderbufferFormat renderbufferFormat =
-        nativegl::GetRenderbufferFormat(mFunctions, mFeatures, internalformat);
-    mFunctions->renderbufferStorage(GL_RENDERBUFFER, renderbufferFormat.internalFormat,
-                                    static_cast<GLsizei>(width), static_cast<GLsizei>(height));
+        nativegl::GetRenderbufferFormat(functions, features, internalformat);
+    ANGLE_GL_TRY_ALWAYS_CHECK(
+        context,
+        functions->renderbufferStorage(GL_RENDERBUFFER, renderbufferFormat.internalFormat,
+                                       static_cast<GLsizei>(width), static_cast<GLsizei>(height)));
 
     mNativeInternalFormat = renderbufferFormat.internalFormat;
 
@@ -70,28 +69,19 @@
                                                     size_t width,
                                                     size_t height)
 {
-    mStateManager->bindRenderbuffer(GL_RENDERBUFFER, mRenderbufferID);
+    const FunctionsGL *functions      = GetFunctionsGL(context);
+    StateManagerGL *stateManager      = GetStateManagerGL(context);
+    const angle::FeaturesGL &features = GetFeaturesGL(context);
+
+    stateManager->bindRenderbuffer(GL_RENDERBUFFER, mRenderbufferID);
 
     nativegl::RenderbufferFormat renderbufferFormat =
-        nativegl::GetRenderbufferFormat(mFunctions, mFeatures, internalformat);
-    mFunctions->renderbufferStorageMultisample(
-        GL_RENDERBUFFER, static_cast<GLsizei>(samples), renderbufferFormat.internalFormat,
-        static_cast<GLsizei>(width), static_cast<GLsizei>(height));
-
-    const gl::TextureCaps &formatCaps = mTextureCaps.get(internalformat);
-    if (samples > formatCaps.getMaxSamples())
-    {
-        // Before version 4.2, it is unknown if the specific internal format can support the
-        // requested number of samples.  It is expected that GL_OUT_OF_MEMORY is returned if the
-        // renderbuffer cannot be created.
-        GLenum error = GL_NO_ERROR;
-        do
-        {
-            error = mFunctions->getError();
-            ANGLE_CHECK_GL_ALLOC(GetImplAs<ContextGL>(context), error != GL_OUT_OF_MEMORY);
-            ASSERT(error == GL_NO_ERROR);
-        } while (error != GL_NO_ERROR);
-    }
+        nativegl::GetRenderbufferFormat(functions, features, internalformat);
+    ANGLE_GL_TRY_ALWAYS_CHECK(
+        context,
+        functions->renderbufferStorageMultisample(
+            GL_RENDERBUFFER, static_cast<GLsizei>(samples), renderbufferFormat.internalFormat,
+            static_cast<GLsizei>(width), static_cast<GLsizei>(height)));
 
     mNativeInternalFormat = renderbufferFormat.internalFormat;
 
@@ -113,7 +103,8 @@
 angle::Result RenderbufferGL::initializeContents(const gl::Context *context,
                                                  const gl::ImageIndex &imageIndex)
 {
-    return mBlitter->clearRenderbuffer(this, mNativeInternalFormat);
+    BlitGL *blitter = GetBlitGL(context);
+    return blitter->clearRenderbuffer(context, this, mNativeInternalFormat);
 }
 
 GLenum RenderbufferGL::getNativeInternalFormat() const
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.h
index 863dba4..2457c2d 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/RenderbufferGL.h
@@ -31,14 +31,11 @@
 class RenderbufferGL : public RenderbufferImpl
 {
   public:
-    RenderbufferGL(const gl::RenderbufferState &state,
-                   const FunctionsGL *functions,
-                   const angle::FeaturesGL &features,
-                   StateManagerGL *stateManager,
-                   BlitGL *blitter,
-                   const gl::TextureCapsMap &textureCaps);
+    RenderbufferGL(const gl::RenderbufferState &state, GLuint id);
     ~RenderbufferGL() override;
 
+    void onDestroy(const gl::Context *context) override;
+
     angle::Result setStorage(const gl::Context *context,
                              GLenum internalformat,
                              size_t width,
@@ -57,12 +54,6 @@
     GLenum getNativeInternalFormat() const;
 
   private:
-    const FunctionsGL *mFunctions;
-    const angle::FeaturesGL &mFeatures;
-    StateManagerGL *mStateManager;
-    BlitGL *mBlitter;
-    const gl::TextureCapsMap &mTextureCaps;
-
     GLuint mRenderbufferID;
 
     GLenum mNativeInternalFormat;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ShaderGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ShaderGL.cpp
index 4056775..e70c28c 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ShaderGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/ShaderGL.cpp
@@ -338,6 +338,11 @@
         additionalOptions |= SH_ADD_BASE_VERTEX_TO_VERTEX_ID;
     }
 
+    if (features.unfoldShortCircuits.enabled)
+    {
+        additionalOptions |= SH_UNFOLD_SHORT_CIRCUIT;
+    }
+
     options |= additionalOptions;
 
     auto workerThreadPool = context->getWorkerThreadPool();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.cpp
index c0fbbe0..067c625 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.cpp
@@ -34,6 +34,28 @@
 namespace rx
 {
 
+namespace
+{
+
+static void ValidateStateHelper(const FunctionsGL *functions,
+                                const GLuint localValue,
+                                const GLenum pname,
+                                const char *localName,
+                                const char *driverName)
+{
+    GLint queryValue;
+    functions->getIntegerv(pname, &queryValue);
+    if (localValue != static_cast<GLuint>(queryValue))
+    {
+        WARN() << localName << " (" << localValue << ") != " << driverName << " (" << queryValue
+               << ")";
+        // Re-add ASSERT: http://anglebug.com/3900
+        // ASSERT(false);
+    }
+}
+
+}  // anonymous namespace
+
 StateManagerGL::IndexedBufferBinding::IndexedBufferBinding() : offset(0), size(0), buffer(0) {}
 
 StateManagerGL::StateManagerGL(const FunctionsGL *functions,
@@ -356,6 +378,9 @@
 
 void StateManagerGL::bindBufferBase(gl::BufferBinding target, size_t index, GLuint buffer)
 {
+    // Transform feedback buffer bindings are tracked in TransformFeedbackGL
+    ASSERT(target != gl::BufferBinding::TransformFeedback);
+
     ASSERT(index < mIndexedBuffers[target].size());
     auto &binding = mIndexedBuffers[target][index];
     if (binding.buffer != buffer || binding.offset != static_cast<size_t>(-1) ||
@@ -364,6 +389,7 @@
         binding.buffer = buffer;
         binding.offset = static_cast<size_t>(-1);
         binding.size   = static_cast<size_t>(-1);
+        mBuffers[target] = buffer;
         mFunctions->bindBufferBase(gl::ToGLenum(target), static_cast<GLuint>(index), buffer);
     }
 }
@@ -374,12 +400,16 @@
                                      size_t offset,
                                      size_t size)
 {
+    // Transform feedback buffer bindings are tracked in TransformFeedbackGL
+    ASSERT(target != gl::BufferBinding::TransformFeedback);
+
     auto &binding = mIndexedBuffers[target][index];
     if (binding.buffer != buffer || binding.offset != offset || binding.size != size)
     {
         binding.buffer = buffer;
         binding.offset = offset;
         binding.size   = size;
+        mBuffers[target] = buffer;
         mFunctions->bindBufferRange(gl::ToGLenum(target), static_cast<GLuint>(index), buffer,
                                     offset, size);
     }
@@ -2113,4 +2143,41 @@
         mCurrentTransformFeedback = nullptr;
     }
 }
+
+void StateManagerGL::validateState() const
+{
+    // Current program
+    ValidateStateHelper(mFunctions, mProgram, GL_CURRENT_PROGRAM, "mProgram", "GL_CURRENT_PROGRAM");
+
+    // Buffers
+    for (gl::BufferBinding bindingType : angle::AllEnums<gl::BufferBinding>())
+    {
+        // These binding types need compute support to be queried
+        if (bindingType == gl::BufferBinding::AtomicCounter ||
+            bindingType == gl::BufferBinding::DispatchIndirect ||
+            bindingType == gl::BufferBinding::ShaderStorage)
+        {
+            if (!nativegl::SupportsCompute(mFunctions))
+            {
+                continue;
+            }
+        }
+
+        // Transform feedback buffer bindings are tracked in TransformFeedbackGL
+        if (bindingType == gl::BufferBinding::TransformFeedback)
+        {
+            continue;
+        }
+
+        GLenum bindingTypeGL  = nativegl::GetBufferBindingQuery(bindingType);
+        std::string localName = "mBuffers[" + ToString(bindingType) + "]";
+        ValidateStateHelper(mFunctions, mBuffers[bindingType], bindingTypeGL, localName.c_str(),
+                            nativegl::GetBufferBindingString(bindingType).c_str());
+    }
+
+    // Vertex array object
+    ValidateStateHelper(mFunctions, mVAO, GL_VERTEX_ARRAY_BINDING, "mVAO",
+                        "GL_VERTEX_ARRAY_BINDING");
+}
+
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.h
index daeaa07..0bf40ed 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/StateManagerGL.h
@@ -184,6 +184,8 @@
     }
     GLuint getBufferID(gl::BufferBinding binding) const { return mBuffers[binding]; }
 
+    void validateState() const;
+
   private:
     void setTextureCubemapSeamlessEnabled(bool enabled);
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/SurfaceGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/SurfaceGL.cpp
index c35897e..c9b98ea 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/SurfaceGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/SurfaceGL.cpp
@@ -41,7 +41,7 @@
     ASSERT(framebufferGL->isDefault());
 
     BlitGL *blitter = GetBlitGL(context);
-    ANGLE_TRY(blitter->clearFramebuffer(framebufferGL));
+    ANGLE_TRY(blitter->clearFramebuffer(context, framebufferGL));
 
     return angle::Result::Continue;
 }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TextureGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TextureGL.cpp
index b9d664e..5705110 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TextureGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/TextureGL.cpp
@@ -68,13 +68,22 @@
     return format == GL_DEPTH_COMPONENT || format == GL_DEPTH_STENCIL;
 }
 
-LevelInfoGL GetLevelInfo(GLenum originalInternalFormat, GLenum destinationInternalFormat)
+bool GetEmulatedAlphaChannel(const angle::FeaturesGL &features, GLenum internalFormat)
+{
+    return features.rgbDXT1TexturesSampleZeroAlpha.enabled &&
+           internalFormat == GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
+}
+
+LevelInfoGL GetLevelInfo(const angle::FeaturesGL &features,
+                         GLenum originalInternalFormat,
+                         GLenum destinationInternalFormat)
 {
     GLenum originalFormat    = gl::GetUnsizedFormat(originalInternalFormat);
     GLenum destinationFormat = gl::GetUnsizedFormat(destinationInternalFormat);
     return LevelInfoGL(originalFormat, destinationInternalFormat,
                        GetDepthStencilWorkaround(originalFormat),
-                       GetLUMAWorkaroundInfo(originalFormat, destinationFormat), false);
+                       GetLUMAWorkaroundInfo(originalFormat, destinationFormat),
+                       GetEmulatedAlphaChannel(features, originalFormat));
 }
 
 gl::Texture::DirtyBits GetLevelWorkaroundDirtyBits()
@@ -257,7 +266,7 @@
     }
 
     setLevelInfo(context, target, level, 1,
-                 GetLevelInfo(internalFormat, texImageFormat.internalFormat));
+                 GetLevelInfo(features, internalFormat, texImageFormat.internalFormat));
 
     return angle::Result::Continue;
 }
@@ -298,7 +307,7 @@
     size_t level             = static_cast<size_t>(index.getLevelIndex());
 
     ASSERT(getLevelInfo(target, level).lumaWorkaround.enabled ==
-           GetLevelInfo(format, texSubImageFormat.format).lumaWorkaround.enabled);
+           GetLevelInfo(features, format, texSubImageFormat.format).lumaWorkaround.enabled);
 
     stateManager->bindTexture(getType(), mTextureID);
     if (features.unpackOverlappingRowsSeparatelyUnpackBuffer.enabled && unpackBuffer &&
@@ -541,7 +550,8 @@
                                                      static_cast<GLsizei>(imageSize), pixels));
     }
 
-    LevelInfoGL levelInfo = GetLevelInfo(internalFormat, compressedTexImageFormat.internalFormat);
+    LevelInfoGL levelInfo =
+        GetLevelInfo(features, internalFormat, compressedTexImageFormat.internalFormat);
     ASSERT(!levelInfo.lumaWorkaround.enabled);
     setLevelInfo(context, target, level, 1, levelInfo);
 
@@ -586,8 +596,9 @@
                          static_cast<GLsizei>(imageSize), pixels));
     }
 
-    ASSERT(!getLevelInfo(target, level).lumaWorkaround.enabled &&
-           !GetLevelInfo(format, compressedTexSubImageFormat.format).lumaWorkaround.enabled);
+    ASSERT(
+        !getLevelInfo(target, level).lumaWorkaround.enabled &&
+        !GetLevelInfo(features, format, compressedTexSubImageFormat.format).lumaWorkaround.enabled);
 
     return angle::Result::Continue;
 }
@@ -676,7 +687,8 @@
             }
         }
 
-        LevelInfoGL levelInfo = GetLevelInfo(internalFormat, copyTexImageFormat.internalFormat);
+        LevelInfoGL levelInfo =
+            GetLevelInfo(features, internalFormat, copyTexImageFormat.internalFormat);
         gl::Offset destOffset(clippedArea.x - sourceArea.x, clippedArea.y - sourceArea.y, 0);
 
         if (levelInfo.lumaWorkaround.enabled)
@@ -867,8 +879,8 @@
         !destSRGB && sourceGL->getType() == gl::TextureType::_2D)
     {
         bool copySucceeded = false;
-        ANGLE_TRY(blitter->copyTexSubImage(sourceGL, sourceLevel, this, target, level, sourceArea,
-                                           destOffset, &copySucceeded));
+        ANGLE_TRY(blitter->copyTexSubImage(context, sourceGL, sourceLevel, this, target, level,
+                                           sourceArea, destOffset, &copySucceeded));
         if (copySucceeded)
         {
             return angle::Result::Continue;
@@ -1077,7 +1089,7 @@
     }
 
     setLevelInfo(context, type, 0, levels,
-                 GetLevelInfo(internalFormat, texStorageFormat.internalFormat));
+                 GetLevelInfo(features, internalFormat, texStorageFormat.internalFormat));
 
     return angle::Result::Continue;
 }
@@ -1098,7 +1110,7 @@
         nativegl::GetTexImageFormat(functions, features, internalFormat, format, type);
 
     setLevelInfo(context, target, level, 1,
-                 GetLevelInfo(internalFormat, texImageFormat.internalFormat));
+                 GetLevelInfo(features, internalFormat, texImageFormat.internalFormat));
     return angle::Result::Continue;
 }
 
@@ -1149,7 +1161,7 @@
     }
 
     setLevelInfo(context, type, 0, 1,
-                 GetLevelInfo(internalformat, texStorageFormat.internalFormat));
+                 GetLevelInfo(features, internalformat, texStorageFormat.internalFormat));
 
     return angle::Result::Continue;
 }
@@ -1191,7 +1203,7 @@
     }
 
     setLevelInfo(context, type, 0, levels,
-                 GetLevelInfo(internalFormat, texStorageFormat.internalFormat));
+                 GetLevelInfo(features, internalFormat, texStorageFormat.internalFormat));
 
     return angle::Result::Continue;
 }
@@ -1263,13 +1275,16 @@
                                            gl::TextureType type,
                                            egl::Image *image)
 {
+    const angle::FeaturesGL &features = GetFeaturesGL(context);
+
     ImageGL *imageGL = GetImplAs<ImageGL>(image);
 
     GLenum imageNativeInternalFormat = GL_NONE;
     ANGLE_TRY(imageGL->setTexture2D(context, type, this, &imageNativeInternalFormat));
 
-    setLevelInfo(context, type, 0, 1,
-                 GetLevelInfo(image->getFormat().info->internalFormat, imageNativeInternalFormat));
+    setLevelInfo(
+        context, type, 0, 1,
+        GetLevelInfo(features, image->getFormat().info->internalFormat, imageNativeInternalFormat));
 
     return angle::Result::Continue;
 }
@@ -1707,7 +1722,8 @@
 {
     ASSERT(levelCount > 0);
 
-    bool updateWorkarounds = levelInfo.depthStencilWorkaround || levelInfo.lumaWorkaround.enabled;
+    bool updateWorkarounds = levelInfo.depthStencilWorkaround || levelInfo.lumaWorkaround.enabled ||
+                             levelInfo.emulatedAlphaChannel;
 
     for (size_t i = level; i < level + levelCount; i++)
     {
@@ -1717,6 +1733,7 @@
 
         updateWorkarounds |= curLevelInfo.depthStencilWorkaround;
         updateWorkarounds |= curLevelInfo.lumaWorkaround.enabled;
+        updateWorkarounds |= curLevelInfo.emulatedAlphaChannel;
 
         curLevelInfo = levelInfo;
     }
@@ -1785,7 +1802,7 @@
         int levelDepth = mState.getImageDesc(imageIndex).size.depth;
 
         bool clearSucceeded = false;
-        ANGLE_TRY(blitter->clearRenderableTexture(this, nativeInternalFormat, levelDepth,
+        ANGLE_TRY(blitter->clearRenderableTexture(context, this, nativeInternalFormat, levelDepth,
                                                   imageIndex, &clearSucceeded));
         if (clearSucceeded)
         {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.cpp
index 27c5af7..0f4345e 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.cpp
@@ -49,6 +49,41 @@
     return numViews * divisor;
 }
 
+static void ValidateStateHelperGetIntegerv(const FunctionsGL *functions,
+                                           const GLuint localValue,
+                                           const GLenum pname,
+                                           const char *localName,
+                                           const char *driverName)
+{
+    GLint queryValue;
+    functions->getIntegerv(pname, &queryValue);
+    if (localValue != static_cast<GLuint>(queryValue))
+    {
+        WARN() << localName << " (" << localValue << ") != " << driverName << " (" << queryValue
+               << ")";
+        // Re-add ASSERT: http://anglebug.com/3900
+        // ASSERT(false);
+    }
+}
+
+static void ValidateStateHelperGetVertexAttribiv(const FunctionsGL *functions,
+                                                 const GLint index,
+                                                 const GLuint localValue,
+                                                 const GLenum pname,
+                                                 const char *localName,
+                                                 const char *driverName)
+{
+    GLint queryValue;
+    functions->getVertexAttribiv(index, pname, &queryValue);
+    if (localValue != static_cast<GLuint>(queryValue))
+    {
+        WARN() << localName << "[" << index << "] (" << localValue << ") != " << driverName << "["
+               << index << "] (" << queryValue << ")";
+        // Re-add ASSERT: http://anglebug.com/3900
+        // ASSERT(false);
+    }
+}
+
 }  // anonymous namespace
 
 VertexArrayGL::VertexArrayGL(const VertexArrayState &state,
@@ -368,6 +403,16 @@
                                     static_cast<GLsizei>(destStride),
                                     static_cast<GLintptr>(vertexStartOffset));
 
+            // Update the state to track the streamed attribute
+            mAppliedAttributes[idx].format = attrib.format;
+
+            mAppliedAttributes[idx].relativeOffset = 0;
+            mAppliedAttributes[idx].bindingIndex   = static_cast<GLuint>(idx);
+
+            mAppliedBindings[idx].setStride(static_cast<GLsizei>(destStride));
+            mAppliedBindings[idx].setOffset(static_cast<GLintptr>(vertexStartOffset));
+            mAppliedBindings[idx].setBuffer(context, nullptr);
+
             curBufferOffset += destStride * streamedVertexCount;
         }
 
@@ -730,4 +775,100 @@
     }
 }
 
+void VertexArrayGL::validateState() const
+{
+    // Ensure this vao is currently bound
+    ValidateStateHelperGetIntegerv(mFunctions, mVertexArrayID, GL_VERTEX_ARRAY_BINDING,
+                                   "mVertexArrayID", "GL_VERTEX_ARRAY_BINDING");
+
+    // Element array buffer
+    if (mAppliedElementArrayBuffer.get() == nullptr)
+    {
+        ValidateStateHelperGetIntegerv(
+            mFunctions, mStreamingElementArrayBuffer, GL_ELEMENT_ARRAY_BUFFER_BINDING,
+            "mAppliedElementArrayBuffer", "GL_ELEMENT_ARRAY_BUFFER_BINDING");
+    }
+    else
+    {
+        const BufferGL *bufferGL = GetImplAs<BufferGL>(mAppliedElementArrayBuffer.get());
+        ValidateStateHelperGetIntegerv(
+            mFunctions, bufferGL->getBufferID(), GL_ELEMENT_ARRAY_BUFFER_BINDING,
+            "mAppliedElementArrayBuffer", "GL_ELEMENT_ARRAY_BUFFER_BINDING");
+    }
+
+    // ValidateStateHelperGetIntegerv but with > comparison instead of !=
+    GLint queryValue;
+    mFunctions->getIntegerv(GL_MAX_VERTEX_ATTRIBS, &queryValue);
+    if (mAppliedAttributes.size() > static_cast<GLuint>(queryValue))
+    {
+        WARN() << "mAppliedAttributes.size() (" << mAppliedAttributes.size()
+               << ") > GL_MAX_VERTEX_ATTRIBS (" << queryValue << ")";
+        // Re-add ASSERT: http://anglebug.com/3900
+        // ASSERT(false);
+    }
+
+    // Check each applied attribute/binding
+    for (GLuint index = 0; index < mAppliedAttributes.size(); index++)
+    {
+        VertexAttribute &attribute = mAppliedAttributes[index];
+        ASSERT(attribute.bindingIndex < mAppliedBindings.size());
+        VertexBinding &binding = mAppliedBindings[attribute.bindingIndex];
+
+        ValidateStateHelperGetVertexAttribiv(
+            mFunctions, index, attribute.enabled, GL_VERTEX_ATTRIB_ARRAY_ENABLED,
+            "mAppliedAttributes.enabled", "GL_VERTEX_ATTRIB_ARRAY_ENABLED");
+
+        if (attribute.enabled)
+        {
+            // Applied attributes
+            ASSERT(attribute.format);
+            ValidateStateHelperGetVertexAttribiv(
+                mFunctions, index, ToGLenum(attribute.format->vertexAttribType),
+                GL_VERTEX_ATTRIB_ARRAY_TYPE, "mAppliedAttributes.format->vertexAttribType",
+                "GL_VERTEX_ATTRIB_ARRAY_TYPE");
+            ValidateStateHelperGetVertexAttribiv(
+                mFunctions, index, attribute.format->channelCount, GL_VERTEX_ATTRIB_ARRAY_SIZE,
+                "attribute.format->channelCount", "GL_VERTEX_ATTRIB_ARRAY_SIZE");
+            ValidateStateHelperGetVertexAttribiv(
+                mFunctions, index, attribute.format->isNorm(), GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
+                "attribute.format->isNorm()", "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED");
+            ValidateStateHelperGetVertexAttribiv(
+                mFunctions, index, attribute.format->isPureInt(), GL_VERTEX_ATTRIB_ARRAY_INTEGER,
+                "attribute.format->isPureInt()", "GL_VERTEX_ATTRIB_ARRAY_INTEGER");
+            if (supportVertexAttribBinding())
+            {
+                ValidateStateHelperGetVertexAttribiv(
+                    mFunctions, index, attribute.relativeOffset, GL_VERTEX_ATTRIB_RELATIVE_OFFSET,
+                    "attribute.relativeOffset", "GL_VERTEX_ATTRIB_RELATIVE_OFFSET");
+                ValidateStateHelperGetVertexAttribiv(
+                    mFunctions, index, attribute.bindingIndex, GL_VERTEX_ATTRIB_BINDING,
+                    "attribute.bindingIndex", "GL_VERTEX_ATTRIB_BINDING");
+            }
+
+            // Applied bindings
+            if (binding.getBuffer().get() == nullptr)
+            {
+                ValidateStateHelperGetVertexAttribiv(
+                    mFunctions, index, mStreamingArrayBuffer, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
+                    "mAppliedBindings.bufferID", "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING");
+            }
+            else
+            {
+                const BufferGL *arrayBufferGL = GetImplAs<BufferGL>(binding.getBuffer().get());
+                ASSERT(arrayBufferGL);
+                ValidateStateHelperGetVertexAttribiv(
+                    mFunctions, index, arrayBufferGL->getBufferID(),
+                    GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, "mAppliedBindings.bufferID",
+                    "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING");
+                ValidateStateHelperGetVertexAttribiv(
+                    mFunctions, index, binding.getStride(), GL_VERTEX_ATTRIB_ARRAY_STRIDE,
+                    "binding.getStride()", "GL_VERTEX_ATTRIB_ARRAY_STRIDE");
+                ValidateStateHelperGetVertexAttribiv(
+                    mFunctions, index, binding.getDivisor(), GL_VERTEX_ATTRIB_ARRAY_DIVISOR,
+                    "binding.getDivisor()", "GL_VERTEX_ATTRIB_ARRAY_DIVISOR");
+            }
+        }
+    }
+}
+
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.h
index 708a3fc..a2cd804 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/VertexArrayGL.h
@@ -56,6 +56,8 @@
     void applyNumViewsToDivisor(int numViews);
     void applyActiveAttribLocationsMask(const gl::AttributesMask &activeMask);
 
+    void validateState() const;
+
   private:
     angle::Result syncDrawState(const gl::Context *context,
                                 const gl::AttributesMask &activeAttributesMask,
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp
new file mode 100644
index 0000000..1cddd29
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp
@@ -0,0 +1,59 @@
+//
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// DeviceCGL.cpp: CGL implementation of egl::Device
+
+#if __has_include(<Cocoa/Cocoa.h>)
+
+#    include "libANGLE/renderer/gl/cgl/DeviceCGL.h"
+
+#    include <EGL/eglext.h>
+#    include "libANGLE/renderer/gl/cgl/DisplayCGL.h"
+
+namespace rx
+{
+
+DeviceCGL::DeviceCGL() {}
+
+DeviceCGL::~DeviceCGL() {}
+
+egl::Error DeviceCGL::initialize()
+{
+    return egl::NoError();
+}
+
+egl::Error DeviceCGL::getAttribute(const egl::Display *display, EGLint attribute, void **outValue)
+{
+    DisplayCGL *displayImpl = GetImplAs<DisplayCGL>(display);
+
+    switch (attribute)
+    {
+        case EGL_CGL_CONTEXT_ANGLE:
+            *outValue = displayImpl->getCGLContext();
+            break;
+        case EGL_CGL_PIXEL_FORMAT_ANGLE:
+            *outValue = displayImpl->getCGLPixelFormat();
+            break;
+        default:
+            return egl::EglBadAttribute();
+    }
+
+    return egl::NoError();
+}
+
+EGLint DeviceCGL::getType()
+{
+    return 0;
+}
+
+void DeviceCGL::generateExtensions(egl::DeviceExtensions *outExtensions) const
+{
+    outExtensions->deviceCGL = true;
+}
+
+}  // namespace rx
+
+#endif  // __has_include(<Cocoa/Cocoa.h>)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DeviceCGL.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DeviceCGL.h
new file mode 100644
index 0000000..3f7e1c0
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DeviceCGL.h
@@ -0,0 +1,33 @@
+//
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// DeviceCGL.h: CGL implementation of egl::Device
+
+#ifndef LIBANGLE_RENDERER_GL_CGL_DEVICECGL_H_
+#define LIBANGLE_RENDERER_GL_CGL_DEVICECGL_H_
+
+#include "libANGLE/Device.h"
+#include "libANGLE/renderer/DeviceImpl.h"
+
+namespace rx
+{
+class DeviceCGL : public DeviceImpl
+{
+  public:
+    DeviceCGL();
+    ~DeviceCGL() override;
+
+    egl::Error initialize() override;
+    egl::Error getAttribute(const egl::Display *display,
+                            EGLint attribute,
+                            void **outValue) override;
+    EGLint getType() override;
+    void generateExtensions(egl::DeviceExtensions *outExtensions) const override;
+};
+
+}  // namespace rx
+
+#endif  // LIBANGLE_RENDERER_GL_CGL_DEVICECGL_H_
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.h
index 459d168..f149f9c4 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.h
@@ -71,6 +71,7 @@
     gl::Version getMaxSupportedESVersion() const override;
 
     CGLContextObj getCGLContext() const;
+    CGLPixelFormatObj getCGLPixelFormat() const;
 
     WorkerContext *createWorkerContext(std::string *infoLog);
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
index 42dae45..7ba0f8c 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
@@ -18,6 +18,7 @@
 #    include "gpu_info_util/SystemInfo.h"
 #    include "libANGLE/Display.h"
 #    include "libANGLE/renderer/gl/cgl/ContextCGL.h"
+#    include "libANGLE/renderer/gl/cgl/DeviceCGL.h"
 #    include "libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.h"
 #    include "libANGLE/renderer/gl/cgl/PbufferSurfaceCGL.h"
 #    include "libANGLE/renderer/gl/cgl/RendererCGL.h"
@@ -209,8 +210,7 @@
 
 DeviceImpl *DisplayCGL::createDevice()
 {
-    UNIMPLEMENTED();
-    return nullptr;
+    return new DeviceCGL();
 }
 
 egl::ConfigSet DisplayCGL::generateConfigs()
@@ -323,10 +323,16 @@
     return mContext;
 }
 
+CGLPixelFormatObj DisplayCGL::getCGLPixelFormat() const
+{
+    return mPixelFormat;
+}
+
 void DisplayCGL::generateExtensions(egl::DisplayExtensions *outExtensions) const
 {
     outExtensions->iosurfaceClientBuffer = true;
     outExtensions->surfacelessContext    = true;
+    outExtensions->deviceQuery           = true;
 
     // Contexts are virtualized so textures can be shared globally
     outExtensions->displayTextureShareGroup = true;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm
index 418b238..33a0a3f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm
@@ -319,7 +319,8 @@
     }
 
     BlitGL *blitter = GetBlitGL(context);
-    ANGLE_TRY(blitter->clearRenderableTextureAlphaToOne(texture, gl::TextureTarget::Rectangle, 0));
+    ANGLE_TRY(blitter->clearRenderableTextureAlphaToOne(context, texture,
+                                                        gl::TextureTarget::Rectangle, 0));
     mAlphaInitialized = true;
     return angle::Result::Continue;
 }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp
index a39df6f..239fcc1 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/egl/DisplayEGL.cpp
@@ -151,6 +151,8 @@
 
     outExtensions->nativeFenceSyncANDROID = mEGL->hasExtension("EGL_ANDROID_native_fence_sync");
 
+    outExtensions->noConfigContext = mEGL->hasExtension("EGL_KHR_no_config_context");
+
     DisplayGL::generateExtensions(outExtensions);
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
index 0d44273..a00cc46 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
@@ -380,17 +380,15 @@
                                    egl::Surface *readSurface,
                                    gl::Context *context)
 {
-    if (drawSurface)
+    glx::Drawable drawable =
+        (drawSurface ? GetImplAs<SurfaceGLX>(drawSurface)->getDrawable() : mDummyPbuffer);
+    if (drawable != mCurrentDrawable)
     {
-        glx::Drawable drawable = GetImplAs<SurfaceGLX>(drawSurface)->getDrawable();
-        if (drawable != mCurrentDrawable)
+        if (mGLX.makeCurrent(drawable, mContext) != True)
         {
-            if (mGLX.makeCurrent(drawable, mContext) != True)
-            {
-                return egl::EglContextLost() << "Failed to make the GLX context current";
-            }
-            mCurrentDrawable = drawable;
+            return egl::EglContextLost() << "Failed to make the GLX context current";
         }
+        mCurrentDrawable = drawable;
     }
 
     return DisplayGL::makeCurrent(drawSurface, readSurface, context);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp
index c9a2963..ff39ee1 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/glx/WindowSurfaceGLX.cpp
@@ -117,6 +117,7 @@
     mGLXWindow = mGLX.createWindow(mFBConfig, mWindow, nullptr);
 
     XMapWindow(mDisplay, mWindow);
+    XSelectInput(mDisplay, mWindow, ExposureMask);  // For XExposeEvent forwarding from child window
     XFlush(mDisplay);
 
     XFree(visualInfo);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cpp
index d516750..f6da105 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.cpp
@@ -34,6 +34,7 @@
 
 namespace rx
 {
+
 VendorID GetVendorID(const FunctionsGL *functions)
 {
     std::string nativeVendorString(reinterpret_cast<const char *>(functions->getString(GL_VENDOR)));
@@ -963,13 +964,7 @@
         LimitVersion(maxSupportedESVersion, gl::Version(3, 0));
     }
 
-    // OpenGL 4.2 is required for GL_ARB_compute_shader, some platform drivers have the extension,
-    // but their maximum supported GL versions are less than 4.2. Explicitly limit the minimum
-    // GL version to 4.2.
-    if (functions->isAtLeastGL(gl::Version(4, 3)) || functions->isAtLeastGLES(gl::Version(3, 1)) ||
-        (functions->isAtLeastGL(gl::Version(4, 2)) &&
-         functions->hasGLExtension("GL_ARB_compute_shader") &&
-         functions->hasGLExtension("GL_ARB_shader_storage_buffer_object")))
+    if (nativegl::SupportsCompute(functions))
     {
         for (GLuint index = 0u; index < 3u; ++index)
         {
@@ -1409,7 +1404,7 @@
         functions->hasGLESExtension("GL_OES_draw_elements_base_vertex") ||
         functions->hasGLESExtension("GL_EXT_draw_elements_base_vertex");
 
-    // GL_CHROMIUM_compressed_texture_etc
+    // ANGLE_compressed_texture_etc
     // Expose this extension only when we support the formats or we're running on top of a native
     // ES driver.
     extensions->compressedTextureETC = functions->standard == STANDARD_GL_ES &&
@@ -1446,130 +1441,158 @@
 {
     VendorID vendor = GetVendorID(functions);
     uint32_t device = GetDeviceID(functions);
+    bool isAMD      = IsAMD(vendor);
+    bool isIntel    = IsIntel(vendor);
+    bool isNvidia   = IsNvidia(vendor);
+    bool isQualcomm = IsQualcomm(vendor);
 
-    // Don't use 1-bit alpha formats on desktop GL with AMD or Intel drivers.
-    features->avoid1BitAlphaTextureFormats.enabled =
-        functions->standard == STANDARD_GL_DESKTOP && (IsAMD(vendor));
+    // Don't use 1-bit alpha formats on desktop GL with AMD drivers.
+    ANGLE_FEATURE_CONDITION(features, avoid1BitAlphaTextureFormats,
+                            functions->standard == STANDARD_GL_DESKTOP && isAMD)
 
-    features->rgba4IsNotSupportedForColorRendering.enabled =
-        functions->standard == STANDARD_GL_DESKTOP && IsIntel(vendor);
+    ANGLE_FEATURE_CONDITION(features, rgba4IsNotSupportedForColorRendering,
+                            functions->standard == STANDARD_GL_DESKTOP && isIntel)
 
-    features->emulateAbsIntFunction.enabled = IsIntel(vendor);
+    ANGLE_FEATURE_CONDITION(features, emulateAbsIntFunction, isIntel)
 
-    features->addAndTrueToLoopCondition.enabled = IsIntel(vendor);
+    ANGLE_FEATURE_CONDITION(features, addAndTrueToLoopCondition, isIntel)
 
-    features->emulateIsnanFloat.enabled = IsIntel(vendor);
+    ANGLE_FEATURE_CONDITION(features, emulateIsnanFloat, isIntel)
 
-    features->doesSRGBClearsOnLinearFramebufferAttachments.enabled =
-        functions->standard == STANDARD_GL_DESKTOP && (IsIntel(vendor) || IsAMD(vendor));
+    ANGLE_FEATURE_CONDITION(features, doesSRGBClearsOnLinearFramebufferAttachments,
+                            functions->standard == STANDARD_GL_DESKTOP && (isIntel || isAMD))
 
-    features->emulateMaxVertexAttribStride.enabled =
-        IsLinux() && functions->standard == STANDARD_GL_DESKTOP && IsAMD(vendor);
-    features->useUnusedBlocksWithStandardOrSharedLayout.enabled = IsLinux() && IsAMD(vendor);
+    ANGLE_FEATURE_CONDITION(features, emulateMaxVertexAttribStride,
+                            IsLinux() && functions->standard == STANDARD_GL_DESKTOP && isAMD)
+    ANGLE_FEATURE_CONDITION(
+        features, useUnusedBlocksWithStandardOrSharedLayout,
+        (IsApple() && functions->standard == STANDARD_GL_DESKTOP) || (IsLinux() && isAMD))
 
-    features->doWhileGLSLCausesGPUHang.enabled                  = IsApple();
-    features->useUnusedBlocksWithStandardOrSharedLayout.enabled = IsApple();
-    features->rewriteFloatUnaryMinusOperator.enabled            = IsApple() && IsIntel(vendor);
+    ANGLE_FEATURE_CONDITION(features, doWhileGLSLCausesGPUHang, IsApple())
+    ANGLE_FEATURE_CONDITION(features, rewriteFloatUnaryMinusOperator, IsApple() && isIntel)
 
-    features->addBaseVertexToVertexID.enabled = IsApple() && IsAMD(vendor);
+    ANGLE_FEATURE_CONDITION(features, addBaseVertexToVertexID, IsApple() && isAMD)
 
     // Triggers a bug on Marshmallow Adreno (4xx?) driver.
     // http://anglebug.com/2046
-    features->dontInitializeUninitializedLocals.enabled = IsAndroid() && IsQualcomm(vendor);
+    ANGLE_FEATURE_CONDITION(features, dontInitializeUninitializedLocals, IsAndroid() && isQualcomm)
 
-    features->finishDoesNotCauseQueriesToBeAvailable.enabled =
-        functions->standard == STANDARD_GL_DESKTOP && IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, finishDoesNotCauseQueriesToBeAvailable,
+                            functions->standard == STANDARD_GL_DESKTOP && isNvidia)
 
     // TODO(cwallez): Disable this workaround for MacOSX versions 10.9 or later.
-    features->alwaysCallUseProgramAfterLink.enabled = true;
+    ANGLE_FEATURE_CONDITION(features, alwaysCallUseProgramAfterLink, true)
 
-    features->unpackOverlappingRowsSeparatelyUnpackBuffer.enabled = IsNvidia(vendor);
-    features->packOverlappingRowsSeparatelyPackBuffer.enabled     = IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, unpackOverlappingRowsSeparatelyUnpackBuffer, isNvidia)
+    ANGLE_FEATURE_CONDITION(features, packOverlappingRowsSeparatelyPackBuffer, isNvidia)
 
-    features->initializeCurrentVertexAttributes.enabled = IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, initializeCurrentVertexAttributes, isNvidia)
 
-    features->unpackLastRowSeparatelyForPaddingInclusion.enabled = IsApple() || IsNvidia(vendor);
-    features->packLastRowSeparatelyForPaddingInclusion.enabled   = IsApple() || IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, unpackLastRowSeparatelyForPaddingInclusion,
+                            IsApple() || isNvidia)
+    ANGLE_FEATURE_CONDITION(features, packLastRowSeparatelyForPaddingInclusion,
+                            IsApple() || isNvidia)
 
-    features->removeInvariantAndCentroidForESSL3.enabled =
-        functions->isAtMostGL(gl::Version(4, 1)) ||
-        (functions->standard == STANDARD_GL_DESKTOP && IsAMD(vendor));
+    ANGLE_FEATURE_CONDITION(features, removeInvariantAndCentroidForESSL3,
+                            functions->isAtMostGL(gl::Version(4, 1)) ||
+                                (functions->standard == STANDARD_GL_DESKTOP && isAMD))
 
     // TODO(oetuaho): Make this specific to the affected driver versions. Versions that came after
     // 364 are known to be affected, at least up to 375.
-    features->emulateAtan2Float.enabled = IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, emulateAtan2Float, isNvidia)
 
-    features->reapplyUBOBindingsAfterUsingBinaryProgram.enabled = IsAMD(vendor);
+    ANGLE_FEATURE_CONDITION(features, reapplyUBOBindingsAfterUsingBinaryProgram,
+                            isAMD || IsAndroid())
 
-    features->rewriteVectorScalarArithmetic.enabled = IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, rewriteVectorScalarArithmetic, isNvidia)
 
     // TODO(oetuaho): Make this specific to the affected driver versions. Versions at least up to
     // 390 are known to be affected. Versions after that are expected not to be affected.
-    features->clampFragDepth.enabled = IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, clampFragDepth, isNvidia)
 
     // TODO(oetuaho): Make this specific to the affected driver versions. Versions since 397.31 are
     // not affected.
-    features->rewriteRepeatedAssignToSwizzled.enabled = IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, rewriteRepeatedAssignToSwizzled, isNvidia)
 
     // TODO(jmadill): Narrow workaround range for specific devices.
-    features->reapplyUBOBindingsAfterUsingBinaryProgram.enabled = IsAndroid();
 
-    features->clampPointSize.enabled = IsAndroid() || IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, clampPointSize, IsAndroid() || isNvidia)
 
-    features->dontUseLoopsToInitializeVariables.enabled = IsAndroid() && !IsNvidia(vendor);
+    ANGLE_FEATURE_CONDITION(features, dontUseLoopsToInitializeVariables, IsAndroid() && !isNvidia)
 
-    features->disableBlendFuncExtended.enabled = IsAMD(vendor) || IsIntel(vendor);
+    ANGLE_FEATURE_CONDITION(features, disableBlendFuncExtended, isAMD || isIntel)
 
-    features->unsizedsRGBReadPixelsDoesntTransform.enabled = IsAndroid() && IsQualcomm(vendor);
+    ANGLE_FEATURE_CONDITION(features, unsizedsRGBReadPixelsDoesntTransform,
+                            IsAndroid() && isQualcomm)
 
-    features->queryCounterBitsGeneratesErrors.enabled = IsNexus5X(vendor, device);
+    ANGLE_FEATURE_CONDITION(features, queryCounterBitsGeneratesErrors, IsNexus5X(vendor, device))
 
-    features->dontRelinkProgramsInParallel.enabled =
-        IsAndroid() || (IsWindows() && IsIntel(vendor));
+    ANGLE_FEATURE_CONDITION(features, dontRelinkProgramsInParallel,
+                            IsAndroid() || (IsWindows() && isIntel))
 
     // TODO(jie.a.chen@intel.com): Clean up the bugs.
     // anglebug.com/3031
     // crbug.com/922936
-    features->disableWorkerContexts.enabled =
-        (IsWindows() && (IsIntel(vendor) || IsAMD(vendor))) || (IsLinux() && IsNvidia(vendor));
+    ANGLE_FEATURE_CONDITION(features, disableWorkerContexts,
+                            (IsWindows() && (isIntel || isAMD)) || (IsLinux() && isNvidia))
 
-    features->limitMaxTextureSizeTo4096.enabled = IsAndroid() || (IsIntel(vendor) && IsLinux());
-    features->limitMaxMSAASamplesTo4.enabled    = IsAndroid();
-    features->limitMax3dArrayTextureSizeTo1024.enabled = IsIntel(vendor) && IsLinux();
+    ANGLE_FEATURE_CONDITION(features, limitMaxTextureSizeTo4096,
+                            IsAndroid() || (isIntel && IsLinux()))
+    ANGLE_FEATURE_CONDITION(features, limitMaxMSAASamplesTo4, IsAndroid())
+    ANGLE_FEATURE_CONDITION(features, limitMax3dArrayTextureSizeTo1024, isIntel && IsLinux())
 
-    features->allowClearForRobustResourceInit.enabled = IsApple();
+    ANGLE_FEATURE_CONDITION(features, allowClearForRobustResourceInit, IsApple())
 
     // The WebGL conformance/uniforms/out-of-bounds-uniform-array-access test has been seen to fail
     // on AMD and Android devices.
-    features->clampArrayAccess.enabled = IsAndroid() || IsAMD(vendor);
+    ANGLE_FEATURE_CONDITION(features, clampArrayAccess, IsAndroid() || isAMD)
 
-    features->resetTexImage2DBaseLevel.enabled =
-        IsApple() && IsIntel(vendor) && GetMacOSVersion() >= OSVersion(10, 12, 4);
+    ANGLE_FEATURE_CONDITION(features, resetTexImage2DBaseLevel,
+                            IsApple() && isIntel && GetMacOSVersion() >= OSVersion(10, 12, 4))
 
-    features->clearToZeroOrOneBroken.enabled =
-        IsApple() && IsIntel(vendor) && GetMacOSVersion() < OSVersion(10, 12, 6);
+    ANGLE_FEATURE_CONDITION(features, clearToZeroOrOneBroken,
+                            IsApple() && isIntel && GetMacOSVersion() < OSVersion(10, 12, 6))
 
-    features->adjustSrcDstRegionBlitFramebuffer.enabled =
-        IsLinux() || (IsAndroid() && IsNvidia(vendor)) || (IsWindows() && IsNvidia(vendor));
+    ANGLE_FEATURE_CONDITION(features, adjustSrcDstRegionBlitFramebuffer,
+                            IsLinux() || (IsAndroid() && isNvidia) || (IsWindows() && isNvidia))
 
-    features->clipSrcRegionBlitFramebuffer.enabled = IsApple();
+    ANGLE_FEATURE_CONDITION(features, clipSrcRegionBlitFramebuffer, IsApple())
 
-    features->resettingTexturesGeneratesErrors.enabled =
-        IsApple() || (IsWindows() && IsAMD(device));
+    ANGLE_FEATURE_CONDITION(features, resettingTexturesGeneratesErrors,
+                            IsApple() || (IsWindows() && isAMD))
+
+    ANGLE_FEATURE_CONDITION(features, rgbDXT1TexturesSampleZeroAlpha, IsApple())
+
+    ANGLE_FEATURE_CONDITION(features, unfoldShortCircuits, IsApple())
 }
 
 void InitializeFrontendFeatures(const FunctionsGL *functions, angle::FrontendFeatures *features)
 {
     VendorID vendor = GetVendorID(functions);
+    bool isIntel    = IsIntel(vendor);
+    bool isQualcomm = IsQualcomm(vendor);
 
-    features->disableProgramCachingForTransformFeedback.enabled = IsAndroid() && IsQualcomm(vendor);
-    features->syncFramebufferBindingsOnTexImage.enabled         = IsWindows() && IsIntel(vendor);
+    ANGLE_FEATURE_CONDITION(features, disableProgramCachingForTransformFeedback,
+                            IsAndroid() && isQualcomm)
+    ANGLE_FEATURE_CONDITION(features, syncFramebufferBindingsOnTexImage, IsWindows() && isIntel)
 }
 
 }  // namespace nativegl_gl
 
 namespace nativegl
 {
+bool SupportsCompute(const FunctionsGL *functions)
+{
+    // OpenGL 4.2 is required for GL_ARB_compute_shader, some platform drivers have the extension,
+    // but their maximum supported GL versions are less than 4.2. Explicitly limit the minimum
+    // GL version to 4.2.
+    return (functions->isAtLeastGL(gl::Version(4, 3)) ||
+            functions->isAtLeastGLES(gl::Version(3, 1)) ||
+            (functions->isAtLeastGL(gl::Version(4, 2)) &&
+             functions->hasGLExtension("GL_ARB_compute_shader") &&
+             functions->hasGLExtension("GL_ARB_shader_storage_buffer_object")));
+}
+
 bool SupportsFenceSync(const FunctionsGL *functions)
 {
     return functions->isAtLeastGL(gl::Version(3, 2)) || functions->hasGLExtension("GL_ARB_sync") ||
@@ -1667,6 +1690,47 @@
     }
 }
 
+GLenum GetBufferBindingQuery(gl::BufferBinding bufferBinding)
+{
+    switch (bufferBinding)
+    {
+        case gl::BufferBinding::Array:
+            return GL_ARRAY_BUFFER_BINDING;
+        case gl::BufferBinding::AtomicCounter:
+            return GL_ATOMIC_COUNTER_BUFFER_BINDING;
+        case gl::BufferBinding::CopyRead:
+            return GL_COPY_READ_BUFFER_BINDING;
+        case gl::BufferBinding::CopyWrite:
+            return GL_COPY_WRITE_BUFFER_BINDING;
+        case gl::BufferBinding::DispatchIndirect:
+            return GL_DISPATCH_INDIRECT_BUFFER_BINDING;
+        case gl::BufferBinding::DrawIndirect:
+            return GL_DRAW_INDIRECT_BUFFER_BINDING;
+        case gl::BufferBinding::ElementArray:
+            return GL_ELEMENT_ARRAY_BUFFER_BINDING;
+        case gl::BufferBinding::PixelPack:
+            return GL_PIXEL_PACK_BUFFER_BINDING;
+        case gl::BufferBinding::PixelUnpack:
+            return GL_PIXEL_UNPACK_BUFFER_BINDING;
+        case gl::BufferBinding::ShaderStorage:
+            return GL_SHADER_STORAGE_BUFFER_BINDING;
+        case gl::BufferBinding::TransformFeedback:
+            return GL_TRANSFORM_FEEDBACK_BUFFER_BINDING;
+        case gl::BufferBinding::Uniform:
+            return GL_UNIFORM_BUFFER_BINDING;
+        default:
+            UNREACHABLE();
+            return 0;
+    }
+}
+
+std::string GetBufferBindingString(gl::BufferBinding bufferBinding)
+{
+    std::ostringstream os;
+    os << bufferBinding << "_BINDING";
+    return os.str();
+}
+
 }  // namespace nativegl
 
 const FunctionsGL *GetFunctionsGL(const gl::Context *context)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.h
index 202b85d..1d0378f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/gl/renderergl_utils.h
@@ -96,6 +96,7 @@
 
 namespace nativegl
 {
+bool SupportsCompute(const FunctionsGL *functions);
 bool SupportsFenceSync(const FunctionsGL *functions);
 bool SupportsOcclusionQueries(const FunctionsGL *functions);
 bool SupportsNativeRendering(const FunctionsGL *functions,
@@ -105,6 +106,8 @@
 bool UseTexImage2D(gl::TextureType textureType);
 bool UseTexImage3D(gl::TextureType textureType);
 GLenum GetTextureBindingQuery(gl::TextureType textureType);
+GLenum GetBufferBindingQuery(gl::BufferBinding bufferBinding);
+std::string GetBufferBindingString(gl::BufferBinding bufferBinding);
 }  // namespace nativegl
 
 bool CanMapBufferForRead(const FunctionsGL *functions);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_data.json b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_data.json
index 404de2b..815cfc8 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_data.json
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_data.json
@@ -54,6 +54,9 @@
     }
   },
   "GL_ALPHA32F_EXT": {
+    "R32_FLOAT": {
+      "GL_FLOAT": "LoadToNative<GLfloat, 1>"
+    },
     "NONE": {
       "GL_FLOAT": "LoadA32FToRGBA32F"
     }
@@ -93,6 +96,9 @@
     }
   },
   "GL_LUMINANCE32F_EXT": {
+    "R32_FLOAT": {
+      "GL_FLOAT": "LoadToNative<GLfloat, 1>"
+    },
     "NONE": {
       "GL_FLOAT": "LoadL32FToRGBA32F"
     }
@@ -529,6 +535,10 @@
     }
   },
   "GL_LUMINANCE_ALPHA16F_EXT": {
+    "R16G16_FLOAT": {
+      "GL_HALF_FLOAT": "LoadToNative<GLhalf, 2>",
+      "GL_HALF_FLOAT_OES": "LoadToNative<GLhalf, 2>"
+    },
     "NONE": {
       "GL_HALF_FLOAT": "LoadLA16FToRGBA16F",
       "GL_HALF_FLOAT_OES": "LoadLA16FToRGBA16F"
@@ -613,6 +623,9 @@
     }
   },
   "GL_LUMINANCE_ALPHA32F_EXT": {
+    "R32G32_FLOAT": {
+      "GL_FLOAT": "LoadToNative<GLfloat, 2>"
+    },
     "NONE": {
       "GL_FLOAT": "LoadLA32FToRGBA32F"
     }
@@ -630,7 +643,8 @@
       "GL_UNSIGNED_INT": "LoadR32ToR24G8"
     },
     "D32_FLOAT_S8X24_UINT": {
-      "GL_UNSIGNED_INT_24_8": "LoadD24S8ToD32FS8X24"
+      "GL_UNSIGNED_INT_24_8": "LoadD24S8ToD32FS8X24",
+      "GL_UNSIGNED_INT": "LoadD32ToD32FX32"
     }
   },
   "GL_R32I": {
@@ -670,6 +684,10 @@
     }
   },
   "GL_LUMINANCE16F_EXT": {
+    "R16_FLOAT": {
+      "GL_HALF_FLOAT": "LoadToNative<GLhalf, 1>",
+      "GL_HALF_FLOAT_OES": "LoadToNative<GLhalf, 1>"
+    },
     "NONE": {
       "GL_HALF_FLOAT": "LoadL16FToRGBA16F",
       "GL_HALF_FLOAT_OES": "LoadL16FToRGBA16F"
@@ -696,6 +714,10 @@
     }
   },
   "GL_ALPHA16F_EXT": {
+    "R16_FLOAT": {
+      "GL_HALF_FLOAT": "LoadToNative<GLhalf, 1>",
+      "GL_HALF_FLOAT_OES": "LoadToNative<GLhalf, 1>"
+    },
     "NONE": {
       "GL_HALF_FLOAT": "LoadA16FToRGBA16F",
       "GL_HALF_FLOAT_OES": "LoadA16FToRGBA16F"
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_table_autogen.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_table_autogen.cpp
index e6e8be3..796ab68 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_table_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/load_functions_table_autogen.cpp
@@ -112,6 +112,20 @@
     }
 }
 
+LoadImageFunctionInfo ALPHA16F_EXT_to_R16_FLOAT(GLenum type)
+{
+    switch (type)
+    {
+        case GL_HALF_FLOAT:
+            return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
+        case GL_HALF_FLOAT_OES:
+            return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
+        default:
+            UNREACHABLE();
+            return LoadImageFunctionInfo(UnreachableLoadFunction, true);
+    }
+}
+
 LoadImageFunctionInfo ALPHA16F_EXT_to_default(GLenum type)
 {
     switch (type)
@@ -126,6 +140,18 @@
     }
 }
 
+LoadImageFunctionInfo ALPHA32F_EXT_to_R32_FLOAT(GLenum type)
+{
+    switch (type)
+    {
+        case GL_FLOAT:
+            return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
+        default:
+            UNREACHABLE();
+            return LoadImageFunctionInfo(UnreachableLoadFunction, true);
+    }
+}
+
 LoadImageFunctionInfo ALPHA32F_EXT_to_default(GLenum type)
 {
     switch (type)
@@ -1416,6 +1442,8 @@
 {
     switch (type)
     {
+        case GL_UNSIGNED_INT:
+            return LoadImageFunctionInfo(LoadD32ToD32FX32, true);
         case GL_UNSIGNED_INT_24_8:
             return LoadImageFunctionInfo(LoadD24S8ToD32FS8X24, true);
         default:
@@ -1538,6 +1566,20 @@
     }
 }
 
+LoadImageFunctionInfo LUMINANCE16F_EXT_to_R16_FLOAT(GLenum type)
+{
+    switch (type)
+    {
+        case GL_HALF_FLOAT:
+            return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
+        case GL_HALF_FLOAT_OES:
+            return LoadImageFunctionInfo(LoadToNative<GLhalf, 1>, false);
+        default:
+            UNREACHABLE();
+            return LoadImageFunctionInfo(UnreachableLoadFunction, true);
+    }
+}
+
 LoadImageFunctionInfo LUMINANCE16F_EXT_to_default(GLenum type)
 {
     switch (type)
@@ -1552,6 +1594,18 @@
     }
 }
 
+LoadImageFunctionInfo LUMINANCE32F_EXT_to_R32_FLOAT(GLenum type)
+{
+    switch (type)
+    {
+        case GL_FLOAT:
+            return LoadImageFunctionInfo(LoadToNative<GLfloat, 1>, false);
+        default:
+            UNREACHABLE();
+            return LoadImageFunctionInfo(UnreachableLoadFunction, true);
+    }
+}
+
 LoadImageFunctionInfo LUMINANCE32F_EXT_to_default(GLenum type)
 {
     switch (type)
@@ -1654,6 +1708,20 @@
     }
 }
 
+LoadImageFunctionInfo LUMINANCE_ALPHA16F_EXT_to_R16G16_FLOAT(GLenum type)
+{
+    switch (type)
+    {
+        case GL_HALF_FLOAT:
+            return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
+        case GL_HALF_FLOAT_OES:
+            return LoadImageFunctionInfo(LoadToNative<GLhalf, 2>, false);
+        default:
+            UNREACHABLE();
+            return LoadImageFunctionInfo(UnreachableLoadFunction, true);
+    }
+}
+
 LoadImageFunctionInfo LUMINANCE_ALPHA16F_EXT_to_default(GLenum type)
 {
     switch (type)
@@ -1668,6 +1736,18 @@
     }
 }
 
+LoadImageFunctionInfo LUMINANCE_ALPHA32F_EXT_to_R32G32_FLOAT(GLenum type)
+{
+    switch (type)
+    {
+        case GL_FLOAT:
+            return LoadImageFunctionInfo(LoadToNative<GLfloat, 2>, false);
+        default:
+            UNREACHABLE();
+            return LoadImageFunctionInfo(UnreachableLoadFunction, true);
+    }
+}
+
 LoadImageFunctionInfo LUMINANCE_ALPHA32F_EXT_to_default(GLenum type)
 {
     switch (type)
@@ -2939,9 +3019,25 @@
             }
         }
         case GL_ALPHA16F_EXT:
-            return ALPHA16F_EXT_to_default;
+        {
+            switch (angleFormat)
+            {
+                case FormatID::R16_FLOAT:
+                    return ALPHA16F_EXT_to_R16_FLOAT;
+                default:
+                    return ALPHA16F_EXT_to_default;
+            }
+        }
         case GL_ALPHA32F_EXT:
-            return ALPHA32F_EXT_to_default;
+        {
+            switch (angleFormat)
+            {
+                case FormatID::R32_FLOAT:
+                    return ALPHA32F_EXT_to_R32_FLOAT;
+                default:
+                    return ALPHA32F_EXT_to_default;
+            }
+        }
         case GL_ALPHA8_EXT:
         {
             switch (angleFormat)
@@ -3404,9 +3500,25 @@
             }
         }
         case GL_LUMINANCE16F_EXT:
-            return LUMINANCE16F_EXT_to_default;
+        {
+            switch (angleFormat)
+            {
+                case FormatID::R16_FLOAT:
+                    return LUMINANCE16F_EXT_to_R16_FLOAT;
+                default:
+                    return LUMINANCE16F_EXT_to_default;
+            }
+        }
         case GL_LUMINANCE32F_EXT:
-            return LUMINANCE32F_EXT_to_default;
+        {
+            switch (angleFormat)
+            {
+                case FormatID::R32_FLOAT:
+                    return LUMINANCE32F_EXT_to_R32_FLOAT;
+                default:
+                    return LUMINANCE32F_EXT_to_default;
+            }
+        }
         case GL_LUMINANCE8_ALPHA8_EXT:
         {
             switch (angleFormat)
@@ -3446,9 +3558,25 @@
             }
         }
         case GL_LUMINANCE_ALPHA16F_EXT:
-            return LUMINANCE_ALPHA16F_EXT_to_default;
+        {
+            switch (angleFormat)
+            {
+                case FormatID::R16G16_FLOAT:
+                    return LUMINANCE_ALPHA16F_EXT_to_R16G16_FLOAT;
+                default:
+                    return LUMINANCE_ALPHA16F_EXT_to_default;
+            }
+        }
         case GL_LUMINANCE_ALPHA32F_EXT:
-            return LUMINANCE_ALPHA32F_EXT_to_default;
+        {
+            switch (angleFormat)
+            {
+                case FormatID::R32G32_FLOAT:
+                    return LUMINANCE_ALPHA32F_EXT_to_R32G32_FLOAT;
+                default:
+                    return LUMINANCE_ALPHA32F_EXT_to_default;
+            }
+        }
         case GL_R11F_G11F_B10F:
         {
             switch (angleFormat)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.cpp
index 7903e4a..4f6a9a8 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.cpp
@@ -23,7 +23,7 @@
     return egl::NoError();
 }
 
-egl::Error DeviceNULL::getDevice(void **outValue)
+egl::Error DeviceNULL::getAttribute(const egl::Display *display, EGLint attribute, void **outValue)
 {
     UNIMPLEMENTED();
     return egl::EglBadAccess();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.h
index b26b4c9..a800e15 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/null/DeviceNULL.h
@@ -22,7 +22,9 @@
     ~DeviceNULL() override;
 
     egl::Error initialize() override;
-    egl::Error getDevice(void **outValue) override;
+    egl::Error getAttribute(const egl::Display *display,
+                            EGLint attribute,
+                            void **outValue) override;
     EGLint getType() override;
     void generateExtensions(egl::DeviceExtensions *outExtensions) const override;
 };
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/renderer_utils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/renderer_utils.cpp
index e34f3fb..c5b7eee 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/renderer_utils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/renderer_utils.cpp
@@ -306,12 +306,12 @@
     EGLAttrib debugSetting =
         attribs.get(EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED_ANGLE, EGL_DONT_CARE);
 
-// Prefer to enable debug layers if compiling in Debug, and disabled in Release.
-#if defined(ANGLE_ENABLE_ASSERTS)
+    // Prefer to enable debug layers when available.
+#if defined(ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT)
     return (debugSetting != EGL_FALSE);
 #else
     return (debugSetting == EGL_TRUE);
-#endif  // defined(ANGLE_ENABLE_ASSERTS)
+#endif  // defined(ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT)
 }
 
 bool ShouldUseVirtualizedContexts(const egl::AttributeMap &attribs, bool defaultValue)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BufferVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BufferVk.cpp
index c14b846..9d3a5d6 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BufferVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/BufferVk.cpp
@@ -78,11 +78,12 @@
 
 void BufferVk::release(ContextVk *contextVk)
 {
-    mBuffer.release(contextVk);
+    RendererVk *renderer = contextVk->getRenderer();
+    mBuffer.release(renderer);
 
     for (ConversionBuffer &buffer : mVertexConversionBuffers)
     {
-        buffer.data.release(contextVk);
+        buffer.data.release(renderer);
     }
 }
 
@@ -222,7 +223,9 @@
             ANGLE_TRY(contextVk->flushImpl(nullptr));
         }
         // Make sure the GPU is done with the buffer.
-        ANGLE_TRY(contextVk->finishToSerial(mBuffer.getStoredQueueSerial()));
+        ANGLE_TRY(contextVk->finishToSerial(mBuffer.getLatestSerial()));
+
+        ASSERT(!mBuffer.isResourceInUse(contextVk));
     }
 
     ANGLE_VK_TRY(contextVk, mBuffer.getDeviceMemory().map(contextVk->getDevice(), offset, length, 0,
@@ -317,7 +320,7 @@
                                          VK_ACCESS_HOST_WRITE_BIT, copyRegion));
 
         // Immediately release staging buffer. We should probably be using a DynamicBuffer here.
-        contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &stagingBuffer);
+        stagingBuffer.release(contextVk);
     }
     else
     {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.cpp
index fa6c5fc..515b74c 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.cpp
@@ -241,45 +241,46 @@
 // CommandGraphResource implementation.
 CommandGraphResource::CommandGraphResource(CommandGraphResourceType resourceType)
     : mCurrentWritingNode(nullptr), mResourceType(resourceType)
-{}
-
-CommandGraphResource::~CommandGraphResource() = default;
-
-bool CommandGraphResource::isResourceInUse(ContextVk *context) const
 {
-    return context->isSerialInUse(mStoredQueueSerial);
+    mUse.init();
 }
 
-void CommandGraphResource::resetQueueSerial()
+CommandGraphResource::~CommandGraphResource()
 {
-    mCurrentWritingNode = nullptr;
-    mCurrentReadingNodes.clear();
-    mStoredQueueSerial = Serial();
+    mUse.release();
 }
 
-angle::Result CommandGraphResource::recordCommands(ContextVk *context,
+bool CommandGraphResource::isResourceInUse(ContextVk *contextVk) const
+{
+    return mUse.isCurrentlyInGraph() || contextVk->isSerialInUse(mUse.getSerial());
+}
+
+angle::Result CommandGraphResource::recordCommands(ContextVk *contextVk,
                                                    CommandBuffer **commandBufferOut)
 {
-    updateQueueSerial(context->getCurrentQueueSerial());
+    updateCurrentAccessNodes();
 
     if (!hasChildlessWritingNode() || hasStartedRenderPass())
     {
-        startNewCommands(context);
+        startNewCommands(contextVk);
         return mCurrentWritingNode->beginOutsideRenderPassRecording(
-            context, context->getCommandPool(), commandBufferOut);
+            contextVk, contextVk->getCommandPool(), commandBufferOut);
     }
 
     CommandBuffer *outsideRenderPassCommands = mCurrentWritingNode->getOutsideRenderPassCommands();
     if (!outsideRenderPassCommands->valid())
     {
         ANGLE_TRY(mCurrentWritingNode->beginOutsideRenderPassRecording(
-            context, context->getCommandPool(), commandBufferOut));
+            contextVk, contextVk->getCommandPool(), commandBufferOut));
     }
     else
     {
         *commandBufferOut = outsideRenderPassCommands;
     }
 
+    // Store reference to usage in graph.
+    contextVk->getCommandGraph()->onResourceUse(mUse);
+
     return angle::Result::Continue;
 }
 
@@ -306,17 +307,19 @@
     return mCurrentWritingNode->beginInsideRenderPassRecording(contextVk, commandBufferOut);
 }
 
-void CommandGraphResource::addWriteDependency(CommandGraphResource *writingResource)
+void CommandGraphResource::addWriteDependency(ContextVk *contextVk,
+                                              CommandGraphResource *writingResource)
 {
     CommandGraphNode *writingNode = writingResource->mCurrentWritingNode;
     ASSERT(writingNode);
 
-    onWriteImpl(writingNode, writingResource->getStoredQueueSerial());
+    onWriteImpl(contextVk, writingNode);
 }
 
-void CommandGraphResource::addReadDependency(CommandGraphResource *readingResource)
+void CommandGraphResource::addReadDependency(ContextVk *contextVk,
+                                             CommandGraphResource *readingResource)
 {
-    updateQueueSerial(readingResource->getStoredQueueSerial());
+    onGraphAccess(contextVk->getCommandGraph());
 
     CommandGraphNode *readingNode = readingResource->mCurrentWritingNode;
     ASSERT(readingNode);
@@ -341,12 +344,12 @@
     CommandGraphNode *newCommands =
         contextVk->getCommandGraph()->allocateNode(CommandGraphNodeFunction::Generic);
     newCommands->setDiagnosticInfo(mResourceType, reinterpret_cast<uintptr_t>(this));
-    onWriteImpl(newCommands, contextVk->getCurrentQueueSerial());
+    onWriteImpl(contextVk, newCommands);
 }
 
-void CommandGraphResource::onWriteImpl(CommandGraphNode *writingNode, Serial currentSerial)
+void CommandGraphResource::onWriteImpl(ContextVk *contextVk, CommandGraphNode *writingNode)
 {
-    updateQueueSerial(currentSerial);
+    onGraphAccess(contextVk->getCommandGraph());
 
     // Make sure any open reads and writes finish before we execute 'writingNode'.
     if (!mCurrentReadingNodes.empty())
@@ -822,6 +825,42 @@
     *allocatedMemoryOut += commandBufferAllocated;
 }
 
+// SharedGarbage implementation.
+SharedGarbage::SharedGarbage() = default;
+
+SharedGarbage::SharedGarbage(SharedGarbage &&other)
+{
+    *this = std::move(other);
+}
+
+SharedGarbage::SharedGarbage(SharedResourceUse &&use, std::vector<GarbageObject> &&garbage)
+    : mLifetime(std::move(use)), mGarbage(std::move(garbage))
+{}
+
+SharedGarbage::~SharedGarbage() = default;
+
+SharedGarbage &SharedGarbage::operator=(SharedGarbage &&rhs)
+{
+    std::swap(mLifetime, rhs.mLifetime);
+    std::swap(mGarbage, rhs.mGarbage);
+    return *this;
+}
+
+bool SharedGarbage::destroyIfComplete(VkDevice device, Serial completedSerial)
+{
+    if (mLifetime.isCurrentlyInGraph() || mLifetime.getSerial() > completedSerial)
+        return false;
+
+    mLifetime.release();
+
+    for (GarbageObject &object : mGarbage)
+    {
+        object.destroy(device);
+    }
+
+    return true;
+}
+
 // CommandGraph implementation.
 CommandGraph::CommandGraph(bool enableGraphDiagnostics, angle::PoolAllocator *poolAllocator)
     : mEnableGraphDiagnostics(enableGraphDiagnostics),
@@ -835,6 +874,7 @@
 CommandGraph::~CommandGraph()
 {
     ASSERT(empty());
+    ASSERT(mResourceUses.empty());
 }
 
 CommandGraphNode *CommandGraph::allocateNode(CommandGraphNodeFunction function)
@@ -902,6 +942,8 @@
         dumpGraphDotFile(std::cout);
     }
 
+    releaseResourceUsesAndUpdateSerials(serial);
+
     std::vector<CommandGraphNode *> nodeStack;
 
     VkCommandBufferBeginInfo beginInfo = {};
@@ -1226,5 +1268,24 @@
     }
 }
 
+void CommandGraph::releaseResourceUses()
+{
+    for (SharedResourceUse &use : mResourceUses)
+    {
+        use.release();
+    }
+
+    mResourceUses.clear();
+}
+
+void CommandGraph::releaseResourceUsesAndUpdateSerials(Serial serial)
+{
+    for (SharedResourceUse &use : mResourceUses)
+    {
+        use.releaseAndUpdateSerial(serial);
+    }
+
+    mResourceUses.clear();
+}
 }  // namespace vk
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.h
index 89cd970..c2e13d6 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/CommandGraph.h
@@ -18,6 +18,7 @@
 
 namespace vk
 {
+class CommandGraph;
 
 enum class VisitedState
 {
@@ -270,6 +271,104 @@
     RenderPassOwner *mRenderPassOwner;
 };
 
+// Tracks how a resource is used in a command graph and in a VkQueue. The reference count indicates
+// the number of times a resource is used in the graph. The serial indicates the last current use
+// of a resource in the VkQueue. The reference count and serial together can determine if a
+// resource is in use.
+struct ResourceUse
+{
+    ResourceUse() = default;
+
+    uint32_t counter = 0;
+    Serial serial;
+};
+
+class SharedResourceUse final : angle::NonCopyable
+{
+  public:
+    SharedResourceUse() : mUse(nullptr) {}
+    ~SharedResourceUse() { ASSERT(!valid()); }
+    SharedResourceUse(SharedResourceUse &&rhs) : mUse(rhs.mUse) { rhs.mUse = nullptr; }
+    SharedResourceUse &operator=(SharedResourceUse &&rhs)
+    {
+        std::swap(mUse, rhs.mUse);
+        return *this;
+    }
+
+    ANGLE_INLINE bool valid() const { return mUse != nullptr; }
+
+    void init()
+    {
+        ASSERT(!mUse);
+        mUse = new ResourceUse;
+        mUse->counter++;
+    }
+
+    ANGLE_INLINE void release()
+    {
+        ASSERT(valid());
+        ASSERT(mUse->counter > 0);
+        if (--mUse->counter == 0)
+        {
+            delete mUse;
+        }
+        mUse = nullptr;
+    }
+
+    ANGLE_INLINE void releaseAndUpdateSerial(Serial serial)
+    {
+        ASSERT(valid());
+        ASSERT(mUse->counter > 0);
+        ASSERT(mUse->serial <= serial);
+        mUse->serial = serial;
+        release();
+    }
+
+    ANGLE_INLINE void set(const SharedResourceUse &rhs)
+    {
+        ASSERT(rhs.valid());
+        ASSERT(!valid());
+        ASSERT(rhs.mUse->counter < std::numeric_limits<uint32_t>::max());
+        mUse = rhs.mUse;
+        mUse->counter++;
+    }
+
+    ANGLE_INLINE Serial getSerial() const
+    {
+        ASSERT(valid());
+        return mUse->serial;
+    }
+
+    // The base counter value for an live resource is "1". Any value greater than one indicates
+    // the resource is in use by a vk::CommandGraph.
+    ANGLE_INLINE bool isCurrentlyInGraph() const
+    {
+        ASSERT(valid());
+        return mUse->counter > 1;
+    }
+
+  private:
+    ResourceUse *mUse;
+};
+
+class SharedGarbage
+{
+  public:
+    SharedGarbage();
+    SharedGarbage(SharedGarbage &&other);
+    SharedGarbage(SharedResourceUse &&use, std::vector<GarbageObject> &&garbage);
+    ~SharedGarbage();
+    SharedGarbage &operator=(SharedGarbage &&rhs);
+
+    bool destroyIfComplete(VkDevice device, Serial completedSerial);
+
+  private:
+    SharedResourceUse mLifetime;
+    std::vector<GarbageObject> mGarbage;
+};
+
+using SharedGarbageList = std::vector<SharedGarbage>;
+
 // This is a helper class for back-end objects used in Vk command buffers. It records a serial
 // at command recording times indicating an order in the queue. We use Fences to detect when
 // commands finish, and then release any unreferenced and deleted resources based on the stored
@@ -282,35 +381,21 @@
     virtual ~CommandGraphResource();
 
     // Returns true if the resource is in use by the renderer.
-    bool isResourceInUse(ContextVk *context) const;
+    bool isResourceInUse(ContextVk *contextVk) const;
 
-    // Get the current queue serial for this resource. Used to release resources, and for
     // queries, to know if the queue they are submitted on has finished execution.
-    Serial getStoredQueueSerial() const { return mStoredQueueSerial; }
+    Serial getLatestSerial() const { return mUse.getSerial(); }
 
     // Sets up dependency relations. 'this' resource is the resource being written to.
-    void addWriteDependency(CommandGraphResource *writingResource);
+    void addWriteDependency(ContextVk *contextVk, CommandGraphResource *writingResource);
 
     // Sets up dependency relations. 'this' resource is the resource being read.
-    void addReadDependency(CommandGraphResource *readingResource);
+    void addReadDependency(ContextVk *contextVk, CommandGraphResource *readingResource);
 
     // Updates the in-use serial tracked for this resource. Will clear dependencies if the resource
     // was not used in this set of command nodes.
-    ANGLE_INLINE void updateQueueSerial(Serial queueSerial)
-    {
-        ASSERT(queueSerial >= mStoredQueueSerial);
-
-        if (queueSerial > mStoredQueueSerial)
-        {
-            mCurrentWritingNode = nullptr;
-            mCurrentReadingNodes.clear();
-            mStoredQueueSerial = queueSerial;
-        }
-    }
-
-    // Reset the current queue serial for this resource. Will clear dependencies if the resource
-    // was not used in this set of command nodes.
-    void resetQueueSerial();
+    void onGraphAccess(CommandGraph *commandGraph);
+    void updateCurrentAccessNodes();
 
     // Allocates a write node via getNewWriteNode and returns a started command buffer.
     // The started command buffer will render outside of a RenderPass.
@@ -328,115 +413,49 @@
                                   CommandBuffer **commandBufferOut);
 
     // Checks if we're in a RenderPass without children.
-    bool hasStartedRenderPass() const
-    {
-        return hasChildlessWritingNode() &&
-               mCurrentWritingNode->getInsideRenderPassCommands()->valid();
-    }
+    bool hasStartedRenderPass() const;
 
     // Checks if we're in a RenderPass that encompasses renderArea, returning true if so. Updates
     // serial internally. Returns the started command buffer in commandBufferOut.
-    ANGLE_INLINE bool appendToStartedRenderPass(Serial currentQueueSerial,
-                                                const gl::Rectangle &renderArea,
-                                                CommandBuffer **commandBufferOut)
-    {
-        updateQueueSerial(currentQueueSerial);
-        if (hasStartedRenderPass())
-        {
-            if (mCurrentWritingNode->getRenderPassRenderArea().encloses(renderArea))
-            {
-                *commandBufferOut = mCurrentWritingNode->getInsideRenderPassCommands();
-                return true;
-            }
-        }
-
-        return false;
-    }
+    bool appendToStartedRenderPass(CommandGraph *graph,
+                                   const gl::Rectangle &renderArea,
+                                   CommandBuffer **commandBufferOut);
 
     // Returns true if the render pass is started, but there are no commands yet recorded in it.
     // This is useful to know if the render pass ops can be modified.
-    bool renderPassStartedButEmpty() const
-    {
-        return hasStartedRenderPass() &&
-               (!vk::CommandBuffer::CanKnowIfEmpty() ||
-                mCurrentWritingNode->getInsideRenderPassCommands()->empty());
-    }
+    bool renderPassStartedButEmpty() const;
 
-    void clearRenderPassColorAttachment(size_t attachmentIndex, const VkClearColorValue &clearValue)
-    {
-        ASSERT(renderPassStartedButEmpty());
-        mCurrentWritingNode->clearRenderPassColorAttachment(attachmentIndex, clearValue);
-    }
+    void clearRenderPassColorAttachment(size_t attachmentIndex,
+                                        const VkClearColorValue &clearValue);
+    void clearRenderPassDepthAttachment(size_t attachmentIndex, float depth);
+    void clearRenderPassStencilAttachment(size_t attachmentIndex, uint32_t stencil);
 
-    void clearRenderPassDepthAttachment(size_t attachmentIndex, float depth)
-    {
-        ASSERT(renderPassStartedButEmpty());
-        mCurrentWritingNode->clearRenderPassDepthAttachment(attachmentIndex, depth);
-    }
-
-    void clearRenderPassStencilAttachment(size_t attachmentIndex, uint32_t stencil)
-    {
-        ASSERT(renderPassStartedButEmpty());
-        mCurrentWritingNode->clearRenderPassStencilAttachment(attachmentIndex, stencil);
-    }
-
-    void invalidateRenderPassColorAttachment(size_t attachmentIndex)
-    {
-        ASSERT(hasStartedRenderPass());
-        mCurrentWritingNode->invalidateRenderPassColorAttachment(attachmentIndex);
-    }
-
-    void invalidateRenderPassDepthAttachment(size_t attachmentIndex)
-    {
-        ASSERT(hasStartedRenderPass());
-        mCurrentWritingNode->invalidateRenderPassDepthAttachment(attachmentIndex);
-    }
-
-    void invalidateRenderPassStencilAttachment(size_t attachmentIndex)
-    {
-        ASSERT(hasStartedRenderPass());
-        mCurrentWritingNode->invalidateRenderPassStencilAttachment(attachmentIndex);
-    }
+    void invalidateRenderPassColorAttachment(size_t attachmentIndex);
+    void invalidateRenderPassDepthAttachment(size_t attachmentIndex);
+    void invalidateRenderPassStencilAttachment(size_t attachmentIndex);
 
     // Accessor for RenderPass RenderArea.
-    const gl::Rectangle &getRenderPassRenderArea() const
-    {
-        ASSERT(hasStartedRenderPass());
-        return mCurrentWritingNode->getRenderPassRenderArea();
-    }
+    const gl::Rectangle &getRenderPassRenderArea() const;
 
     // Called when 'this' object changes, but we'd like to start a new command buffer later.
     void finishCurrentCommands(ContextVk *contextVk);
 
     // Store a deferred memory barrier. Will be recorded into a primary command buffer at submit.
-    void addGlobalMemoryBarrier(VkFlags srcAccess, VkFlags dstAccess, VkPipelineStageFlags stages)
-    {
-        ASSERT(mCurrentWritingNode);
-        mCurrentWritingNode->addGlobalMemoryBarrier(srcAccess, dstAccess, stages);
-    }
+    void addGlobalMemoryBarrier(VkFlags srcAccess, VkFlags dstAccess, VkPipelineStageFlags stages);
 
   protected:
     explicit CommandGraphResource(CommandGraphResourceType resourceType);
 
+    // Current resource lifetime.
+    SharedResourceUse mUse;
+
   private:
     // Returns true if this node has a current writing node with no children.
-    ANGLE_INLINE bool hasChildlessWritingNode() const
-    {
-        // Note: currently, we don't have a resource that can issue both generic and special
-        // commands.  We don't create read/write dependencies between mixed generic/special
-        // resources either.  As such, we expect the function to always be generic here.  If such a
-        // resource is added in the future, this can add a check for function == generic and fail if
-        // false.
-        ASSERT(mCurrentWritingNode == nullptr ||
-               mCurrentWritingNode->getFunction() == CommandGraphNodeFunction::Generic);
-        return (mCurrentWritingNode != nullptr && !mCurrentWritingNode->hasChildren());
-    }
+    ANGLE_INLINE bool hasChildlessWritingNode() const;
 
     void startNewCommands(ContextVk *contextVk);
 
-    void onWriteImpl(CommandGraphNode *writingNode, Serial currentSerial);
-
-    Serial mStoredQueueSerial;
+    void onWriteImpl(ContextVk *contextVk, CommandGraphNode *writingNode);
 
     std::vector<CommandGraphNode *> mCurrentReadingNodes;
 
@@ -506,6 +525,9 @@
     // Host-visible buffer write availability operation:
     void makeHostVisibleBufferWriteAvailable();
 
+    void onResourceUse(const SharedResourceUse &resourceUse);
+    void releaseResourceUses();
+
   private:
     CommandGraphNode *allocateBarrierNode(CommandGraphNodeFunction function,
                                           CommandGraphResourceType resourceType,
@@ -516,6 +538,7 @@
 
     void dumpGraphDotFile(std::ostream &out) const;
     void updateOverlay(ContextVk *contextVk) const;
+    void releaseResourceUsesAndUpdateSerials(Serial serial);
 
     std::vector<CommandGraphNode *> mNodes;
     bool mEnableGraphDiagnostics;
@@ -569,7 +592,136 @@
     // issued.
     static constexpr size_t kInvalidNodeIndex = std::numeric_limits<std::size_t>::max();
     size_t mLastBarrierIndex;
+
+    std::vector<SharedResourceUse> mResourceUses;
 };
+
+// CommandGraphResource inlines.
+ANGLE_INLINE bool CommandGraphResource::hasStartedRenderPass() const
+{
+    return hasChildlessWritingNode() && mCurrentWritingNode->getInsideRenderPassCommands()->valid();
+}
+
+ANGLE_INLINE void CommandGraphResource::updateCurrentAccessNodes()
+{
+    // Clear dependencies if this is a new access.
+    if (!mUse.isCurrentlyInGraph())
+    {
+        mCurrentWritingNode = nullptr;
+        mCurrentReadingNodes.clear();
+    }
+}
+
+ANGLE_INLINE void CommandGraphResource::onGraphAccess(CommandGraph *commandGraph)
+{
+    updateCurrentAccessNodes();
+
+    // Store reference to usage in graph.
+    commandGraph->onResourceUse(mUse);
+}
+
+ANGLE_INLINE bool CommandGraphResource::appendToStartedRenderPass(CommandGraph *graph,
+                                                                  const gl::Rectangle &renderArea,
+                                                                  CommandBuffer **commandBufferOut)
+{
+    updateCurrentAccessNodes();
+
+    if (hasStartedRenderPass())
+    {
+        // Store reference to usage in graph.
+        graph->onResourceUse(mUse);
+
+        if (mCurrentWritingNode->getRenderPassRenderArea().encloses(renderArea))
+        {
+            *commandBufferOut = mCurrentWritingNode->getInsideRenderPassCommands();
+            return true;
+        }
+    }
+
+    return false;
+}
+
+ANGLE_INLINE bool CommandGraphResource::renderPassStartedButEmpty() const
+{
+    return hasStartedRenderPass() && (!vk::CommandBuffer::CanKnowIfEmpty() ||
+                                      mCurrentWritingNode->getInsideRenderPassCommands()->empty());
+}
+
+ANGLE_INLINE void CommandGraphResource::clearRenderPassColorAttachment(
+    size_t attachmentIndex,
+    const VkClearColorValue &clearValue)
+{
+    ASSERT(renderPassStartedButEmpty());
+    mCurrentWritingNode->clearRenderPassColorAttachment(attachmentIndex, clearValue);
+}
+
+ANGLE_INLINE void CommandGraphResource::clearRenderPassDepthAttachment(size_t attachmentIndex,
+                                                                       float depth)
+{
+    ASSERT(renderPassStartedButEmpty());
+    mCurrentWritingNode->clearRenderPassDepthAttachment(attachmentIndex, depth);
+}
+
+ANGLE_INLINE void CommandGraphResource::clearRenderPassStencilAttachment(size_t attachmentIndex,
+                                                                         uint32_t stencil)
+{
+    ASSERT(renderPassStartedButEmpty());
+    mCurrentWritingNode->clearRenderPassStencilAttachment(attachmentIndex, stencil);
+}
+
+ANGLE_INLINE void CommandGraphResource::invalidateRenderPassColorAttachment(size_t attachmentIndex)
+{
+    ASSERT(hasStartedRenderPass());
+    mCurrentWritingNode->invalidateRenderPassColorAttachment(attachmentIndex);
+}
+
+ANGLE_INLINE void CommandGraphResource::invalidateRenderPassDepthAttachment(size_t attachmentIndex)
+{
+    ASSERT(hasStartedRenderPass());
+    mCurrentWritingNode->invalidateRenderPassDepthAttachment(attachmentIndex);
+}
+
+ANGLE_INLINE void CommandGraphResource::invalidateRenderPassStencilAttachment(
+    size_t attachmentIndex)
+{
+    ASSERT(hasStartedRenderPass());
+    mCurrentWritingNode->invalidateRenderPassStencilAttachment(attachmentIndex);
+}
+
+ANGLE_INLINE const gl::Rectangle &CommandGraphResource::getRenderPassRenderArea() const
+{
+    ASSERT(hasStartedRenderPass());
+    return mCurrentWritingNode->getRenderPassRenderArea();
+}
+
+ANGLE_INLINE void CommandGraphResource::addGlobalMemoryBarrier(VkFlags srcAccess,
+                                                               VkFlags dstAccess,
+                                                               VkPipelineStageFlags stages)
+{
+    ASSERT(mCurrentWritingNode);
+    mCurrentWritingNode->addGlobalMemoryBarrier(srcAccess, dstAccess, stages);
+}
+
+ANGLE_INLINE bool CommandGraphResource::hasChildlessWritingNode() const
+{
+    // Note: currently, we don't have a resource that can issue both generic and special
+    // commands.  We don't create read/write dependencies between mixed generic/special
+    // resources either.  As such, we expect the function to always be generic here.  If such a
+    // resource is added in the future, this can add a check for function == generic and fail if
+    // false.
+    ASSERT(mCurrentWritingNode == nullptr ||
+           mCurrentWritingNode->getFunction() == CommandGraphNodeFunction::Generic);
+    return (mCurrentWritingNode != nullptr && !mCurrentWritingNode->hasChildren());
+}
+
+// CommandGraph inlines.
+ANGLE_INLINE void CommandGraph::onResourceUse(const SharedResourceUse &resourceUse)
+{
+    ASSERT(!empty());
+    SharedResourceUse newUse;
+    newUse.set(resourceUse);
+    mResourceUses.emplace_back(std::move(newUse));
+}
 }  // namespace vk
 }  // namespace rx
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.cpp
index cfab054..2a327df 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.cpp
@@ -98,9 +98,6 @@
 constexpr size_t kDefaultPoolAllocatorPageSize  = 16 * 1024;
 constexpr size_t kDriverUniformsAllocatorPageSize = 4 * 1024;
 
-// Wait a maximum of 10s.  If that times out, we declare it a failure.
-constexpr uint64_t kMaxFenceWaitTimeNs = 10'000'000'000llu;
-
 constexpr size_t kInFlightCommandsLimit = 100u;
 
 // Initially dumping the command graphs is disabled.
@@ -198,16 +195,16 @@
 }
 
 // CommandBatch implementation.
-ContextVk::CommandBatch::CommandBatch() = default;
+CommandBatch::CommandBatch() = default;
 
-ContextVk::CommandBatch::~CommandBatch() = default;
+CommandBatch::~CommandBatch() = default;
 
-ContextVk::CommandBatch::CommandBatch(CommandBatch &&other)
+CommandBatch::CommandBatch(CommandBatch &&other)
 {
     *this = std::move(other);
 }
 
-ContextVk::CommandBatch &ContextVk::CommandBatch::operator=(CommandBatch &&other)
+CommandBatch &CommandBatch::operator=(CommandBatch &&other)
 {
     std::swap(primaryCommands, other.primaryCommands);
     std::swap(commandPool, other.commandPool);
@@ -216,13 +213,294 @@
     return *this;
 }
 
-void ContextVk::CommandBatch::destroy(VkDevice device)
+void CommandBatch::destroy(VkDevice device)
 {
     primaryCommands.destroy(device);
     commandPool.destroy(device);
     fence.reset(device);
 }
 
+// CommandQueue implementation.
+CommandQueue::CommandQueue()  = default;
+CommandQueue::~CommandQueue() = default;
+
+void CommandQueue::destroy(VkDevice device)
+{
+    mPrimaryCommandPool.destroy(device);
+    ASSERT(mInFlightCommands.empty() && mGarbageQueue.empty());
+}
+
+angle::Result CommandQueue::init(vk::Context *context)
+{
+    RendererVk *renderer = context->getRenderer();
+
+    // Initialize the command pool now that we know the queue family index.
+    uint32_t queueFamilyIndex = renderer->getQueueFamilyIndex();
+    if (!renderer->getFeatures().transientCommandBuffer.enabled)
+    {
+        ANGLE_TRY(mPrimaryCommandPool.init(context, queueFamilyIndex));
+    }
+
+    return angle::Result::Continue;
+}
+
+angle::Result CommandQueue::checkCompletedCommands(vk::Context *context)
+{
+    RendererVk *renderer = context->getRenderer();
+    VkDevice device      = renderer->getDevice();
+
+    int finishedCount = 0;
+
+    for (CommandBatch &batch : mInFlightCommands)
+    {
+        VkResult result = batch.fence.get().getStatus(device);
+        if (result == VK_NOT_READY)
+        {
+            break;
+        }
+        ANGLE_VK_TRY(context, result);
+
+        renderer->onCompletedSerial(batch.serial);
+
+        renderer->resetSharedFence(&batch.fence);
+        ANGLE_TRACE_EVENT0("gpu.angle", "command buffer recycling");
+        batch.commandPool.destroy(device);
+        ANGLE_TRY(releasePrimaryCommandBuffer(context, std::move(batch.primaryCommands)));
+        ++finishedCount;
+    }
+
+    mInFlightCommands.erase(mInFlightCommands.begin(), mInFlightCommands.begin() + finishedCount);
+
+    Serial lastCompleted = renderer->getLastCompletedQueueSerial();
+
+    size_t freeIndex = 0;
+    for (; freeIndex < mGarbageQueue.size(); ++freeIndex)
+    {
+        vk::GarbageAndSerial &garbageList = mGarbageQueue[freeIndex];
+        if (garbageList.getSerial() < lastCompleted)
+        {
+            for (vk::GarbageObject &garbage : garbageList.get())
+            {
+                garbage.destroy(device);
+            }
+        }
+        else
+        {
+            break;
+        }
+    }
+
+    // Remove the entries from the garbage list - they should be ready to go.
+    if (freeIndex > 0)
+    {
+        mGarbageQueue.erase(mGarbageQueue.begin(), mGarbageQueue.begin() + freeIndex);
+    }
+
+    return angle::Result::Continue;
+}
+
+angle::Result CommandQueue::releaseToCommandBatch(vk::Context *context,
+                                                  vk::PrimaryCommandBuffer &&commandBuffer,
+                                                  vk::CommandPool *commandPool,
+                                                  CommandBatch *batch)
+{
+    RendererVk *renderer = context->getRenderer();
+    VkDevice device      = renderer->getDevice();
+
+    batch->primaryCommands = std::move(commandBuffer);
+
+    if (commandPool->valid())
+    {
+        batch->commandPool = std::move(*commandPool);
+        // Recreate CommandPool
+        VkCommandPoolCreateInfo poolInfo = {};
+        poolInfo.sType                   = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
+        poolInfo.flags                   = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT;
+        poolInfo.queueFamilyIndex        = renderer->getQueueFamilyIndex();
+
+        ANGLE_VK_TRY(context, commandPool->init(device, poolInfo));
+    }
+
+    return angle::Result::Continue;
+}
+
+void CommandQueue::clearAllGarbage(VkDevice device)
+{
+    for (vk::GarbageAndSerial &garbageList : mGarbageQueue)
+    {
+        for (vk::GarbageObject &garbage : garbageList.get())
+        {
+            garbage.destroy(device);
+        }
+    }
+    mGarbageQueue.clear();
+}
+
+angle::Result CommandQueue::allocatePrimaryCommandBuffer(vk::Context *context,
+                                                         const vk::CommandPool &commandPool,
+                                                         vk::PrimaryCommandBuffer *commandBufferOut)
+{
+    RendererVk *renderer = context->getRenderer();
+    VkDevice device      = renderer->getDevice();
+
+    if (ANGLE_LIKELY(!renderer->getFeatures().transientCommandBuffer.enabled))
+    {
+        return mPrimaryCommandPool.allocate(context, commandBufferOut);
+    }
+
+    VkCommandBufferAllocateInfo commandBufferInfo = {};
+    commandBufferInfo.sType                       = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
+    commandBufferInfo.commandPool                 = commandPool.getHandle();
+    commandBufferInfo.level                       = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
+    commandBufferInfo.commandBufferCount          = 1;
+
+    ANGLE_VK_TRY(context, commandBufferOut->init(device, commandBufferInfo));
+    return angle::Result::Continue;
+}
+
+angle::Result CommandQueue::releasePrimaryCommandBuffer(vk::Context *context,
+                                                        vk::PrimaryCommandBuffer &&commandBuffer)
+{
+    RendererVk *renderer = context->getRenderer();
+    VkDevice device      = renderer->getDevice();
+
+    if (ANGLE_LIKELY(!renderer->getFeatures().transientCommandBuffer.enabled))
+    {
+        ASSERT(mPrimaryCommandPool.valid());
+        ANGLE_TRY(mPrimaryCommandPool.collect(context, std::move(commandBuffer)));
+    }
+    else
+    {
+        commandBuffer.destroy(device);
+    }
+
+    return angle::Result::Continue;
+}
+
+void CommandQueue::handleDeviceLost(RendererVk *renderer)
+{
+    VkDevice device = renderer->getDevice();
+
+    for (CommandBatch &batch : mInFlightCommands)
+    {
+        // On device loss we need to wait for fence to be signaled before destroying it
+        VkResult status = batch.fence.get().wait(device, renderer->getMaxFenceWaitTimeNs());
+        // If the wait times out, it is probably not possible to recover from lost device
+        ASSERT(status == VK_SUCCESS || status == VK_ERROR_DEVICE_LOST);
+
+        // On device lost, here simply destroy the CommandBuffer, it will fully cleared later
+        // by CommandPool::destroy
+        batch.primaryCommands.destroy(device);
+
+        batch.commandPool.destroy(device);
+        batch.fence.reset(device);
+    }
+    mInFlightCommands.clear();
+}
+
+bool CommandQueue::hasInFlightCommands() const
+{
+    return !mInFlightCommands.empty();
+}
+
+angle::Result CommandQueue::finishToSerialOrTimeout(vk::Context *context,
+                                                    Serial serial,
+                                                    uint64_t timeout,
+                                                    bool *outTimedOut)
+{
+    *outTimedOut = false;
+
+    if (mInFlightCommands.empty())
+    {
+        return angle::Result::Continue;
+    }
+
+    // Find the first batch with serial equal to or bigger than given serial (note that
+    // the batch serials are unique, otherwise upper-bound would have been necessary).
+    size_t batchIndex = mInFlightCommands.size() - 1;
+    for (size_t i = 0; i < mInFlightCommands.size(); ++i)
+    {
+        if (mInFlightCommands[i].serial >= serial)
+        {
+            batchIndex = i;
+            break;
+        }
+    }
+    const CommandBatch &batch = mInFlightCommands[batchIndex];
+
+    // Wait for it finish
+    VkDevice device = context->getDevice();
+    VkResult status =
+        batch.fence.get().wait(device, context->getRenderer()->getMaxFenceWaitTimeNs());
+
+    // If timed out, report it as such.
+    if (status == VK_TIMEOUT)
+    {
+        *outTimedOut = true;
+        return angle::Result::Continue;
+    }
+
+    ANGLE_VK_TRY(context, status);
+
+    // Clean up finished batches.
+    return checkCompletedCommands(context);
+}
+
+angle::Result CommandQueue::submitFrame(vk::Context *context,
+                                        const VkSubmitInfo &submitInfo,
+                                        const vk::Shared<vk::Fence> &sharedFence,
+                                        vk::GarbageList *currentGarbage,
+                                        vk::CommandPool *commandPool,
+                                        vk::PrimaryCommandBuffer &&commandBuffer)
+{
+    ANGLE_TRACE_EVENT0("gpu.angle", "CommandQueue::submitFrame");
+    VkFenceCreateInfo fenceInfo = {};
+    fenceInfo.sType             = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
+    fenceInfo.flags             = 0;
+
+    RendererVk *renderer = context->getRenderer();
+    VkDevice device      = renderer->getDevice();
+
+    vk::DeviceScoped<CommandBatch> scopedBatch(device);
+    CommandBatch &batch = scopedBatch.get();
+    batch.fence.copy(device, sharedFence);
+
+    ANGLE_TRY(renderer->queueSubmit(context, submitInfo, batch.fence.get(), &batch.serial));
+
+    if (!currentGarbage->empty())
+    {
+        mGarbageQueue.emplace_back(std::move(*currentGarbage), batch.serial);
+    }
+
+    // Store the primary CommandBuffer and command pool used for secondary CommandBuffers
+    // in the in-flight list.
+    ANGLE_TRY(releaseToCommandBatch(context, std::move(commandBuffer), commandPool, &batch));
+
+    mInFlightCommands.emplace_back(scopedBatch.release());
+
+    // CPU should be throttled to avoid mInFlightCommands from growing too fast.  That is done
+    // on swap() though, and there could be multiple submissions in between (through glFlush()
+    // calls), so the limit is larger than the expected number of images.  The
+    // InterleavedAttributeDataBenchmark perf test for example issues a large number of flushes.
+    ASSERT(mInFlightCommands.size() <= kInFlightCommandsLimit);
+
+    ANGLE_TRY(checkCompletedCommands(context));
+
+    return angle::Result::Continue;
+}
+
+vk::Shared<vk::Fence> CommandQueue::getLastSubmittedFence(const vk::Context *context) const
+{
+    vk::Shared<vk::Fence> fence;
+    if (!mInFlightCommands.empty())
+    {
+        fence.copy(context->getDevice(), mInFlightCommands.back().fence);
+    }
+
+    return fence;
+}
+
+// ContextVk implementation.
 ContextVk::ContextVk(const gl::State &state, gl::ErrorSet *errorSet, RendererVk *renderer)
     : ContextImpl(state, errorSet),
       vk::Context(renderer),
@@ -241,8 +519,6 @@
       mIsAnyHostVisibleBufferWritten(false),
       mEmulateSeamfulCubeMapSampling(false),
       mUseOldRewriteStructSamplers(false),
-      mLastCompletedQueueSerial(renderer->nextSerial()),
-      mCurrentQueueSerial(renderer->nextSerial()),
       mPoolAllocator(kDefaultPoolAllocatorPageSize, 1),
       mCommandGraph(kEnableCommandGraphDiagnostics, &mPoolAllocator),
       mGpuEventsEnabled(false),
@@ -310,13 +586,14 @@
 
 void ContextVk::onDestroy(const gl::Context *context)
 {
-    // Force a flush on destroy.
+    // This will not destroy any resources. It will release them to be collected after finish.
+    mIncompleteTextures.onDestroy(context);
+
+    // Flush and complete current outstanding work before destruction.
     (void)finishImpl();
 
     VkDevice device = getDevice();
 
-    mIncompleteTextures.onDestroy(context);
-
     for (DriverUniformsDescriptorSet &driverUniforms : mDriverUniforms)
     {
         driverUniforms.destroy(device);
@@ -334,10 +611,11 @@
         queryPool.destroy(device);
     }
 
-    if (!mInFlightCommands.empty() || !mGarbage.empty())
-    {
-        (void)finishImpl();
-    }
+    ASSERT(mCurrentGarbage.empty());
+
+    mCommandQueue.destroy(device);
+
+    mCommandGraph.releaseResourceUses();
 
     mUtils.destroy(device);
 
@@ -347,11 +625,6 @@
     mGpuEventQueryPool.destroy(device);
     mCommandPool.destroy(device);
 
-    if (ANGLE_LIKELY(!mRenderer->getFeatures().transientCommandBuffer.enabled))
-    {
-        mPrimaryCommandPool.destroy(this);
-    }
-
     for (vk::CommandPool &pool : mCommandPoolFreeList)
     {
         pool.destroy(device);
@@ -407,21 +680,17 @@
         buffer.init(mRenderer, kVertexBufferUsage, 1, kDefaultBufferSize, true);
     }
 
-    // Initialize the command pool now that we know the queue family index.
-    uint32_t queueFamilyIndex = getRenderer()->getQueueFamilyIndex();
-    if (ANGLE_LIKELY(!mRenderer->getFeatures().transientCommandBuffer.enabled))
+    ANGLE_TRY(mCommandQueue.init(this));
+
+    if (mRenderer->getFeatures().transientCommandBuffer.enabled)
     {
-        ANGLE_TRY(mPrimaryCommandPool.init(this, queueFamilyIndex));
-    }
-    else
-    {
-        // Once the transientCommandBuffer issue being resolved, the commandPool will only
+        // Once http://anglebug.com/3508 is resolved, the commandPool will only
         // used for secondaryBuffer allocation, so we can guard this block of code use macro
-        // ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS
+        // ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS.
         VkCommandPoolCreateInfo commandPoolInfo = {};
         commandPoolInfo.sType                   = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
         commandPoolInfo.flags                   = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT;
-        commandPoolInfo.queueFamilyIndex        = queueFamilyIndex;
+        commandPoolInfo.queueFamilyIndex        = mRenderer->getQueueFamilyIndex();
 
         ANGLE_VK_TRY(this, mCommandPool.init(getDevice(), commandPoolInfo));
     }
@@ -430,8 +699,8 @@
     angle::PlatformMethods *platform = ANGLEPlatformCurrent();
     ASSERT(platform);
 
-    // GPU tracing workaround for anglebug.com/2927.  The renderer should not emit gpu events during
-    // platform discovery.
+    // GPU tracing workaround for anglebug.com/2927.  The renderer should not emit gpu events
+    // during platform discovery.
     const unsigned char *gpuEventsEnabled =
         platform->getTraceCategoryEnabledFlag(platform, "gpu.angle.gpu");
     mGpuEventsEnabled = gpuEventsEnabled && *gpuEventsEnabled;
@@ -464,10 +733,10 @@
 
 angle::Result ContextVk::setupDraw(const gl::Context *context,
                                    gl::PrimitiveMode mode,
-                                   GLint firstVertex,
+                                   GLint firstVertexOrInvalid,
                                    GLsizei vertexOrIndexCount,
                                    GLsizei instanceCount,
-                                   gl::DrawElementsType indexTypeOrNone,
+                                   gl::DrawElementsType indexTypeOrInvalid,
                                    const void *indices,
                                    DirtyBits dirtyBitMask,
                                    vk::CommandBuffer **commandBufferOut)
@@ -481,10 +750,14 @@
     }
 
     // Must be called before the command buffer is started. Can call finish.
-    if (context->getStateCache().hasAnyActiveClientAttrib())
+    if (mVertexArray->getStreamingVertexAttribsMask().any())
     {
-        ANGLE_TRY(mVertexArray->updateClientAttribs(context, firstVertex, vertexOrIndexCount,
-                                                    instanceCount, indexTypeOrNone, indices));
+        ASSERT(firstVertexOrInvalid != -1);
+        // All client attribs & any emulated buffered attribs will be updated
+        ANGLE_TRY(mVertexArray->updateStreamedAttribs(context, firstVertexOrInvalid,
+                                                      vertexOrIndexCount, instanceCount,
+                                                      indexTypeOrInvalid, indices));
+
         mGraphicsDirtyBits.set(DIRTY_BIT_VERTEX_BUFFERS);
     }
 
@@ -497,8 +770,8 @@
         mGraphicsDirtyBits |= mNewGraphicsCommandBufferDirtyBits;
 
         gl::Rectangle scissoredRenderArea = mDrawFramebuffer->getScissoredRenderArea(this);
-        if (!mDrawFramebuffer->appendToStartedRenderPass(
-                getCurrentQueueSerial(), scissoredRenderArea, &mRenderPassCommandBuffer))
+        if (!mDrawFramebuffer->appendToStartedRenderPass(&mCommandGraph, scissoredRenderArea,
+                                                         &mRenderPassCommandBuffer))
         {
             ANGLE_TRY(mDrawFramebuffer->startNewRenderPass(this, scissoredRenderArea,
                                                            &mRenderPassCommandBuffer));
@@ -521,7 +794,8 @@
     // Update transform feedback offsets on every draw call.
     if (mState.isTransformFeedbackActiveUnpaused())
     {
-        mXfbBaseVertex = firstVertex;
+        ASSERT(firstVertexOrInvalid != -1);
+        mXfbBaseVertex = firstVertexOrInvalid;
         invalidateGraphicsDriverUniforms();
     }
 
@@ -584,6 +858,80 @@
                      mIndexedDirtyBitsMask, commandBufferOut);
 }
 
+angle::Result ContextVk::setupIndirectDraw(const gl::Context *context,
+                                           gl::PrimitiveMode mode,
+                                           DirtyBits dirtyBitMask,
+                                           vk::CommandBuffer **commandBufferOut,
+                                           vk::Buffer **indirectBufferOut)
+{
+    ASSERT(mode != gl::PrimitiveMode::LineLoop);
+
+    gl::Buffer *indirectBuffer = mState.getTargetBuffer(gl::BufferBinding::DrawIndirect);
+    ASSERT(indirectBuffer);
+
+    vk::BufferHelper &buffer           = vk::GetImpl(indirectBuffer)->getBuffer();
+    *indirectBufferOut                 = const_cast<vk::Buffer *>(&buffer.getBuffer());
+    vk::FramebufferHelper *framebuffer = mDrawFramebuffer->getFramebuffer();
+    buffer.onRead(this, framebuffer, VK_ACCESS_INDIRECT_COMMAND_READ_BIT);
+
+    ANGLE_TRY(setupDraw(context, mode, -1, 0, 0, gl::DrawElementsType::InvalidEnum, nullptr,
+                        dirtyBitMask, commandBufferOut));
+
+    return angle::Result::Continue;
+}
+
+angle::Result ContextVk::setupIndexedIndirectDraw(const gl::Context *context,
+                                                  gl::PrimitiveMode mode,
+                                                  gl::DrawElementsType indexType,
+                                                  vk::CommandBuffer **commandBufferOut,
+                                                  vk::Buffer **indirectBufferOut)
+{
+    ASSERT(mode != gl::PrimitiveMode::LineLoop);
+
+    if (indexType != mCurrentDrawElementsType)
+    {
+        mCurrentDrawElementsType = indexType;
+        setIndexBufferDirty();
+    }
+
+    return setupIndirectDraw(context, mode, mIndexedDirtyBitsMask, commandBufferOut,
+                             indirectBufferOut);
+}
+
+angle::Result ContextVk::setupLineLoopIndexedIndirectDraw(const gl::Context *context,
+                                                          gl::PrimitiveMode mode,
+                                                          gl::DrawElementsType indexType,
+                                                          const gl::Buffer *indirectBuffer,
+                                                          VkDeviceSize indirectBufferOffset,
+                                                          const gl::Buffer *indexBuffer,
+                                                          vk::CommandBuffer **commandBufferOut,
+                                                          vk::Buffer **indirectBufferOut,
+                                                          VkDeviceSize *indirectBufferOffsetOut)
+{
+    ASSERT(mode == gl::PrimitiveMode::LineLoop);
+
+    BufferVk *indirectBufferVk                = vk::GetImpl(indirectBuffer);
+    vk::BufferHelper *indirectBufferHelperOut = nullptr;
+
+    ANGLE_TRY(mVertexArray->handleLineLoopIndirect(this, indirectBufferVk, indexType,
+                                                   indirectBufferOffset, &indirectBufferHelperOut,
+                                                   indirectBufferOffsetOut));
+
+    *indirectBufferOut = const_cast<vk::Buffer *>(&indirectBufferHelperOut->getBuffer());
+
+    if (indexType != mCurrentDrawElementsType)
+    {
+        mCurrentDrawElementsType = indexType;
+        setIndexBufferDirty();
+    }
+
+    vk::FramebufferHelper *framebuffer = mDrawFramebuffer->getFramebuffer();
+    indirectBufferHelperOut->onRead(this, framebuffer, VK_ACCESS_INDIRECT_COMMAND_READ_BIT);
+
+    return setupDraw(context, mode, -1, 0, 0, gl::DrawElementsType::InvalidEnum, nullptr,
+                     mIndexedDirtyBitsMask, commandBufferOut);
+}
+
 angle::Result ContextVk::setupLineLoopDraw(const gl::Context *context,
                                            gl::PrimitiveMode mode,
                                            GLint firstVertex,
@@ -737,12 +1085,14 @@
         mVertexArray->getCurrentArrayBuffers();
     vk::FramebufferHelper *framebuffer = mDrawFramebuffer->getFramebuffer();
 
-    for (size_t attribIndex : context->getStateCache().getActiveBufferedAttribsMask())
+    // Mark all active vertex buffers as accessed by the graph.
+    gl::AttributesMask attribsMask = mProgram->getState().getActiveAttribLocationsMask();
+    for (size_t attribIndex : attribsMask)
     {
         vk::BufferHelper *arrayBuffer = arrayBufferResources[attribIndex];
         if (arrayBuffer)
         {
-            arrayBuffer->onRead(framebuffer, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT);
+            arrayBuffer->onRead(this, framebuffer, VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT);
         }
     }
 
@@ -760,7 +1110,7 @@
                                    gl_vk::kIndexTypeMap[mCurrentDrawElementsType]);
 
     vk::FramebufferHelper *framebuffer = mDrawFramebuffer->getFramebuffer();
-    elementArrayBuffer->onRead(framebuffer, VK_ACCESS_INDEX_READ_BIT);
+    elementArrayBuffer->onRead(this, framebuffer, VK_ACCESS_INDEX_READ_BIT);
 
     return angle::Result::Continue;
 }
@@ -837,89 +1187,21 @@
                                          mDriverUniforms[PipelineType::Compute]);
 }
 
-angle::Result ContextVk::releaseToCommandBatch(vk::PrimaryCommandBuffer &&commandBuffer,
-                                               CommandBatch *batch)
-{
-    batch->primaryCommands = std::move(commandBuffer);
-
-    if (mCommandPool.valid())
-    {
-        batch->commandPool = std::move(mCommandPool);
-        // Recreate CommandPool
-        VkCommandPoolCreateInfo poolInfo = {};
-        poolInfo.sType                   = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
-        poolInfo.flags                   = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT;
-        poolInfo.queueFamilyIndex        = getRenderer()->getQueueFamilyIndex();
-
-        ANGLE_VK_TRY(this, mCommandPool.init(getDevice(), poolInfo));
-    }
-
-    return angle::Result::Continue;
-}
-
-angle::Result ContextVk::recycleCommandBatch(CommandBatch *batch)
-{
-    batch->commandPool.destroy(getDevice());
-
-    if (ANGLE_LIKELY(!mRenderer->getFeatures().transientCommandBuffer.enabled))
-    {
-        ASSERT(mPrimaryCommandPool.valid());
-        ANGLE_TRY(mPrimaryCommandPool.collect(this, std::move(batch->primaryCommands)));
-    }
-    else
-    {
-        batch->primaryCommands.destroy(getDevice());
-    }
-
-    return angle::Result::Continue;
-}
-
 angle::Result ContextVk::submitFrame(const VkSubmitInfo &submitInfo,
                                      vk::PrimaryCommandBuffer &&commandBuffer)
 {
-    ANGLE_TRACE_EVENT0("gpu.angle", "RendererVk::submitFrame");
-    VkFenceCreateInfo fenceInfo = {};
-    fenceInfo.sType             = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
-    fenceInfo.flags             = 0;
+    ANGLE_TRY(ensureSubmitFenceInitialized());
+    ANGLE_TRY(mCommandQueue.submitFrame(this, submitInfo, mSubmitFence, &mCurrentGarbage,
+                                        &mCommandPool, std::move(commandBuffer)));
 
-    VkDevice device = getDevice();
-    vk::DeviceScoped<CommandBatch> scopedBatch(device);
-    CommandBatch &batch = scopedBatch.get();
-    ANGLE_TRY(getNextSubmitFence(&batch.fence));
-
-    ANGLE_TRY(getRenderer()->queueSubmit(this, submitInfo, batch.fence.get()));
-
-    // TODO: this comment still valid?
-    // Notify the Contexts that they should be starting new command buffers.
-    // We use one command pool per serial/submit associated with this VkQueue. We can also
-    // have multiple Contexts sharing one VkQueue. In ContextVk::setupDraw we don't explicitly
-    // check for a new serial when starting a new command buffer. We just check that the current
-    // recording command buffer is valid. Thus we need to explicitly notify every other Context
-    // using this VkQueue that they their current command buffer is no longer valid.
+    // we need to explicitly notify every other Context using this VkQueue that their current
+    // command buffer is no longer valid.
     onRenderPassFinished();
     mComputeDirtyBits |= mNewComputeCommandBufferDirtyBits;
 
-    // Store the primary CommandBuffer and command pool used for secondary CommandBuffers
-    // in the in-flight list.
-    ANGLE_TRY(releaseToCommandBatch(std::move(commandBuffer), &batch));
-    batch.serial = mCurrentQueueSerial;
-
-    mInFlightCommands.emplace_back(scopedBatch.release());
-
     // Make sure a new fence is created for the next submission.
     mRenderer->resetSharedFence(&mSubmitFence);
 
-    // CPU should be throttled to avoid mInFlightCommands from growing too fast.  That is done on
-    // swap() though, and there could be multiple submissions in between (through glFlush() calls),
-    // so the limit is larger than the expected number of images.  The
-    // InterleavedAttributeDataBenchmark perf test for example issues a large number of flushes.
-    ASSERT(mInFlightCommands.size() <= kInFlightCommandsLimit);
-
-    mLastSubmittedQueueSerial = mCurrentQueueSerial;
-    mCurrentQueueSerial       = getRenderer()->nextSerial();
-
-    ANGLE_TRY(checkCompletedCommands());
-
     if (mGpuEventsEnabled)
     {
         ANGLE_TRY(checkCompletedGpuEvents());
@@ -936,7 +1218,8 @@
     }
     mIsAnyHostVisibleBufferWritten = false;
 
-    return mCommandGraph.submitCommands(this, mCurrentQueueSerial, &mRenderPassCache, commandBatch);
+    return mCommandGraph.submitCommands(this, getCurrentQueueSerial(), &mRenderPassCache,
+                                        commandBatch);
 }
 
 angle::Result ContextVk::synchronizeCpuGpuTime()
@@ -946,8 +1229,8 @@
     angle::PlatformMethods *platform = ANGLEPlatformCurrent();
     ASSERT(platform);
 
-    // To synchronize CPU and GPU times, we need to get the CPU timestamp as close as possible to
-    // the GPU timestamp.  The process of getting the GPU timestamp is as follows:
+    // To synchronize CPU and GPU times, we need to get the CPU timestamp as close as possible
+    // to the GPU timestamp.  The process of getting the GPU timestamp is as follows:
     //
     //             CPU                            GPU
     //
@@ -969,9 +1252,9 @@
     //       Get query results
     //
     // The areas of unknown work (????) on the CPU indicate that the CPU may or may not have
-    // finished post-submission work while the GPU is executing in parallel. With no further work,
-    // querying CPU timestamps before submission and after getting query results give the bounds to
-    // Tgpu, which could be quite large.
+    // finished post-submission work while the GPU is executing in parallel. With no further
+    // work, querying CPU timestamps before submission and after getting query results give the
+    // bounds to Tgpu, which could be quite large.
     //
     // Using VkEvents, the GPU can be made to wait for the CPU and vice versa, in an effort to
     // reduce this range. This function implements the following procedure:
@@ -1005,8 +1288,8 @@
     //
     // If Te-Ts > epsilon, a GPU or CPU interruption can be assumed and the operation can be
     // retried.  Once Te-Ts < epsilon, Tcpu can be taken to presumably match Tgpu.  Finding an
-    // epsilon that's valid for all devices may be difficult, so the loop can be performed only a
-    // limited number of times and the Tcpu,Tgpu pair corresponding to smallest Te-Ts used for
+    // epsilon that's valid for all devices may be difficult, so the loop can be performed only
+    // a limited number of times and the Tcpu,Tgpu pair corresponding to smallest Te-Ts used for
     // calibration.
     //
     // Note: Once VK_EXT_calibrated_timestamps is ubiquitous, this should be redone.
@@ -1048,20 +1331,7 @@
         vk::DeviceScoped<vk::PrimaryCommandBuffer> commandBatch(device);
         vk::PrimaryCommandBuffer &commandBuffer = commandBatch.get();
 
-        if (ANGLE_LIKELY(!mRenderer->getFeatures().transientCommandBuffer.enabled))
-        {
-            ANGLE_TRY(mPrimaryCommandPool.alloc(this, &commandBuffer));
-        }
-        else
-        {
-            VkCommandBufferAllocateInfo commandBufferInfo = {};
-            commandBufferInfo.sType              = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
-            commandBufferInfo.commandPool        = mCommandPool.getHandle();
-            commandBufferInfo.level              = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
-            commandBufferInfo.commandBufferCount = 1;
-
-            ANGLE_VK_TRY(this, commandBuffer.init(device, commandBufferInfo));
-        }
+        ANGLE_TRY(mCommandQueue.allocatePrimaryCommandBuffer(this, mCommandPool, &commandBuffer));
 
         VkCommandBufferBeginInfo beginInfo = {};
         beginInfo.sType                    = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
@@ -1173,7 +1443,7 @@
 
     event.name   = name;
     event.phase  = phase;
-    event.serial = mCurrentQueueSerial;
+    event.serial = getCurrentQueueSerial();
 
     ANGLE_TRY(mGpuEventQueryPool.allocateQuery(this, &event.queryPoolIndex, &event.queryIndex));
 
@@ -1197,10 +1467,12 @@
 
     int finishedCount = 0;
 
+    Serial lastCompletedSerial = getLastCompletedQueueSerial();
+
     for (GpuEventQuery &eventQuery : mInFlightGpuEventQueries)
     {
         // Only check the timestamp query if the submission has finished.
-        if (eventQuery.serial > mLastCompletedQueueSerial)
+        if (eventQuery.serial > lastCompletedSerial)
         {
             break;
         }
@@ -1254,7 +1526,8 @@
     double nextGpuSyncDiffS = nextSyncCpuTimestampS - nextSyncGpuTimestampS;
 
     // No gpu trace events should have been generated before the clock sync, so if there is no
-    // "previous" clock sync, there should be no gpu events (i.e. the function early-outs above).
+    // "previous" clock sync, there should be no gpu events (i.e. the function early-outs
+    // above).
     ASSERT(mGpuClockSync.gpuTimestampS != std::numeric_limits<double>::max() &&
            mGpuClockSync.cpuTimestampS != std::numeric_limits<double>::max());
 
@@ -1272,8 +1545,8 @@
         // Account for clock drift.
         gpuTimestampS += lastGpuSyncDiffS + gpuSyncDriftSlope * (gpuTimestampS - lastGpuSyncTimeS);
 
-        // Generate the trace now that the GPU timestamp is available and clock drifts are accounted
-        // for.
+        // Generate the trace now that the GPU timestamp is available and clock drifts are
+        // accounted for.
         static long long eventId = 1;
         static const unsigned char *categoryEnabled =
             TRACE_EVENT_API_GET_CATEGORY_ENABLED(platform, "gpu.angle.gpu");
@@ -1284,35 +1557,23 @@
     mGpuEvents.clear();
 }
 
-void ContextVk::handleDeviceLost()
+void ContextVk::clearAllGarbage()
 {
-    mCommandGraph.clear();
-    // TODO: generate a new serial neccessary here?
     VkDevice device = getDevice();
-
-    for (CommandBatch &batch : mInFlightCommands)
-    {
-        // On device loss we need to wait for fence to be signaled before destroying it
-        VkResult status = batch.fence.get().wait(device, kMaxFenceWaitTimeNs);
-        // If the wait times out, it is probably not possible to recover from lost device
-        ASSERT(status == VK_SUCCESS || status == VK_ERROR_DEVICE_LOST);
-
-        // On device lost, here simply destroy the CommandBuffer, it will fully cleared later
-        // by CommandPool::destroy
-        batch.primaryCommands.destroy(device);
-
-        batch.commandPool.destroy(device);
-        batch.fence.reset(device);
-    }
-    mInFlightCommands.clear();
-
-    for (vk::GarbageObject &garbage : mGarbage)
+    for (vk::GarbageObject &garbage : mCurrentGarbage)
     {
         garbage.destroy(device);
     }
-    mGarbage.clear();
+    mCurrentGarbage.clear();
+    mCommandQueue.clearAllGarbage(device);
+}
 
-    mLastCompletedQueueSerial = mLastSubmittedQueueSerial;
+void ContextVk::handleDeviceLost()
+{
+    mCommandGraph.clear();
+
+    mCommandQueue.handleDeviceLost(mRenderer);
+    clearAllGarbage();
 
     mRenderer->notifyDeviceLost();
 }
@@ -1470,8 +1731,20 @@
                                             gl::PrimitiveMode mode,
                                             const void *indirect)
 {
-    ANGLE_VK_UNREACHABLE(this);
-    return angle::Result::Stop;
+    if (mode == gl::PrimitiveMode::LineLoop)
+    {
+        // TODO - http://anglebug.com/3564
+        ANGLE_VK_UNREACHABLE(this);
+        return angle::Result::Stop;
+    }
+
+    vk::CommandBuffer *commandBuffer = nullptr;
+    vk::Buffer *buffer               = nullptr;
+
+    ANGLE_TRY(setupIndirectDraw(context, mode, mNonIndexedDirtyBitsMask, &commandBuffer, &buffer));
+
+    commandBuffer->drawIndirect(*buffer, reinterpret_cast<VkDeviceSize>(indirect), 1, 0);
+    return angle::Result::Continue;
 }
 
 angle::Result ContextVk::drawElementsIndirect(const gl::Context *context,
@@ -1479,8 +1752,38 @@
                                               gl::DrawElementsType type,
                                               const void *indirect)
 {
-    ANGLE_VK_UNREACHABLE(this);
-    return angle::Result::Stop;
+    VkDeviceSize indirectBufferOffset = reinterpret_cast<VkDeviceSize>(indirect);
+    gl::Buffer *indirectBuffer        = mState.getTargetBuffer(gl::BufferBinding::DrawIndirect);
+    ASSERT(indirectBuffer);
+
+    const gl::Buffer *indexBuffer = mVertexArray->getState().getElementArrayBuffer();
+    ASSERT(indexBuffer);
+
+    if (type == gl::DrawElementsType::UnsignedByte && mGraphicsDirtyBits[DIRTY_BIT_INDEX_BUFFER])
+    {
+        BufferVk *indexVk     = vk::GetImpl(indexBuffer);
+        BufferVk *cmdBufferVk = vk::GetImpl(indirectBuffer);
+        ANGLE_TRY(
+            mVertexArray->convertIndexBufferIndirectGPU(this, cmdBufferVk, indexVk, indirect));
+    }
+
+    vk::CommandBuffer *commandBuffer = nullptr;
+    vk::Buffer *indirectBufferFinal  = nullptr;
+
+    if (mode == gl::PrimitiveMode::LineLoop)
+    {
+        ANGLE_TRY(setupLineLoopIndexedIndirectDraw(
+            context, mode, type, indirectBuffer, indirectBufferOffset, indexBuffer, &commandBuffer,
+            &indirectBufferFinal, &indirectBufferOffset));
+    }
+    else
+    {
+        ANGLE_TRY(
+            setupIndexedIndirectDraw(context, mode, type, &commandBuffer, &indirectBufferFinal));
+    }
+
+    commandBuffer->drawIndexedIndirect(*indirectBufferFinal, indirectBufferOffset, 1, 0);
+    return angle::Result::Continue;
 }
 
 gl::GraphicsResetStatus ContextVk::getResetStatus()
@@ -1819,7 +2122,8 @@
                 break;
             case gl::State::DIRTY_BIT_UNPACK_STATE:
                 // This is a no-op, it's only important to use the right unpack state when we do
-                // setImage or setSubImage in TextureVk, which is plumbed through the frontend call
+                // setImage or setSubImage in TextureVk, which is plumbed through the frontend
+                // call
                 break;
             case gl::State::DIRTY_BIT_UNPACK_BUFFER_BINDING:
                 break;
@@ -1840,11 +2144,12 @@
                 break;
             case gl::State::DIRTY_BIT_DRAW_FRAMEBUFFER_BINDING:
             {
-                // FramebufferVk::syncState signals that we should start a new command buffer. But
-                // changing the binding can skip FramebufferVk::syncState if the Framebuffer has no
-                // dirty bits. Thus we need to explicitly clear the current command buffer to
-                // ensure we start a new one. Note that we need a new command buffer because a
-                // command graph node can only support one RenderPass configuration at a time.
+                // FramebufferVk::syncState signals that we should start a new command buffer.
+                // But changing the binding can skip FramebufferVk::syncState if the Framebuffer
+                // has no dirty bits. Thus we need to explicitly clear the current command
+                // buffer to ensure we start a new one. Note that we need a new command buffer
+                // because a command graph node can only support one RenderPass configuration at
+                // a time.
                 onRenderPassFinished();
 
                 gl::Framebuffer *drawFramebuffer = glState.getDrawFramebuffer();
@@ -1901,10 +2206,11 @@
                 }
                 else
                 {
-                    // No additional work is needed here. We will update the pipeline desc later.
+                    // No additional work is needed here. We will update the pipeline desc
+                    // later.
                     invalidateDefaultAttributes(
                         context->getStateCache().getActiveDefaultAttribsMask());
-                    bool useVertexBuffer = (mProgram->getState().getMaxActiveAttribLocation());
+                    bool useVertexBuffer = (mProgram->getState().getMaxActiveAttribLocation() > 0);
                     mNonIndexedDirtyBitsMask.set(DIRTY_BIT_VERTEX_BUFFERS, useVertexBuffer);
                     mIndexedDirtyBitsMask.set(DIRTY_BIT_VERTEX_BUFFERS, useVertexBuffer);
                     mCurrentGraphicsPipeline = nullptr;
@@ -1940,8 +2246,8 @@
                 // coverage. See EXT_multisample_compatibility.  http://anglebug.com/3204
                 break;
             case gl::State::DIRTY_BIT_SAMPLE_ALPHA_TO_ONE:
-                // TODO(syoussefi): this is part of EXT_multisample_compatibility.  The alphaToOne
-                // Vulkan feature should be enabled to support this extension.
+                // TODO(syoussefi): this is part of EXT_multisample_compatibility.  The
+                // alphaToOne Vulkan feature should be enabled to support this extension.
                 // http://anglebug.com/3204
                 mGraphicsPipelineDesc->updateAlphaToOneEnable(&mGraphicsPipelineTransition,
                                                               glState.isSampleAlphaToOneEnabled());
@@ -1986,10 +2292,9 @@
 angle::Result ContextVk::onMakeCurrent(const gl::Context *context)
 {
     ASSERT(mCommandGraph.empty());
-    mCurrentQueueSerial = getRenderer()->nextSerial();
 
-    // Flip viewports if FeaturesVk::flipViewportY is enabled and the user did not request that the
-    // surface is flipped.
+    // Flip viewports if FeaturesVk::flipViewportY is enabled and the user did not request that
+    // the surface is flipped.
     egl::Surface *drawSurface = context->getCurrentDrawSurface();
     mFlipYForCurrentSurface =
         drawSurface != nullptr && mRenderer->getFeatures().flipViewportY.enabled &&
@@ -2222,7 +2527,7 @@
 
     gl::Buffer *glBuffer     = getState().getTargetBuffer(gl::BufferBinding::DispatchIndirect);
     vk::BufferHelper &buffer = vk::GetImpl(glBuffer)->getBuffer();
-    buffer.onRead(&mDispatcher, VK_ACCESS_INDIRECT_COMMAND_READ_BIT);
+    buffer.onRead(this, &mDispatcher, VK_ACCESS_INDIRECT_COMMAND_READ_BIT);
 
     commandBuffer->dispatchIndirect(buffer.getBuffer(), indirect);
 
@@ -2231,11 +2536,11 @@
 
 angle::Result ContextVk::memoryBarrier(const gl::Context *context, GLbitfield barriers)
 {
-    // Note: most of the barriers specified here don't require us to issue a memory barrier, as the
-    // relevant resources already insert the appropriate barriers.  They do however require the
-    // resource writing nodes to finish so future buffer barriers are placed correctly, as well as
-    // resource dependencies not creating a graph loop.  This is done by inserting a command graph
-    // barrier that does nothing!
+    // Note: most of the barriers specified here don't require us to issue a memory barrier, as
+    // the relevant resources already insert the appropriate barriers.  They do however require
+    // the resource writing nodes to finish so future buffer barriers are placed correctly, as
+    // well as resource dependencies not creating a graph loop.  This is done by inserting a
+    // command graph barrier that does nothing!
 
     VkAccessFlags srcAccess = 0;
     VkAccessFlags dstAccess = 0;
@@ -2312,8 +2617,8 @@
             offsetDiff = static_cast<uint32_t>((offset - alignedOffset) / sizeof(uint32_t));
 
             // We expect offsetDiff to fit in an 8-bit value.  The maximum difference is
-            // minStorageBufferOffsetAlignment / 4, where minStorageBufferOffsetAlignment currently
-            // has a maximum value of 256 on any device.
+            // minStorageBufferOffsetAlignment / 4, where minStorageBufferOffsetAlignment
+            // currently has a maximum value of 256 on any device.
             ASSERT(offsetDiff < (1 << 8));
         }
 
@@ -2508,9 +2813,9 @@
 
         vk::ImageHelper &image = textureVk->getImage();
 
-        // The image should be flushed and ready to use at this point. There may still be lingering
-        // staged updates in its staging buffer for unused texture mip levels or layers. Therefore
-        // we can't verify it has no staged updates right here.
+        // The image should be flushed and ready to use at this point. There may still be
+        // lingering staged updates in its staging buffer for unused texture mip levels or
+        // layers. Therefore we can't verify it has no staged updates right here.
 
         vk::ImageLayout textureLayout = vk::ImageLayout::AllGraphicsShadersReadOnly;
         if (program->isCompute())
@@ -2529,7 +2834,7 @@
             image.changeLayout(aspectFlags, textureLayout, srcLayoutChange);
         }
 
-        image.addReadDependency(recorder);
+        image.addReadDependency(this, recorder);
 
         mActiveTextures[textureUnit].texture = textureVk;
         mActiveTextures[textureUnit].sampler = samplerVk;
@@ -2564,9 +2869,9 @@
         TextureVk *textureVk   = vk::GetImpl(texture);
         vk::ImageHelper *image = &textureVk->getImage();
 
-        // The image should be flushed and ready to use at this point. There may still be lingering
-        // staged updates in its staging buffer for unused texture mip levels or layers. Therefore
-        // we can't verify it has no staged updates right here.
+        // The image should be flushed and ready to use at this point. There may still be
+        // lingering staged updates in its staging buffer for unused texture mip levels or
+        // layers. Therefore we can't verify it has no staged updates right here.
 
         // TODO(syoussefi): make sure front-end syncs textures that are used as images (they are
         // already notified of content change).
@@ -2590,7 +2895,7 @@
             image->changeLayout(aspectFlags, imageLayout, layoutChange);
         }
 
-        image->addWriteDependency(recorder);
+        image->addWriteDependency(this, recorder);
 
         mActiveImages[imageUnitIndex] = textureVk;
     }
@@ -2604,6 +2909,11 @@
     mWaitSemaphores.push_back(waitSemaphore->getHandle());
 }
 
+bool ContextVk::shouldFlush()
+{
+    return getRenderer()->shouldCleanupGarbage();
+}
+
 angle::Result ContextVk::flushImpl(const vk::Semaphore *signalSemaphore)
 {
     if (mCommandGraph.empty() && !signalSemaphore && mWaitSemaphores.empty())
@@ -2613,34 +2923,24 @@
 
     ANGLE_TRACE_EVENT0("gpu.angle", "ContextVk::flush");
 
-    vk::DeviceScoped<vk::PrimaryCommandBuffer> commandBatch(getDevice());
-    if (ANGLE_LIKELY(!mRenderer->getFeatures().transientCommandBuffer.enabled))
-    {
-        ANGLE_TRY(mPrimaryCommandPool.alloc(this, &commandBatch.get()));
-    }
-    else
-    {
-        VkCommandBufferAllocateInfo commandBufferInfo = {};
-        commandBufferInfo.sType              = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
-        commandBufferInfo.commandPool        = mCommandPool.getHandle();
-        commandBufferInfo.level              = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
-        commandBufferInfo.commandBufferCount = 1;
+    VkDevice device = getDevice();
 
-        ANGLE_VK_TRY(this, commandBatch.get().init(getDevice(), commandBufferInfo));
-    }
+    vk::DeviceScoped<vk::PrimaryCommandBuffer> primaryCommands(device);
+    ANGLE_TRY(
+        mCommandQueue.allocatePrimaryCommandBuffer(this, mCommandPool, &primaryCommands.get()));
 
     if (!mCommandGraph.empty())
     {
-        ANGLE_TRY(flushCommandGraph(&commandBatch.get()));
+        ANGLE_TRY(flushCommandGraph(&primaryCommands.get()));
     }
 
     waitForSwapchainImageIfNecessary();
 
     VkSubmitInfo submitInfo = {};
-    InitializeSubmitInfo(&submitInfo, commandBatch.get(), mWaitSemaphores,
+    InitializeSubmitInfo(&submitInfo, primaryCommands.get(), mWaitSemaphores,
                          &mWaitSemaphoreStageMasks, signalSemaphore);
 
-    ANGLE_TRY(submitFrame(submitInfo, commandBatch.release()));
+    ANGLE_TRY(submitFrame(submitInfo, primaryCommands.release()));
 
     mWaitSemaphores.clear();
 
@@ -2653,14 +2953,10 @@
 
     ANGLE_TRY(flushImpl(nullptr));
 
-    ANGLE_TRY(finishToSerial(mLastSubmittedQueueSerial));
-    ASSERT(mInFlightCommands.empty());
+    ANGLE_TRY(finishToSerial(getLastSubmittedQueueSerial()));
+    ASSERT(!mCommandQueue.hasInFlightCommands());
 
-    for (vk::GarbageObject &garbage : mGarbage)
-    {
-        garbage.destroy(getDevice());
-    }
-    mGarbage.clear();
+    clearAllGarbage();
 
     if (mGpuEventsEnabled)
     {
@@ -2669,9 +2965,9 @@
         {
             ANGLE_TRY(checkCompletedGpuEvents());
         }
-        // Recalculate the CPU/GPU time difference to account for clock drifting.  Avoid unnecessary
-        // synchronization if there is no event to be adjusted (happens when finish() gets called
-        // multiple times towards the end of the application).
+        // Recalculate the CPU/GPU time difference to account for clock drifting.  Avoid
+        // unnecessary synchronization if there is no event to be adjusted (happens when
+        // finish() gets called multiple times towards the end of the application).
         if (mGpuEvents.size() > 0)
         {
             ANGLE_TRY(synchronizeCpuGpuTime());
@@ -2693,55 +2989,19 @@
 
 bool ContextVk::isSerialInUse(Serial serial) const
 {
-    return serial > mLastCompletedQueueSerial;
+    return serial > getLastCompletedQueueSerial();
 }
 
 angle::Result ContextVk::checkCompletedCommands()
 {
-    VkDevice device = getDevice();
-
-    int finishedCount = 0;
-
-    for (CommandBatch &batch : mInFlightCommands)
-    {
-        VkResult result = batch.fence.get().getStatus(device);
-        if (result == VK_NOT_READY)
-        {
-            break;
-        }
-        ANGLE_VK_TRY(this, result);
-
-        ASSERT(batch.serial > mLastCompletedQueueSerial);
-        mLastCompletedQueueSerial = batch.serial;
-
-        mRenderer->resetSharedFence(&batch.fence);
-        ANGLE_TRACE_EVENT0("gpu.angle", "command batch recycling");
-        ANGLE_TRY(recycleCommandBatch(&batch));
-        ++finishedCount;
-    }
-
-    mInFlightCommands.erase(mInFlightCommands.begin(), mInFlightCommands.begin() + finishedCount);
-
-    size_t freeIndex = 0;
-    for (; freeIndex < mGarbage.size(); ++freeIndex)
-    {
-        if (!mGarbage[freeIndex].destroyIfComplete(device, mLastCompletedQueueSerial))
-            break;
-    }
-
-    // Remove the entries from the garbage list - they should be ready to go.
-    if (freeIndex > 0)
-    {
-        mGarbage.erase(mGarbage.begin(), mGarbage.begin() + freeIndex);
-    }
-
-    return angle::Result::Continue;
+    return mCommandQueue.checkCompletedCommands(this);
 }
 
 angle::Result ContextVk::finishToSerial(Serial serial)
 {
-    bool timedOut        = false;
-    angle::Result result = finishToSerialOrTimeout(serial, kMaxFenceWaitTimeNs, &timedOut);
+    bool timedOut = false;
+    angle::Result result =
+        finishToSerialOrTimeout(serial, mRenderer->getMaxFenceWaitTimeNs(), &timedOut);
 
     // Don't tolerate timeout.  If such a large wait time results in timeout, something's wrong.
     if (timedOut)
@@ -2753,63 +3013,38 @@
 
 angle::Result ContextVk::finishToSerialOrTimeout(Serial serial, uint64_t timeout, bool *outTimedOut)
 {
-    *outTimedOut = false;
-
-    if (!isSerialInUse(serial) || mInFlightCommands.empty())
-    {
-        return angle::Result::Continue;
-    }
-
-    // Find the first batch with serial equal to or bigger than given serial (note that
-    // the batch serials are unique, otherwise upper-bound would have been necessary).
-    size_t batchIndex = mInFlightCommands.size() - 1;
-    for (size_t i = 0; i < mInFlightCommands.size(); ++i)
-    {
-        if (mInFlightCommands[i].serial >= serial)
-        {
-            batchIndex = i;
-            break;
-        }
-    }
-    const CommandBatch &batch = mInFlightCommands[batchIndex];
-
-    // Wait for it finish
-    VkDevice device = getDevice();
-    VkResult status = batch.fence.get().wait(device, kMaxFenceWaitTimeNs);
-
-    // If timed out, report it as such.
-    if (status == VK_TIMEOUT)
-    {
-        *outTimedOut = true;
-        return angle::Result::Continue;
-    }
-
-    ANGLE_VK_TRY(this, status);
-
-    // Clean up finished batches.
-    return checkCompletedCommands();
+    return mCommandQueue.finishToSerialOrTimeout(this, serial, timeout, outTimedOut);
 }
 
 angle::Result ContextVk::getCompatibleRenderPass(const vk::RenderPassDesc &desc,
                                                  vk::RenderPass **renderPassOut)
 {
-    return mRenderPassCache.getCompatibleRenderPass(this, mCurrentQueueSerial, desc, renderPassOut);
+    return mRenderPassCache.getCompatibleRenderPass(this, getCurrentQueueSerial(), desc,
+                                                    renderPassOut);
 }
 
 angle::Result ContextVk::getRenderPassWithOps(const vk::RenderPassDesc &desc,
                                               const vk::AttachmentOpsArray &ops,
                                               vk::RenderPass **renderPassOut)
 {
-    return mRenderPassCache.getRenderPassWithOps(this, mCurrentQueueSerial, desc, ops,
+    return mRenderPassCache.getRenderPassWithOps(this, getCurrentQueueSerial(), desc, ops,
                                                  renderPassOut);
 }
 
+angle::Result ContextVk::ensureSubmitFenceInitialized()
+{
+    if (mSubmitFence.isReferenced())
+    {
+        return angle::Result::Continue;
+    }
+
+    return mRenderer->newSharedFence(this, &mSubmitFence);
+}
+
 angle::Result ContextVk::getNextSubmitFence(vk::Shared<vk::Fence> *sharedFenceOut)
 {
-    if (!mSubmitFence.isReferenced())
-    {
-        ANGLE_TRY(getRenderer()->newSharedFence(this, &mSubmitFence));
-    }
+    ANGLE_TRY(ensureSubmitFenceInitialized());
+
     ASSERT(!sharedFenceOut->isReferenced());
     sharedFenceOut->copy(getDevice(), mSubmitFence);
     return angle::Result::Continue;
@@ -2817,42 +3052,32 @@
 
 vk::Shared<vk::Fence> ContextVk::getLastSubmittedFence() const
 {
-    vk::Shared<vk::Fence> fence;
-    if (!mInFlightCommands.empty())
-    {
-        fence.copy(getDevice(), mInFlightCommands.back().fence);
-    }
-
-    return fence;
-}
-
-vk::CommandGraph *ContextVk::getCommandGraph()
-{
-    return &mCommandGraph;
+    return mCommandQueue.getLastSubmittedFence(this);
 }
 
 angle::Result ContextVk::getTimestamp(uint64_t *timestampOut)
 {
-    // The intent of this function is to query the timestamp without stalling the GPU.  Currently,
-    // that seems impossible, so instead, we are going to make a small submission with just a
-    // timestamp query.  First, the disjoint timer query extension says:
+    // The intent of this function is to query the timestamp without stalling the GPU.
+    // Currently, that seems impossible, so instead, we are going to make a small submission
+    // with just a timestamp query.  First, the disjoint timer query extension says:
     //
     // > This will return the GL time after all previous commands have reached the GL server but
     // have not yet necessarily executed.
     //
-    // The previous commands are stored in the command graph at the moment and are not yet flushed.
-    // The wording allows us to make a submission to get the timestamp without performing a flush.
+    // The previous commands are stored in the command graph at the moment and are not yet
+    // flushed. The wording allows us to make a submission to get the timestamp without
+    // performing a flush.
     //
     // Second:
     //
-    // > By using a combination of this synchronous get command and the asynchronous timestamp query
-    // object target, applications can measure the latency between when commands reach the GL server
-    // and when they are realized in the framebuffer.
+    // > By using a combination of this synchronous get command and the asynchronous timestamp
+    // query object target, applications can measure the latency between when commands reach the
+    // GL server and when they are realized in the framebuffer.
     //
-    // This fits with the above strategy as well, although inevitably we are possibly introducing a
-    // GPU bubble.  This function directly generates a command buffer and submits it instead of
-    // using the other member functions.  This is to avoid changing any state, such as the queue
-    // serial.
+    // This fits with the above strategy as well, although inevitably we are possibly
+    // introducing a GPU bubble.  This function directly generates a command buffer and submits
+    // it instead of using the other member functions.  This is to avoid changing any state,
+    // such as the queue serial.
 
     // Create a query used to receive the GPU timestamp
     VkDevice device = getDevice();
@@ -2865,20 +3090,7 @@
     vk::DeviceScoped<vk::PrimaryCommandBuffer> commandBatch(device);
     vk::PrimaryCommandBuffer &commandBuffer = commandBatch.get();
 
-    if (ANGLE_LIKELY(!mRenderer->getFeatures().transientCommandBuffer.enabled))
-    {
-        ANGLE_TRY(mPrimaryCommandPool.alloc(this, &commandBuffer));
-    }
-    else
-    {
-        VkCommandBufferAllocateInfo commandBufferInfo = {};
-        commandBufferInfo.sType              = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
-        commandBufferInfo.commandPool        = mCommandPool.getHandle();
-        commandBufferInfo.level              = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
-        commandBufferInfo.commandBufferCount = 1;
-
-        ANGLE_VK_TRY(this, commandBuffer.init(device, commandBufferInfo));
-    }
+    ANGLE_TRY(mCommandQueue.allocatePrimaryCommandBuffer(this, mCommandPool, &commandBuffer));
 
     VkCommandBufferBeginInfo beginInfo = {};
     beginInfo.sType                    = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
@@ -2914,11 +3126,12 @@
     submitInfo.signalSemaphoreCount = 0;
     submitInfo.pSignalSemaphores    = nullptr;
 
-    ANGLE_TRY(getRenderer()->queueSubmit(this, submitInfo, fence.get()));
+    Serial throwAwaySerial;
+    ANGLE_TRY(mRenderer->queueSubmit(this, submitInfo, fence.get(), &throwAwaySerial));
 
     // Wait for the submission to finish.  Given no semaphores, there is hope that it would execute
     // in parallel with what's already running on the GPU.
-    ANGLE_VK_TRY(this, fence.get().wait(device, kMaxFenceWaitTimeNs));
+    ANGLE_VK_TRY(this, fence.get().wait(device, mRenderer->getMaxFenceWaitTimeNs()));
 
     // Get the query results
     constexpr VkQueryResultFlags queryFlags = VK_QUERY_RESULT_WAIT_BIT | VK_QUERY_RESULT_64_BIT;
@@ -2934,16 +3147,7 @@
         *timestampOut *
         static_cast<double>(getRenderer()->getPhysicalDeviceProperties().limits.timestampPeriod));
 
-    if (ANGLE_LIKELY(!mRenderer->getFeatures().transientCommandBuffer.enabled))
-    {
-        ANGLE_TRY(mPrimaryCommandPool.collect(this, commandBatch.release()));
-    }
-    else
-    {
-        commandBatch.get().destroy(getDevice());
-    }
-
-    return angle::Result::Continue;
+    return mCommandQueue.releasePrimaryCommandBuffer(this, commandBatch.release());
 }
 
 void ContextVk::invalidateDefaultAttribute(size_t attribIndex)
@@ -2981,6 +3185,7 @@
     ANGLE_TRY(defaultBuffer.flush(this));
 
     mVertexArray->updateDefaultAttrib(this, attribIndex, bufferHandle,
+                                      defaultBuffer.getCurrentBuffer(),
                                       static_cast<uint32_t>(offset));
     return angle::Result::Continue;
 }
@@ -2993,7 +3198,7 @@
         if (waitSemaphore.valid())
         {
             addWaitSemaphore(waitSemaphore.getHandle());
-            releaseObject(getCurrentQueueSerial(), &waitSemaphore);
+            addGarbage(&waitSemaphore);
         }
     }
 }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.h
index edfcea4..b5049f9 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ContextVk.h
@@ -29,6 +29,74 @@
 class RendererVk;
 class WindowSurfaceVk;
 
+struct CommandBatch final : angle::NonCopyable
+{
+    CommandBatch();
+    ~CommandBatch();
+    CommandBatch(CommandBatch &&other);
+    CommandBatch &operator=(CommandBatch &&other);
+
+    void destroy(VkDevice device);
+
+    vk::PrimaryCommandBuffer primaryCommands;
+    // commandPool is for secondary CommandBuffer allocation
+    vk::CommandPool commandPool;
+    vk::Shared<vk::Fence> fence;
+    Serial serial;
+};
+
+class CommandQueue final : angle::NonCopyable
+{
+  public:
+    CommandQueue();
+    ~CommandQueue();
+
+    angle::Result init(vk::Context *context);
+    void destroy(VkDevice device);
+    void handleDeviceLost(RendererVk *renderer);
+
+    bool hasInFlightCommands() const;
+
+    angle::Result allocatePrimaryCommandBuffer(vk::Context *context,
+                                               const vk::CommandPool &commandPool,
+                                               vk::PrimaryCommandBuffer *commandBufferOut);
+    angle::Result releasePrimaryCommandBuffer(vk::Context *context,
+                                              vk::PrimaryCommandBuffer &&commandBuffer);
+
+    void clearAllGarbage(VkDevice device);
+
+    angle::Result finishToSerialOrTimeout(vk::Context *context,
+                                          Serial serial,
+                                          uint64_t timeout,
+                                          bool *outTimedOut);
+
+    angle::Result submitFrame(vk::Context *context,
+                              const VkSubmitInfo &submitInfo,
+                              const vk::Shared<vk::Fence> &sharedFence,
+                              vk::GarbageList *currentGarbage,
+                              vk::CommandPool *commandPool,
+                              vk::PrimaryCommandBuffer &&commandBuffer);
+
+    vk::Shared<vk::Fence> getLastSubmittedFence(const vk::Context *context) const;
+
+    // Check to see which batches have finished completion (forward progress for
+    // mLastCompletedQueueSerial, for example for when the application busy waits on a query
+    // result). It would be nice if we didn't have to expose this for QueryVk::getResult.
+    angle::Result checkCompletedCommands(vk::Context *context);
+
+  private:
+    angle::Result releaseToCommandBatch(vk::Context *context,
+                                        vk::PrimaryCommandBuffer &&commandBuffer,
+                                        vk::CommandPool *commandPool,
+                                        CommandBatch *batch);
+
+    vk::GarbageQueue mGarbageQueue;
+    std::vector<CommandBatch> mInFlightCommands;
+
+    // Keeps a free list of reusable primary command buffers.
+    vk::PersistentCommandPool mPrimaryCommandPool;
+};
+
 class ContextVk : public ContextImpl, public vk::Context, public vk::RenderPassOwner
 {
   public:
@@ -213,9 +281,10 @@
                                               GLuint relativeOffset)
     {
         invalidateVertexAndIndexBuffers();
-        mGraphicsPipelineDesc->updateVertexInput(&mGraphicsPipelineTransition,
-                                                 static_cast<uint32_t>(attribIndex), stride,
-                                                 divisor, format, relativeOffset);
+        // Set divisor to 1 for attribs with emulated divisor
+        mGraphicsPipelineDesc->updateVertexInput(
+            &mGraphicsPipelineTransition, static_cast<uint32_t>(attribIndex), stride,
+            divisor > mRenderer->getMaxVertexAttribDivisor() ? 1 : divisor, format, relativeOffset);
     }
 
     void invalidateDefaultAttribute(size_t attribIndex);
@@ -255,6 +324,7 @@
 
     void insertWaitSemaphore(const vk::Semaphore *waitSemaphore);
 
+    bool shouldFlush();
     angle::Result flushImpl(const vk::Semaphore *semaphore);
     angle::Result finishImpl();
 
@@ -262,28 +332,22 @@
 
     const vk::CommandPool &getCommandPool() const;
 
-    Serial getCurrentQueueSerial() const { return mCurrentQueueSerial; }
-    Serial getLastSubmittedQueueSerial() const { return mLastSubmittedQueueSerial; }
-    Serial getLastCompletedQueueSerial() const { return mLastCompletedQueueSerial; }
+    Serial getCurrentQueueSerial() const { return mRenderer->getCurrentQueueSerial(); }
+    Serial getLastSubmittedQueueSerial() const { return mRenderer->getLastSubmittedQueueSerial(); }
+    Serial getLastCompletedQueueSerial() const { return mRenderer->getLastCompletedQueueSerial(); }
 
     bool isSerialInUse(Serial serial) const;
 
     template <typename T>
-    void releaseObject(Serial resourceSerial, T *object)
+    void addGarbage(T *object)
     {
-        if (!isSerialInUse(resourceSerial))
+        if (object->valid())
         {
-            object->destroy(getDevice());
-        }
-        else
-        {
-            object->dumpResources(resourceSerial, &mGarbage);
+            mCurrentGarbage.emplace_back(vk::GetGarbage(object));
         }
     }
 
-    // Check to see which batches have finished completion (forward progress for
-    // mLastCompletedQueueSerial, for example for when the application busy waits on a query
-    // result).
+    // It would be nice if we didn't have to expose this for QueryVk::getResult.
     angle::Result checkCompletedCommands();
 
     // Wait for completion of batches until (at least) batch with given serial is finished.
@@ -302,7 +366,7 @@
     vk::Shared<vk::Fence> getLastSubmittedFence() const;
 
     // This should only be called from ResourceVk.
-    vk::CommandGraph *getCommandGraph();
+    vk::CommandGraph *getCommandGraph() { return &mCommandGraph; }
 
     vk::ShaderLibrary &getShaderLibrary() { return mShaderLibrary; }
     UtilsVk &getUtils() { return mUtils; }
@@ -362,8 +426,20 @@
     using DirtyBitHandler = angle::Result (ContextVk::*)(const gl::Context *,
                                                          vk::CommandBuffer *commandBuffer);
 
-    std::array<DirtyBitHandler, DIRTY_BIT_MAX> mGraphicsDirtyBitHandlers;
-    std::array<DirtyBitHandler, DIRTY_BIT_MAX> mComputeDirtyBitHandlers;
+    struct DriverUniformsDescriptorSet
+    {
+        vk::DynamicBuffer dynamicBuffer;
+        VkDescriptorSet descriptorSet;
+        uint32_t dynamicOffset;
+        vk::BindingPointer<vk::DescriptorSetLayout> descriptorSetLayout;
+        vk::RefCountedDescriptorPoolBinding descriptorPoolBinding;
+
+        DriverUniformsDescriptorSet();
+        ~DriverUniformsDescriptorSet();
+
+        void init(RendererVk *rendererVk);
+        void destroy(VkDevice device);
+    };
 
     enum class PipelineType
     {
@@ -374,9 +450,46 @@
         EnumCount   = 2,
     };
 
+    // The GpuEventQuery struct holds together a timestamp query and enough data to create a
+    // trace event based on that. Use traceGpuEvent to insert such queries.  They will be readback
+    // when the results are available, without inserting a GPU bubble.
+    //
+    // - eventName will be the reported name of the event
+    // - phase is either 'B' (duration begin), 'E' (duration end) or 'i' (instant // event).
+    //   See Google's "Trace Event Format":
+    //   https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU
+    // - serial is the serial of the batch the query was submitted on.  Until the batch is
+    //   submitted, the query is not checked to avoid incuring a flush.
+    struct GpuEventQuery final
+    {
+        const char *name;
+        char phase;
+
+        uint32_t queryIndex;
+        size_t queryPoolIndex;
+
+        Serial serial;
+    };
+
+    // Once a query result is available, the timestamp is read and a GpuEvent object is kept until
+    // the next clock sync, at which point the clock drift is compensated in the results before
+    // handing them off to the application.
+    struct GpuEvent final
+    {
+        uint64_t gpuTimestampCycles;
+        const char *name;
+        char phase;
+    };
+
+    struct GpuClockSyncInfo
+    {
+        double gpuTimestampS;
+        double cpuTimestampS;
+    };
+
     angle::Result setupDraw(const gl::Context *context,
                             gl::PrimitiveMode mode,
-                            GLint firstVertex,
+                            GLint firstVertexOrInvalid,
                             GLsizei vertexOrIndexCount,
                             GLsizei instanceCount,
                             gl::DrawElementsType indexTypeOrInvalid,
@@ -390,6 +503,31 @@
                                    gl::DrawElementsType indexType,
                                    const void *indices,
                                    vk::CommandBuffer **commandBufferOut);
+    angle::Result setupIndirectDraw(const gl::Context *context,
+                                    gl::PrimitiveMode mode,
+                                    DirtyBits dirtyBitMask,
+                                    vk::CommandBuffer **commandBufferOut,
+                                    vk::Buffer **indirectBufferOut);
+    angle::Result setupIndirectDrawHelper(const gl::Context *context,
+                                          gl::PrimitiveMode mode,
+                                          DirtyBits dirtyBitMask,
+                                          vk::CommandBuffer **commandBufferOut);
+    angle::Result setupIndexedIndirectDraw(const gl::Context *context,
+                                           gl::PrimitiveMode mode,
+                                           gl::DrawElementsType indexType,
+                                           vk::CommandBuffer **commandBufferOut,
+                                           vk::Buffer **indirectBufferOut);
+
+    angle::Result setupLineLoopIndexedIndirectDraw(const gl::Context *context,
+                                                   gl::PrimitiveMode mode,
+                                                   gl::DrawElementsType indexType,
+                                                   const gl::Buffer *indirectBuffer,
+                                                   VkDeviceSize indirectBufferOffset,
+                                                   const gl::Buffer *indexBuffer,
+                                                   vk::CommandBuffer **commandBufferOut,
+                                                   vk::Buffer **indirectBufferOut,
+                                                   VkDeviceSize *indirectBufferOffsetOut);
+
     angle::Result setupLineLoopDraw(const gl::Context *context,
                                     gl::PrimitiveMode mode,
                                     GLint firstVertex,
@@ -469,7 +607,6 @@
     angle::Result handleDirtyShaderResourcesImpl(const gl::Context *context,
                                                  vk::CommandBuffer *commandBuffer,
                                                  vk::CommandGraphResource *recorder);
-    struct DriverUniformsDescriptorSet;
     angle::Result handleDirtyDescriptorSetsImpl(vk::CommandBuffer *commandBuffer,
                                                 VkPipelineBindPoint bindPoint,
                                                 const DriverUniformsDescriptorSet &driverUniforms);
@@ -495,14 +632,15 @@
                                     const char *name);
     angle::Result checkCompletedGpuEvents();
     void flushGpuEvents(double nextSyncGpuTimestampS, double nextSyncCpuTimestampS);
-
     void handleDeviceLost();
-
     void waitForSwapchainImageIfNecessary();
-
     bool shouldEmulateSeamfulCubeMapSampling() const;
-
     bool shouldUseOldRewriteStructSamplers() const;
+    void clearAllGarbage();
+    angle::Result ensureSubmitFenceInitialized();
+
+    std::array<DirtyBitHandler, DIRTY_BIT_MAX> mGraphicsDirtyBitHandlers;
+    std::array<DirtyBitHandler, DIRTY_BIT_MAX> mComputeDirtyBitHandlers;
 
     vk::PipelineHelper *mCurrentGraphicsPipeline;
     vk::PipelineAndSerial *mCurrentComputePipeline;
@@ -572,21 +710,6 @@
     // RewriteStructSamplers pass.
     bool mUseOldRewriteStructSamplers;
 
-    struct DriverUniformsDescriptorSet
-    {
-        vk::DynamicBuffer dynamicBuffer;
-        VkDescriptorSet descriptorSet;
-        uint32_t dynamicOffset;
-        vk::BindingPointer<vk::DescriptorSetLayout> descriptorSetLayout;
-        vk::RefCountedDescriptorPoolBinding descriptorPoolBinding;
-
-        DriverUniformsDescriptorSet();
-        ~DriverUniformsDescriptorSet();
-
-        void init(RendererVk *rendererVk);
-        void destroy(VkDevice device);
-    };
-
     angle::PackedEnumMap<PipelineType, DriverUniformsDescriptorSet> mDriverUniforms;
 
     // This cache should also probably include the texture index (shader location) and array
@@ -604,35 +727,8 @@
     vk::CommandPool mCommandPool;
     std::vector<vk::CommandPool> mCommandPoolFreeList;
 
-    // We use a Persistent CommandPool with pre-allocated buffers for primary CommandBuffer
-    vk::PersistentCommandPool mPrimaryCommandPool;
-
-    Serial mLastCompletedQueueSerial;
-    Serial mLastSubmittedQueueSerial;
-    Serial mCurrentQueueSerial;
-
-    struct CommandBatch final : angle::NonCopyable
-    {
-        CommandBatch();
-        ~CommandBatch();
-        CommandBatch(CommandBatch &&other);
-        CommandBatch &operator=(CommandBatch &&other);
-
-        void destroy(VkDevice device);
-
-        vk::PrimaryCommandBuffer primaryCommands;
-        // commandPool is for secondary CommandBuffer allocation
-        vk::CommandPool commandPool;
-        vk::Shared<vk::Fence> fence;
-        Serial serial;
-    };
-
-    angle::Result releaseToCommandBatch(vk::PrimaryCommandBuffer &&commandBuffer,
-                                        CommandBatch *batch);
-    angle::Result recycleCommandBatch(CommandBatch *batch);
-
-    std::vector<CommandBatch> mInFlightCommands;
-    std::vector<vk::GarbageObject> mGarbage;
+    CommandQueue mCommandQueue;
+    vk::GarbageList mCurrentGarbage;
 
     RenderPassCache mRenderPassCache;
 
@@ -654,37 +750,6 @@
     vk::ShaderLibrary mShaderLibrary;
     UtilsVk mUtils;
 
-    // The GpuEventQuery struct holds together a timestamp query and enough data to create a
-    // trace event based on that. Use traceGpuEvent to insert such queries.  They will be readback
-    // when the results are available, without inserting a GPU bubble.
-    //
-    // - eventName will be the reported name of the event
-    // - phase is either 'B' (duration begin), 'E' (duration end) or 'i' (instant // event).
-    //   See Google's "Trace Event Format":
-    //   https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU
-    // - serial is the serial of the batch the query was submitted on.  Until the batch is
-    //   submitted, the query is not checked to avoid incuring a flush.
-    struct GpuEventQuery final
-    {
-        const char *name;
-        char phase;
-
-        uint32_t queryIndex;
-        size_t queryPoolIndex;
-
-        Serial serial;
-    };
-
-    // Once a query result is available, the timestamp is read and a GpuEvent object is kept until
-    // the next clock sync, at which point the clock drift is compensated in the results before
-    // handing them off to the application.
-    struct GpuEvent final
-    {
-        uint64_t gpuTimestampCycles;
-        const char *name;
-        char phase;
-    };
-
     bool mGpuEventsEnabled;
     vk::DynamicQueryPool mGpuEventQueryPool;
     // A list of queries that have yet to be turned into an event (their result is not yet
@@ -698,11 +763,6 @@
     std::vector<VkPipelineStageFlags> mWaitSemaphoreStageMasks;
 
     // Hold information from the last gpu clock sync for future gpu-to-cpu timestamp conversions.
-    struct GpuClockSyncInfo
-    {
-        double gpuTimestampS;
-        double cpuTimestampS;
-    };
     GpuClockSyncInfo mGpuClockSync;
 
     // The very first timestamp queried for a GPU event is used as origin, so event timestamps would
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.cpp
index 900f0ea..5d5883f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.cpp
@@ -24,7 +24,7 @@
     return egl::NoError();
 }
 
-egl::Error DeviceVk::getDevice(void **outValue)
+egl::Error DeviceVk::getAttribute(const egl::Display *display, EGLint attribute, void **outValue)
 {
     UNIMPLEMENTED();
     return egl::EglBadAccess();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.h
index 8a6e52c..a0c50ff 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DeviceVk.h
@@ -22,7 +22,9 @@
     ~DeviceVk() override;
 
     egl::Error initialize() override;
-    egl::Error getDevice(void **outValue) override;
+    egl::Error getAttribute(const egl::Display *display,
+                            EGLint attribute,
+                            void **outValue) override;
     EGLint getType() override;
     void generateExtensions(egl::DeviceExtensions *outExtensions) const override;
 };
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DisplayVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DisplayVk.cpp
index cd929f6..bad2c8b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DisplayVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/DisplayVk.cpp
@@ -196,6 +196,8 @@
     outExtensions->glRenderbufferImage   = true;
     outExtensions->imageNativeBuffer =
         getRenderer()->getFeatures().supportsAndroidHardwareBuffer.enabled;
+
+    outExtensions->noConfigContext = true;
 }
 
 void DisplayVk::generateCaps(egl::Caps *outCaps) const
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
index 49247b6..42e7446 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
@@ -181,7 +181,7 @@
     ContextVk *contextVk = vk::GetImpl(context);
     mFramebuffer.release(contextVk);
 
-    mReadPixelBuffer.release(contextVk);
+    mReadPixelBuffer.release(contextVk->getRenderer());
 }
 
 angle::Result FramebufferVk::discard(const gl::Context *context,
@@ -195,11 +195,12 @@
                                         size_t count,
                                         const GLenum *attachments)
 {
-    mFramebuffer.updateQueueSerial(vk::GetImpl(context)->getCurrentQueueSerial());
+    ContextVk *contextVk = vk::GetImpl(context);
+    mFramebuffer.onGraphAccess(contextVk->getCommandGraph());
 
     if (mFramebuffer.valid() && mFramebuffer.hasStartedRenderPass())
     {
-        invalidateImpl(vk::GetImpl(context), count, attachments);
+        invalidateImpl(contextVk, count, attachments);
     }
 
     return angle::Result::Continue;
@@ -210,14 +211,15 @@
                                            const GLenum *attachments,
                                            const gl::Rectangle &area)
 {
-    mFramebuffer.updateQueueSerial(vk::GetImpl(context)->getCurrentQueueSerial());
+    ContextVk *contextVk = vk::GetImpl(context);
+    mFramebuffer.onGraphAccess(contextVk->getCommandGraph());
 
     // RenderPass' storeOp cannot be made conditional to a specific region, so we only apply this
     // hint if the requested area encompasses the render area.
     if (mFramebuffer.valid() && mFramebuffer.hasStartedRenderPass() &&
         area.encloses(mFramebuffer.getRenderPassRenderArea()))
     {
-        invalidateImpl(vk::GetImpl(context), count, attachments);
+        invalidateImpl(contextVk, count, attachments);
     }
 
     return angle::Result::Continue;
@@ -261,7 +263,7 @@
         return angle::Result::Continue;
     }
 
-    mFramebuffer.updateQueueSerial(contextVk->getCurrentQueueSerial());
+    mFramebuffer.updateCurrentAccessNodes();
 
     // This function assumes that only enabled attachments are asked to be cleared.
     ASSERT((clearColorBuffers & mState.getEnabledDrawBuffers()) == clearColorBuffers);
@@ -462,7 +464,14 @@
 
 GLenum FramebufferVk::getImplementationColorReadType(const gl::Context *context) const
 {
-    return GetReadAttachmentInfo(context, mRenderTargetCache.getColorRead(mState)).type;
+    GLenum readType = GetReadAttachmentInfo(context, mRenderTargetCache.getColorRead(mState)).type;
+    if (context->getClientMajorVersion() < 3 && readType == GL_HALF_FLOAT)
+    {
+        // GL_HALF_FLOAT was not introduced until GLES 3.0, and has a different value from
+        // GL_HALF_FLOAT_OES
+        readType = GL_HALF_FLOAT_OES;
+    }
+    return readType;
 }
 
 angle::Result FramebufferVk::readPixels(const gl::Context *context,
@@ -557,7 +566,7 @@
     ASSERT(colorBlit != (depthBlit || stencilBlit));
 
     vk::ImageHelper *srcImage = &readRenderTarget->getImage();
-    vk::ImageHelper *dstImage = drawRenderTarget->getImageForWrite(&mFramebuffer);
+    vk::ImageHelper *dstImage = drawRenderTarget->getImageForWrite(contextVk, &mFramebuffer);
 
     VkImageAspectFlags imageAspectMask = srcImage->getAspectFlags();
     VkImageAspectFlags blitAspectMask  = imageAspectMask;
@@ -582,7 +591,7 @@
     vk::CommandBuffer *commandBuffer = nullptr;
     ANGLE_TRY(mFramebuffer.recordCommands(contextVk, &commandBuffer));
 
-    srcImage->addReadDependency(&mFramebuffer);
+    srcImage->addReadDependency(contextVk, &mFramebuffer);
 
     VkImageBlit blit                   = {};
     blit.srcSubresource.aspectMask     = blitAspectMask;
@@ -812,7 +821,7 @@
         else
         {
             ANGLE_TRY(utilsVk.colorBlitResolve(contextVk, this, &readRenderTarget->getImage(),
-                                               readRenderTarget->getFetchImageView(), params));
+                                               readRenderTarget->getReadImageView(), params));
         }
     }
 
@@ -890,8 +899,8 @@
             vk::ImageView depthViewObject   = depthView.release();
             vk::ImageView stencilViewObject = stencilView.release();
 
-            contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &depthViewObject);
-            contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &stencilViewObject);
+            contextVk->addGarbage(&depthViewObject);
+            contextVk->addGarbage(&stencilViewObject);
         }
     }
 
@@ -914,7 +923,7 @@
     ANGLE_TRY(mFramebuffer.recordCommands(contextVk, &commandBuffer));
 
     // Source's layout change should happen before rendering
-    srcImage->addReadDependency(&mFramebuffer);
+    srcImage->addReadDependency(contextVk, &mFramebuffer);
 
     VkImageResolve resolveRegion                = {};
     resolveRegion.srcSubresource.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;
@@ -936,7 +945,7 @@
     for (size_t colorIndexGL : mState.getEnabledDrawBuffers())
     {
         RenderTargetVk *drawRenderTarget = mRenderTargetCache.getColors()[colorIndexGL];
-        vk::ImageHelper *drawImage       = drawRenderTarget->getImageForWrite(&mFramebuffer);
+        vk::ImageHelper *drawImage = drawRenderTarget->getImageForWrite(contextVk, &mFramebuffer);
         drawImage->changeLayout(VK_IMAGE_ASPECT_COLOR_BIT, vk::ImageLayout::TransferDst,
                                 commandBuffer);
 
@@ -1436,8 +1445,8 @@
     ANGLE_TRY(mFramebuffer.recordCommands(contextVk, &commandBuffer));
 
     // Note that although we're reading from the image, we need to update the layout below.
-    vk::ImageHelper *srcImage =
-        renderTarget->getImageForRead(&mFramebuffer, vk::ImageLayout::TransferSrc, commandBuffer);
+    vk::ImageHelper *srcImage = renderTarget->getImageForRead(
+        contextVk, &mFramebuffer, vk::ImageLayout::TransferSrc, commandBuffer);
 
     const angle::Format *readFormat = &srcImage->getFormat().imageFormat();
 
@@ -1476,7 +1485,7 @@
             contextVk, renderer->getMemoryProperties(), gl::Extents(area.width, area.height, 1),
             srcImage->getFormat(),
             VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, 1));
-        resolvedImage.get().updateQueueSerial(contextVk->getCurrentQueueSerial());
+        resolvedImage.get().onGraphAccess(contextVk->getCommandGraph());
 
         // Note: resolve only works on color images (not depth/stencil).
         //
@@ -1595,7 +1604,7 @@
     // is too small, we need to start a new one.  The latter can happen if a scissored clear starts
     // a render pass, the scissor is disabled and a draw call is issued to affect the whole
     // framebuffer.
-    mFramebuffer.updateQueueSerial(contextVk->getCurrentQueueSerial());
+    mFramebuffer.updateCurrentAccessNodes();
     if (mFramebuffer.hasStartedRenderPass() &&
         !mFramebuffer.getRenderPassRenderArea().encloses(scissoredRenderArea))
     {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.h
index f5d0a38..539a8b2 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/FramebufferVk.h
@@ -112,12 +112,11 @@
     RenderTargetVk *getColorReadRenderTarget() const;
 
     // This will clear the current write operation if it is complete.
-    bool appendToStartedRenderPass(Serial currentQueueSerial,
+    bool appendToStartedRenderPass(vk::CommandGraph *graph,
                                    const gl::Rectangle &renderArea,
                                    vk::CommandBuffer **commandBufferOut)
     {
-        return mFramebuffer.appendToStartedRenderPass(currentQueueSerial, renderArea,
-                                                      commandBufferOut);
+        return mFramebuffer.appendToStartedRenderPass(graph, renderArea, commandBufferOut);
     }
 
     vk::FramebufferHelper *getFramebuffer() { return &mFramebuffer; }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp
index 883d1e5..d40668d 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp
@@ -102,6 +102,7 @@
     void init(const std::string &source);
     bool empty() const { return mTokens.empty(); }
 
+    bool findTokenName(const std::string &name);
     // Find @@ LAYOUT-name(extra, args) @@ and replace it with:
     //
     //     layout(specifier, extra, args)
@@ -280,6 +281,18 @@
     }
 }
 
+bool IntermediateShaderSource::findTokenName(const std::string &name)
+{
+    for (Token &block : mTokens)
+    {
+        if (block.text == name)
+        {
+            return true;
+        }
+    }
+    return false;
+}
+
 void IntermediateShaderSource::insertLayoutSpecifier(const std::string &name,
                                                      const std::string &specifier)
 {
@@ -497,7 +510,7 @@
 
     // Parse attribute locations and replace them in the vertex shader.
     // See corresponding code in OutputVulkanGLSL.cpp.
-    for (const sh::ShaderVariable &attribute : programState.getAttributes())
+    for (const sh::ShaderVariable &attribute : programState.getProgramInputs())
     {
         // Warning: If we end up supporting ES 3.0 shaders and up, Program::linkAttributes is
         // going to bring us all attributes in this list instead of only the active ones.
@@ -509,13 +522,6 @@
     }
 }
 
-std::string RemoveArrayZeroSubscript(const std::string &expression)
-{
-    ASSERT(expression.size() > 3);
-    ASSERT(expression.substr(expression.size() - 3) == "[0]");
-    return expression.substr(0, expression.size() - 3);
-}
-
 void AssignOutputLocations(const gl::ProgramState &programState,
                            IntermediateShaderSource *fragmentSource)
 {
@@ -532,21 +538,7 @@
         {
             const sh::ShaderVariable &outputVar = outputVariables[outputLocation.index];
 
-            // In the following:
-            //
-            //     out vec4 fragOutput[N];
-            //
-            // The varying name is |fragOutput[0]|.  We need to remove the extra |[0]|.
             std::string name = outputVar.name;
-            if (outputVar.isArray())
-            {
-                name = RemoveArrayZeroSubscript(name);
-                if (outputVar.isArrayOfArrays())
-                {
-                    name = RemoveArrayZeroSubscript(name);
-                }
-            }
-
             std::string locationString;
             if (outputVar.location != -1)
             {
@@ -567,7 +559,8 @@
     }
 }
 
-void AssignVaryingLocations(const gl::ProgramLinkedResources &resources,
+void AssignVaryingLocations(const gl::ProgramState &programState,
+                            const gl::ProgramLinkedResources &resources,
                             IntermediateShaderSource *outStageSource,
                             IntermediateShaderSource *inStageSource)
 {
@@ -607,6 +600,16 @@
         const std::string &name =
             varying.isStructField() ? varying.parentStructName : varying.varying->name;
 
+        // Varings are from 3 stage of shader sources
+        // To match pair of (out - in) qualifier, varying should be in the pair of shader source
+        if (!outStageSource->findTokenName(name) || !inStageSource->findTokenName(name))
+        {
+            // Pair can be unmatching at transform feedback case,
+            // But it requires qualifier.
+            if (!varying.vertexOnly)
+                continue;
+        }
+
         outStageSource->insertLayoutSpecifier(name, locationString);
         inStageSource->insertLayoutSpecifier(name, locationString);
 
@@ -939,18 +942,29 @@
 
     IntermediateShaderSource *vertexSource   = &intermediateSources[gl::ShaderType::Vertex];
     IntermediateShaderSource *fragmentSource = &intermediateSources[gl::ShaderType::Fragment];
+    IntermediateShaderSource *geometrySource = &intermediateSources[gl::ShaderType::Geometry];
 
-    if (!vertexSource->empty())
+    if (!geometrySource->empty())
+    {
+        AssignOutputLocations(programState, fragmentSource);
+        AssignVaryingLocations(programState, resources, geometrySource, fragmentSource);
+        if (!vertexSource->empty())
+        {
+            AssignAttributeLocations(programState, vertexSource);
+            AssignVaryingLocations(programState, resources, vertexSource, geometrySource);
+        }
+    }
+    else if (!vertexSource->empty())
     {
         AssignAttributeLocations(programState, vertexSource);
         AssignOutputLocations(programState, fragmentSource);
-        AssignVaryingLocations(resources, vertexSource, fragmentSource);
+        AssignVaryingLocations(programState, resources, vertexSource, fragmentSource);
     }
     else if (!fragmentSource->empty())
     {
         AssignAttributeLocations(programState, fragmentSource);
         AssignOutputLocations(programState, fragmentSource);
-        AssignVaryingLocations(resources, vertexSource, fragmentSource);
+        AssignVaryingLocations(programState, resources, vertexSource, fragmentSource);
     }
     AssignUniformBindings(&intermediateSources);
     AssignTextureBindings(useOldRewriteStructSamplers, programState, &intermediateSources);
@@ -1005,6 +1019,14 @@
                                                kVersionDefine, kLineRasterDefine),
                        VK_ERROR_INVALID_SHADER_NV);
 
+        if (!shaderSources[gl::ShaderType::Geometry].empty())
+        {
+            ANGLE_VK_CHECK(context,
+                           angle::ReplaceSubstring(&patchedSources[gl::ShaderType::Geometry],
+                                                   kVersionDefine, kLineRasterDefine),
+                           VK_ERROR_INVALID_SHADER_NV);
+        }
+
         return GetShaderCodeImpl(context, glCaps, patchedSources, shaderCodeOut);
     }
     else
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.cpp
index 1205a7f..ec1599f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.cpp
@@ -32,33 +32,19 @@
     DisplayVk *displayVk = vk::GetImpl(display);
     RendererVk *renderer = displayVk->getRenderer();
 
-    std::vector<vk::GarbageObjectBase> garbage;
-
     if (mImage != nullptr && mOwnsImage)
     {
-        mImage->releaseImage(displayVk, &garbage);
-        mImage->releaseStagingBuffer(displayVk, &garbage);
-        delete mImage;
+        mImage->releaseImage(renderer);
+        mImage->releaseStagingBuffer(renderer);
+        SafeDelete(mImage);
     }
     else if (egl::IsExternalImageTarget(mState.target))
     {
         ASSERT(mState.source != nullptr);
         ExternalImageSiblingVk *externalImageSibling =
             GetImplAs<ExternalImageSiblingVk>(GetAs<egl::ExternalImageSibling>(mState.source));
-        externalImageSibling->release(displayVk, &garbage);
-    }
-    mImage = nullptr;
-
-    if (!garbage.empty())
-    {
-        renderer->addGarbage(std::move(mImageLastUseFences), std::move(garbage));
-    }
-    else
-    {
-        for (vk::Shared<vk::Fence> &fence : mImageLastUseFences)
-        {
-            fence.reset(displayVk->getDevice());
-        }
+        externalImageSibling->release(renderer);
+        mImage = nullptr;
     }
 }
 
@@ -160,12 +146,6 @@
     // Flush the context to make sure the fence has been submitted.
     ANGLE_TRY(contextVk->flushImpl(nullptr));
 
-    vk::Shared<vk::Fence> fence = contextVk->getLastSubmittedFence();
-    if (fence.isReferenced())
-    {
-        mImageLastUseFences.push_back(std::move(fence));
-    }
-
     return angle::Result::Continue;
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.h
index 1e7f540..c701829 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ImageVk.h
@@ -24,7 +24,7 @@
 
     virtual vk::ImageHelper *getImage() const = 0;
 
-    virtual void release(DisplayVk *display, std::vector<vk::GarbageObjectBase> *garbageQueue) = 0;
+    virtual void release(RendererVk *renderer) = 0;
 };
 
 class ImageVk : public ImageImpl
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp
index 48a66f5..6a8dc96 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp
@@ -100,10 +100,10 @@
     uint32_t layerCount;
     gl_vk::GetExtentsAndLayerCount(type, size, &vkExtents, &layerCount);
 
-    ANGLE_TRY(image->initExternal(contextVk, type, vkExtents, vkFormat, 1, imageUsageFlags,
-                                  vk::ImageLayout::ExternalPreInitialized,
-                                  &externalMemoryImageCreateInfo, static_cast<uint32_t>(levels),
-                                  layerCount));
+    ANGLE_TRY(image->initExternal(
+        contextVk, type, vkExtents, vkFormat, 1, imageUsageFlags,
+        vk::ImageLayout::ExternalPreInitialized, &externalMemoryImageCreateInfo, 0,
+        static_cast<uint32_t>(levels) - 1, static_cast<uint32_t>(levels), layerCount));
 
     VkMemoryRequirements externalMemoryRequirements;
     image->getImage().getMemoryRequirements(renderer->getDevice(), &externalMemoryRequirements);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/OverlayVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/OverlayVk.cpp
index ec5ce67..8075331 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/OverlayVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/OverlayVk.cpp
@@ -81,7 +81,7 @@
 
 angle::Result OverlayVk::createFont(ContextVk *contextVk)
 {
-    RendererVk *rendererVk = contextVk->getRenderer();
+    RendererVk *renderer = contextVk->getRenderer();
 
     // Create a buffer to stage font data upload.
     VkBufferCreateInfo bufferCreateInfo = {};
@@ -91,7 +91,7 @@
     bufferCreateInfo.usage       = VK_BUFFER_USAGE_TRANSFER_SRC_BIT;
     bufferCreateInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
 
-    vk::ContextScoped<vk::BufferHelper> fontDataBuffer(contextVk);
+    vk::RendererScoped<vk::BufferHelper> fontDataBuffer(renderer);
 
     ANGLE_TRY(fontDataBuffer.get().init(contextVk, bufferCreateInfo,
                                         VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT));
@@ -107,12 +107,13 @@
     fontDataBuffer.get().onExternalWrite(VK_ACCESS_HOST_WRITE_BIT);
 
     // Create the font image.
-    ANGLE_TRY(mFontImage.init(
-        contextVk, gl::TextureType::_2D,
-        VkExtent3D{gl::overlay::kFontImageWidth, gl::overlay::kFontImageHeight, 1},
-        rendererVk->getFormat(angle::FormatID::R8_UNORM), 1,
-        VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, 1, gl::overlay::kFontCount));
-    ANGLE_TRY(mFontImage.initMemory(contextVk, rendererVk->getMemoryProperties(),
+    ANGLE_TRY(
+        mFontImage.init(contextVk, gl::TextureType::_2D,
+                        VkExtent3D{gl::overlay::kFontImageWidth, gl::overlay::kFontImageHeight, 1},
+                        renderer->getFormat(angle::FormatID::R8_UNORM), 1,
+                        VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, 0, 0, 1,
+                        gl::overlay::kFontCount));
+    ANGLE_TRY(mFontImage.initMemory(contextVk, renderer->getMemoryProperties(),
                                     VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT));
     ANGLE_TRY(mFontImage.initImageView(contextVk, gl::TextureType::_2DArray,
                                        VK_IMAGE_ASPECT_COLOR_BIT, gl::SwizzleState(),
@@ -122,7 +123,7 @@
     vk::CommandBuffer *fontDataUpload;
     ANGLE_TRY(mFontImage.recordCommands(contextVk, &fontDataUpload));
 
-    fontDataBuffer.get().onRead(&mFontImage, VK_ACCESS_TRANSFER_READ_BIT);
+    fontDataBuffer.get().onRead(contextVk, &mFontImage, VK_ACCESS_TRANSFER_READ_BIT);
 
     mFontImage.changeLayout(VK_IMAGE_ASPECT_COLOR_BIT, vk::ImageLayout::TransferDst,
                             fontDataUpload);
@@ -148,12 +149,11 @@
 
 angle::Result OverlayVk::cullWidgets(ContextVk *contextVk)
 {
-    RendererVk *rendererVk = contextVk->getRenderer();
+    RendererVk *renderer = contextVk->getRenderer();
 
     // Release old culledWidgets image
-    Serial currentSerial = contextVk->getCurrentQueueSerial();
-    contextVk->releaseObject(currentSerial, &mCulledWidgets);
-    contextVk->releaseObject(currentSerial, &mCulledWidgetsView);
+    mCulledWidgets.releaseImage(renderer);
+    contextVk->addGarbage(&mCulledWidgetsView);
 
     // Create a buffer to contain coordinates of enabled text and graph widgets.  This buffer will
     // be used to perform tiled culling and can be discarded immediately after.
@@ -163,7 +163,7 @@
     bufferCreateInfo.usage              = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT;
     bufferCreateInfo.sharingMode        = VK_SHARING_MODE_EXCLUSIVE;
 
-    vk::ContextScoped<vk::BufferHelper> enabledWidgetsBuffer(contextVk);
+    vk::RendererScoped<vk::BufferHelper> enabledWidgetsBuffer(renderer);
 
     ANGLE_TRY(enabledWidgetsBuffer.get().init(contextVk, bufferCreateInfo,
                                               VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT));
@@ -186,9 +186,10 @@
         UnsignedCeilDivide(mPresentImageExtent.height, mSubgroupSize[1]), 1};
 
     ANGLE_TRY(mCulledWidgets.init(contextVk, gl::TextureType::_2D, culledWidgetsExtent,
-                                  rendererVk->getFormat(angle::FormatID::R32G32_UINT), 1,
-                                  VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, 1, 1));
-    ANGLE_TRY(mCulledWidgets.initMemory(contextVk, rendererVk->getMemoryProperties(),
+                                  renderer->getFormat(angle::FormatID::R32G32_UINT), 1,
+                                  VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, 0, 0, 1,
+                                  1));
+    ANGLE_TRY(mCulledWidgets.initMemory(contextVk, renderer->getMemoryProperties(),
                                         VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT));
     ANGLE_TRY(mCulledWidgets.initImageView(contextVk, gl::TextureType::_2D,
                                            VK_IMAGE_ASPECT_COLOR_BIT, gl::SwizzleState(),
@@ -213,10 +214,10 @@
         return angle::Result::Continue;
     }
 
-    RendererVk *rendererVk = contextVk->getRenderer();
+    RendererVk *renderer = contextVk->getRenderer();
 
     // If the swapchain image doesn't support storage image, we can't output to it.
-    VkFormatFeatureFlags featureBits = rendererVk->getImageFormatFeatureBits(
+    VkFormatFeatureFlags featureBits = renderer->getImageFormatFeatureBits(
         imageToPresent->getFormat().vkImageFormat, VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT);
     if ((featureBits & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT) == 0)
     {
@@ -239,8 +240,8 @@
         mRefreshCulledWidgets = false;
     }
 
-    vk::ContextScoped<vk::BufferHelper> textDataBuffer(contextVk);
-    vk::ContextScoped<vk::BufferHelper> graphDataBuffer(contextVk);
+    vk::RendererScoped<vk::BufferHelper> textDataBuffer(renderer);
+    vk::RendererScoped<vk::BufferHelper> graphDataBuffer(renderer);
 
     VkBufferCreateInfo textBufferCreateInfo = {};
     textBufferCreateInfo.sType              = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp
index 95cfbaa..52246cd 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp
@@ -42,11 +42,13 @@
     return angle::Result::Continue;
 }
 
-void PersistentCommandPool::destroy(const vk::Context *context)
+void PersistentCommandPool::destroy(VkDevice device)
 {
+    if (!valid())
+        return;
+
     ASSERT(mCommandPool.valid());
 
-    VkDevice device = context->getDevice();
     for (vk::PrimaryCommandBuffer &cmdBuf : mFreeBuffers)
     {
         cmdBuf.destroy(device, mCommandPool);
@@ -56,8 +58,8 @@
     mCommandPool.destroy(device);
 }
 
-angle::Result PersistentCommandPool::alloc(vk::Context *context,
-                                           vk::PrimaryCommandBuffer *bufferOutput)
+angle::Result PersistentCommandPool::allocate(vk::Context *context,
+                                              vk::PrimaryCommandBuffer *commandBufferOut)
 {
     if (mFreeBuffers.empty())
     {
@@ -65,7 +67,7 @@
         ASSERT(!mFreeBuffers.empty());
     }
 
-    *bufferOutput = std::move(mFreeBuffers.back());
+    *commandBufferOut = std::move(mFreeBuffers.back());
     mFreeBuffers.pop_back();
 
     return angle::Result::Continue;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/PersistentCommandPool.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/PersistentCommandPool.h
index 619b358..187dbcd 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/PersistentCommandPool.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/PersistentCommandPool.h
@@ -27,10 +27,10 @@
     PersistentCommandPool();
     ~PersistentCommandPool();
 
-    void destroy(const vk::Context *context);
+    void destroy(VkDevice device);
     angle::Result init(vk::Context *context, uint32_t queueFamilyIndex);
 
-    angle::Result alloc(vk::Context *context, vk::PrimaryCommandBuffer *bufferOutput);
+    angle::Result allocate(vk::Context *context, vk::PrimaryCommandBuffer *commandBufferOut);
     angle::Result collect(vk::Context *context, vk::PrimaryCommandBuffer &&buffer);
 
     bool valid() const { return mCommandPool.valid(); }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.cpp
index a6baf75..fc34548 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.cpp
@@ -22,8 +22,8 @@
 
 namespace
 {
-
-constexpr size_t kUniformBlockDynamicBufferMinSize = 256 * 128;
+// This size is picked according to the required maxUniformBufferRange in the Vulkan spec.
+constexpr size_t kUniformBlockDynamicBufferMinSize = 16384u;
 
 // Identical to Std140 encoder in all aspects, except it ignores opaque uniform types.
 class VulkanDefaultBlockEncoder : public sh::Std140BlockEncoder
@@ -446,15 +446,17 @@
     }
     mPipelineLayout.reset();
 
+    RendererVk *renderer = contextVk->getRenderer();
+
     for (auto &uniformBlock : mDefaultUniformBlocks)
     {
-        uniformBlock.storage.release(contextVk);
+        uniformBlock.storage.release(renderer);
     }
 
     mDefaultShaderInfo.release(contextVk);
     mLineRasterShaderInfo.release(contextVk);
 
-    mEmptyBuffer.release(contextVk);
+    mEmptyBuffer.release(renderer);
 
     mDescriptorSets.clear();
     mEmptyDescriptorSets.fill(VK_NULL_HANDLE);
@@ -470,6 +472,7 @@
     }
 
     mTextureDescriptorsCache.clear();
+    mDescriptorBuffersCache.clear();
 }
 
 std::unique_ptr<rx::LinkEvent> ProgramVk::load(const gl::Context *context,
@@ -795,6 +798,7 @@
                 {
                     // Gets the uniform name without the [0] at the end.
                     uniformName = gl::StripLastArrayIndex(uniformName);
+                    ASSERT(uniformName.size() != uniform.name.size());
                 }
 
                 bool found = false;
@@ -1219,6 +1223,8 @@
 
     uint32_t bindingIndex = 0;
 
+    mDescriptorBuffersCache.clear();
+
     // Write default uniforms for each shader type.
     for (const gl::ShaderType shaderType : mState.getLinkedShaderStages())
     {
@@ -1228,13 +1234,15 @@
 
         if (!uniformBlock.uniformData.empty())
         {
-            const vk::BufferHelper *bufferHelper = uniformBlock.storage.getCurrentBuffer();
-            bufferInfo.buffer                    = bufferHelper->getBuffer().getHandle();
+            vk::BufferHelper *bufferHelper = uniformBlock.storage.getCurrentBuffer();
+            bufferInfo.buffer              = bufferHelper->getBuffer().getHandle();
+            mDescriptorBuffersCache.emplace_back(bufferHelper);
         }
         else
         {
-            mEmptyBuffer.updateQueueSerial(contextVk->getCurrentQueueSerial());
+            mEmptyBuffer.onGraphAccess(contextVk->getCommandGraph());
             bufferInfo.buffer = mEmptyBuffer.getBuffer().getHandle();
+            mDescriptorBuffersCache.emplace_back(&mEmptyBuffer);
         }
 
         bufferInfo.offset = 0;
@@ -1333,7 +1341,7 @@
         }
         else
         {
-            bufferHelper.onRead(recorder, VK_ACCESS_UNIFORM_READ_BIT);
+            bufferHelper.onRead(contextVk, recorder, VK_ACCESS_UNIFORM_READ_BIT);
         }
 
         ++writeCount;
@@ -1398,7 +1406,7 @@
     }
 
     // Bind the empty buffer to every array slot that's unused.
-    mEmptyBuffer.updateQueueSerial(contextVk->getCurrentQueueSerial());
+    mEmptyBuffer.onGraphAccess(contextVk->getCommandGraph());
     for (size_t binding : ~writtenBindings)
     {
         VkDescriptorBufferInfo &bufferInfo = descriptorBufferInfo[binding];
@@ -1465,7 +1473,7 @@
             const vk::ImageView *imageView = nullptr;
 
             ANGLE_TRY(textureVk->getLayerLevelStorageImageView(
-                contextVk, binding.layered, binding.layer, binding.level, &imageView));
+                contextVk, (binding.layered == GL_TRUE), binding.layer, binding.level, &imageView));
 
             // Note: binding.access is unused because it is implied by the shader.
 
@@ -1533,7 +1541,7 @@
 
 void ProgramVk::updateTransformFeedbackDescriptorSetImpl(ContextVk *contextVk)
 {
-    const gl::State &glState = contextVk->getState();
+    const gl::State &glState                 = contextVk->getState();
     gl::TransformFeedback *transformFeedback = glState.getCurrentTransformFeedback();
 
     if (!hasTransformFeedbackOutput())
@@ -1751,6 +1759,11 @@
                                           mDynamicBufferOffsets.data());
     }
 
+    for (vk::BufferHelper *buffer : mDescriptorBuffersCache)
+    {
+        buffer->onGraphAccess(contextVk->getCommandGraph());
+    }
+
     return angle::Result::Continue;
 }
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.h
index ed4e29f..3132a38 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/ProgramVk.h
@@ -141,7 +141,7 @@
         vk::ShaderProgramHelper *shaderProgram;
         ANGLE_TRY(initGraphicsShaders(contextVk, mode, &shaderProgram));
         ASSERT(shaderProgram->isGraphicsProgram());
-        RendererVk *renderer = contextVk->getRenderer();
+        RendererVk *renderer             = contextVk->getRenderer();
         vk::PipelineCache *pipelineCache = nullptr;
         ANGLE_TRY(renderer->getPipelineCache(&pipelineCache));
         return shaderProgram->getGraphicsPipeline(
@@ -282,6 +282,7 @@
     // Descriptor sets for uniform blocks and textures for this program.
     std::vector<VkDescriptorSet> mDescriptorSets;
     vk::DescriptorSetLayoutArray<VkDescriptorSet> mEmptyDescriptorSets;
+    std::vector<vk::BufferHelper *> mDescriptorBuffersCache;
 
     std::unordered_map<vk::TextureDescriptorDesc, VkDescriptorSet> mTextureDescriptorsCache;
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/README.md b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/README.md
index 15ce741..9f2435a 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/README.md
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/README.md
@@ -16,11 +16,11 @@
 
 ## Back-end Design
 
-The [RendererVk](RendererVk.cpp) is a singleton. RendererVk owns shared global resources like the
-[VkDevice][VkDevice], [VkQueue][VkQueue], the [Vulkan format tables](vk_format_utils.h) and
-[internal Vulkan shaders](shaders). The back-end creates a new [ContextVk](ContextVk.cpp) instance
-to manage each allocated OpenGL Context. ContextVk processes state changes and handles action
-commands like `glDrawArrays` and `glDrawElements`.
+The [`RendererVk`](RendererVk.cpp) class represents an `EGLDisplay`. `RendererVk` owns shared global
+resources like the [VkDevice][VkDevice], [VkQueue][VkQueue], the [Vulkan format tables](vk_format_utils.h)
+and [internal Vulkan shaders](shaders). The [ContextVk](ContextVk.cpp) class implements the back-end
+of a front-end OpenGL Context. ContextVk processes state changes and handles action commands like
+`glDrawArrays` and `glDrawElements`.
 
 Implementation details can be found in the `doc` directory.
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.cpp
index 7605e3d..a780bfc 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.cpp
@@ -18,11 +18,7 @@
 namespace rx
 {
 RenderTargetVk::RenderTargetVk()
-    : mImage(nullptr),
-      mImageView(nullptr),
-      mCubeImageFetchView(nullptr),
-      mLevelIndex(0),
-      mLayerIndex(0)
+    : mImage(nullptr), mImageView(nullptr), mLevelIndex(0), mLayerIndex(0)
 {}
 
 RenderTargetVk::~RenderTargetVk() {}
@@ -30,31 +26,27 @@
 RenderTargetVk::RenderTargetVk(RenderTargetVk &&other)
     : mImage(other.mImage),
       mImageView(other.mImageView),
-      mCubeImageFetchView(other.mCubeImageFetchView),
       mLevelIndex(other.mLevelIndex),
       mLayerIndex(other.mLayerIndex)
 {}
 
 void RenderTargetVk::init(vk::ImageHelper *image,
                           const vk::ImageView *imageView,
-                          const vk::ImageView *cubeImageFetchView,
                           uint32_t levelIndex,
                           uint32_t layerIndex)
 {
-    mImage              = image;
-    mImageView          = imageView;
-    mCubeImageFetchView = cubeImageFetchView;
-    mLevelIndex         = levelIndex;
-    mLayerIndex         = layerIndex;
+    mImage      = image;
+    mImageView  = imageView;
+    mLevelIndex = levelIndex;
+    mLayerIndex = layerIndex;
 }
 
 void RenderTargetVk::reset()
 {
-    mImage              = nullptr;
-    mImageView          = nullptr;
-    mCubeImageFetchView = nullptr;
-    mLevelIndex         = 0;
-    mLayerIndex         = 0;
+    mImage      = nullptr;
+    mImageView  = nullptr;
+    mLevelIndex = 0;
+    mLayerIndex = 0;
 }
 
 angle::Result RenderTargetVk::onColorDraw(ContextVk *contextVk,
@@ -69,7 +61,7 @@
                          commandBuffer);
 
     // Set up dependencies between the RT resource and the Framebuffer.
-    mImage->addWriteDependency(framebufferVk);
+    mImage->addWriteDependency(contextVk, framebufferVk);
 
     return angle::Result::Continue;
 }
@@ -88,7 +80,7 @@
     mImage->changeLayout(aspectFlags, vk::ImageLayout::DepthStencilAttachment, commandBuffer);
 
     // Set up dependencies between the RT resource and the Framebuffer.
-    mImage->addWriteDependency(framebufferVk);
+    mImage->addWriteDependency(contextVk, framebufferVk);
 
     return angle::Result::Continue;
 }
@@ -116,12 +108,6 @@
     return getDrawImageView();
 }
 
-const vk::ImageView *RenderTargetVk::getFetchImageView() const
-{
-    return mCubeImageFetchView && mCubeImageFetchView->valid() ? mCubeImageFetchView
-                                                               : getReadImageView();
-}
-
 const vk::Format &RenderTargetVk::getImageFormat() const
 {
     ASSERT(mImage && mImage->valid());
@@ -137,12 +123,12 @@
 void RenderTargetVk::updateSwapchainImage(vk::ImageHelper *image, const vk::ImageView *imageView)
 {
     ASSERT(image && image->valid() && imageView && imageView->valid());
-    mImage              = image;
-    mImageView          = imageView;
-    mCubeImageFetchView = nullptr;
+    mImage     = image;
+    mImageView = imageView;
 }
 
-vk::ImageHelper *RenderTargetVk::getImageForRead(vk::CommandGraphResource *readingResource,
+vk::ImageHelper *RenderTargetVk::getImageForRead(ContextVk *contextVk,
+                                                 vk::CommandGraphResource *readingResource,
                                                  vk::ImageLayout layout,
                                                  vk::CommandBuffer *commandBuffer)
 {
@@ -163,17 +149,18 @@
     // I.e. the transition should happen on a node generated from mImage itself.
     // However, this needs context to be available here, or all call sites changed
     // to perform the layout transition and set the dependency.
-    mImage->addWriteDependency(readingResource);
+    mImage->addWriteDependency(contextVk, readingResource);
 
     mImage->changeLayout(mImage->getAspectFlags(), layout, commandBuffer);
 
     return mImage;
 }
 
-vk::ImageHelper *RenderTargetVk::getImageForWrite(vk::CommandGraphResource *writingResource) const
+vk::ImageHelper *RenderTargetVk::getImageForWrite(ContextVk *contextVk,
+                                                  vk::CommandGraphResource *writingResource) const
 {
     ASSERT(mImage && mImage->valid());
-    mImage->addWriteDependency(writingResource);
+    mImage->addWriteDependency(contextVk, writingResource);
     return mImage;
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.h
index 7cb7f34..006614c 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderTargetVk.h
@@ -45,7 +45,6 @@
 
     void init(vk::ImageHelper *image,
               const vk::ImageView *imageView,
-              const vk::ImageView *cubeImageFetchView,
               uint32_t levelIndex,
               uint32_t layerIndex);
     void reset();
@@ -62,17 +61,15 @@
     const vk::ImageHelper &getImage() const;
 
     // getImageForRead will also transition the resource to the given layout.
-    vk::ImageHelper *getImageForRead(vk::CommandGraphResource *readingResource,
+    vk::ImageHelper *getImageForRead(ContextVk *contextVk,
+                                     vk::CommandGraphResource *readingResource,
                                      vk::ImageLayout layout,
                                      vk::CommandBuffer *commandBuffer);
-    vk::ImageHelper *getImageForWrite(vk::CommandGraphResource *writingResource) const;
+    vk::ImageHelper *getImageForWrite(ContextVk *contextVk,
+                                      vk::CommandGraphResource *writingResource) const;
 
     const vk::ImageView *getDrawImageView() const;
     const vk::ImageView *getReadImageView() const;
-    // GLSL's texelFetch() needs a 2D array view to read from cube maps.  This function returns the
-    // same view as `getReadImageView()`, except for cubemaps, in which case it returns a 2D array
-    // view of it.
-    const vk::ImageView *getFetchImageView() const;
 
     const vk::Format &getImageFormat() const;
     gl::Extents getExtents() const;
@@ -88,10 +85,8 @@
   private:
     vk::ImageHelper *mImage;
     // Note that the draw and read image views are the same, given the requirements of a render
-    // target.
+    // target. Note that for cube maps we use 2D array views.
     const vk::ImageView *mImageView;
-    // For cubemaps, a 2D-array view is also created to be used with shaders that use texelFetch().
-    const vk::ImageView *mCubeImageFetchView;
     uint32_t mLevelIndex;
     uint32_t mLayerIndex;
 };
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
index 0f89b87..45927ab 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
@@ -73,7 +73,7 @@
 
         VkExtent3D extents = {static_cast<uint32_t>(width), static_cast<uint32_t>(height), 1u};
         ANGLE_TRY(mImage->init(contextVk, gl::TextureType::_2D, extents, vkFormat,
-                               static_cast<uint32_t>(samples), usage, 1, 1));
+                               static_cast<uint32_t>(samples), usage, 0, 0, 1, 1));
 
         VkMemoryPropertyFlags flags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
         ANGLE_TRY(mImage->initMemory(contextVk, renderer->getMemoryProperties(), flags));
@@ -88,7 +88,7 @@
         // Clear the renderbuffer if it has emulated channels.
         mImage->stageClearIfEmulatedFormat(gl::ImageIndex::Make2D(0), vkFormat);
 
-        mRenderTarget.init(mImage, &mImageView, nullptr, 0, 0);
+        mRenderTarget.init(mImage, &mImageView, 0, 0);
     }
 
     return angle::Result::Continue;
@@ -168,22 +168,19 @@
                                      rendererQueueFamilyIndex, commandBuffer);
     }
 
-    ANGLE_TRY(mImage->initLayerImageView(contextVk, imageVk->getImageTextureType(), aspect,
-                                         gl::SwizzleState(), &mImageView, imageVk->getImageLevel(),
-                                         1, imageVk->getImageLayer(), 1));
+    gl::TextureType viewType = imageVk->getImageTextureType();
 
     if (imageVk->getImageTextureType() == gl::TextureType::CubeMap)
     {
-        gl::TextureType arrayType = vk::Get2DTextureType(imageVk->getImage()->getLayerCount(),
-                                                         imageVk->getImage()->getSamples());
-        ANGLE_TRY(mImage->initLayerImageView(contextVk, arrayType, aspect, gl::SwizzleState(),
-                                             &mCubeImageFetchView, imageVk->getImageLevel(), 1,
-                                             imageVk->getImageLayer(), 1));
+        viewType = vk::Get2DTextureType(imageVk->getImage()->getLayerCount(),
+                                        imageVk->getImage()->getSamples());
     }
 
-    mRenderTarget.init(mImage, &mImageView,
-                       mCubeImageFetchView.valid() ? &mCubeImageFetchView : nullptr,
-                       imageVk->getImageLevel(), imageVk->getImageLayer());
+    ANGLE_TRY(mImage->initLayerImageView(contextVk, viewType, aspect, gl::SwizzleState(),
+                                         &mImageView, imageVk->getImageLevel(), 1,
+                                         imageVk->getImageLayer(), 1));
+
+    mRenderTarget.init(mImage, &mImageView, imageVk->getImageLevel(), imageVk->getImageLayer());
 
     return angle::Result::Continue;
 }
@@ -225,16 +222,17 @@
 {
     if (mImage && mOwnsImage)
     {
-        mImage->releaseImage(contextVk);
-        mImage->releaseStagingBuffer(contextVk);
+        RendererVk *renderer = contextVk->getRenderer();
+
+        mImage->releaseImage(renderer);
+        mImage->releaseStagingBuffer(renderer);
     }
     else
     {
         mImage = nullptr;
     }
 
-    contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mImageView);
-    contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mCubeImageFetchView);
+    contextVk->addGarbage(&mImageView);
 }
 
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.h
index 5dfc2ce..3f1ab3e 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RenderbufferVk.h
@@ -61,7 +61,6 @@
     bool mOwnsImage;
     vk::ImageHelper *mImage;
     vk::ImageView mImageView;
-    vk::ImageView mCubeImageFetchView;
     RenderTargetVk mRenderTarget;
 };
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.cpp
index 79174e2..bfe0205 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.cpp
@@ -39,6 +39,8 @@
 const uint32_t kMockVendorID                              = 0xba5eba11;
 const uint32_t kMockDeviceID                              = 0xf005ba11;
 constexpr char kMockDeviceName[]                          = "Vulkan Mock Device";
+const uint32_t kSwiftShaderDeviceID                       = 0xC0DE;
+constexpr char kSwiftShaderDeviceName[]                   = "SwiftShader Device";
 constexpr VkFormatFeatureFlags kInvalidFormatFeatureFlags = static_cast<VkFormatFeatureFlags>(-1);
 }  // anonymous namespace
 
@@ -49,8 +51,6 @@
 {
 // Update the pipeline cache every this many swaps.
 constexpr uint32_t kPipelineCacheVkUpdatePeriod = 60;
-// Wait a maximum of 10s.  If that times out, we declare it a failure.
-constexpr uint64_t kMaxFenceWaitTimeNs = 10'000'000'000llu;
 // Per the Vulkan specification, as long as Vulkan 1.1+ is returned by vkEnumerateInstanceVersion,
 // ANGLE must indicate the highest version of Vulkan functionality that it uses.  The Vulkan
 // validation layers will issue messages for any core functionality that requires a higher version.
@@ -71,6 +71,8 @@
             break;
         case EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE:
             return vk::ICD::Mock;
+        case EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE:
+            return vk::ICD::SwiftShader;
         default:
             UNREACHABLE();
             break;
@@ -117,6 +119,14 @@
     "UNASSIGNED-CoreValidation-Shader-PointSizeMissing",
     // http://anglebug.com/3832
     "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428",
+    // http://anglebug.com/3450
+    "VUID-vkDestroySemaphore-semaphore-parameter",
+    // http://anglebug.com/3924
+    "UNASSIGNED-Threading-Info",
+    // http://anglebug.com/3925
+    "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
+    "VUID-vkDestroyBuffer-buffer-parameter",
+    "VUID-vkDestroyImage-image-parameter",
 };
 
 // Suppress validation errors that are known
@@ -365,6 +375,13 @@
                 ERR() << "Error setting environment for Mock/Null Driver.";
             }
         }
+        else if (icd == vk::ICD::SwiftShader)
+        {
+            if (!setICDEnvironment(ANGLE_VK_SWIFTSHADER_ICD_JSON))
+            {
+                ERR() << "Error setting environment for SwiftShader.";
+            }
+        }
         if (mEnableValidationLayers || icd != vk::ICD::Default)
         {
             const auto &cwd = angle::GetCWD();
@@ -449,59 +466,54 @@
     Optional<std::string> mPreviousICDEnv;
 };
 
+using ICDFilterFunc = std::function<bool(const VkPhysicalDeviceProperties &)>;
+
+ICDFilterFunc GetFilterForICD(vk::ICD preferredICD)
+{
+    switch (preferredICD)
+    {
+        case vk::ICD::Mock:
+            return [](const VkPhysicalDeviceProperties &deviceProperties) {
+                return ((deviceProperties.vendorID == kMockVendorID) &&
+                        (deviceProperties.deviceID == kMockDeviceID) &&
+                        (strcmp(deviceProperties.deviceName, kMockDeviceName) == 0));
+            };
+        case vk::ICD::SwiftShader:
+            return [](const VkPhysicalDeviceProperties &deviceProperties) {
+                return ((deviceProperties.vendorID == VENDOR_ID_GOOGLE) &&
+                        (deviceProperties.deviceID == kSwiftShaderDeviceID) &&
+                        (strcmp(deviceProperties.deviceName, kSwiftShaderDeviceName) == 0));
+            };
+        default:
+            return [](const VkPhysicalDeviceProperties &deviceProperties) { return true; };
+    }
+}
+
 void ChoosePhysicalDevice(const std::vector<VkPhysicalDevice> &physicalDevices,
                           vk::ICD preferredICD,
                           VkPhysicalDevice *physicalDeviceOut,
                           VkPhysicalDeviceProperties *physicalDevicePropertiesOut)
 {
     ASSERT(!physicalDevices.empty());
-    if (preferredICD == vk::ICD::Mock)
+
+    ICDFilterFunc filter = GetFilterForICD(preferredICD);
+
+    for (const VkPhysicalDevice &physicalDevice : physicalDevices)
     {
-        for (const VkPhysicalDevice &physicalDevice : physicalDevices)
+        vkGetPhysicalDeviceProperties(physicalDevice, physicalDevicePropertiesOut);
+        if (filter(*physicalDevicePropertiesOut))
         {
-            vkGetPhysicalDeviceProperties(physicalDevice, physicalDevicePropertiesOut);
-            if ((kMockVendorID == physicalDevicePropertiesOut->vendorID) &&
-                (kMockDeviceID == physicalDevicePropertiesOut->deviceID) &&
-                (strcmp(kMockDeviceName, physicalDevicePropertiesOut->deviceName) == 0))
-            {
-                *physicalDeviceOut = physicalDevice;
-                return;
-            }
+            *physicalDeviceOut = physicalDevice;
+            return;
         }
-        WARN() << "Vulkan Mock Driver was requested but Mock Device was not found. Using default "
-                  "physicalDevice instead.";
     }
+    WARN() << "Preferred device ICD not found. Using default physicalDevice instead.";
 
     // Fall back to first device.
     *physicalDeviceOut = physicalDevices[0];
     vkGetPhysicalDeviceProperties(*physicalDeviceOut, physicalDevicePropertiesOut);
 }
-
-angle::Result WaitFences(vk::Context *context,
-                         std::vector<vk::Shared<vk::Fence>> *fences,
-                         bool block)
-{
-    uint64_t timeout = block ? kMaxFenceWaitTimeNs : 0;
-
-    // Iterate backwards over the fences, removing them from the list in constant time when they are
-    // complete.
-    while (!fences->empty())
-    {
-        VkResult result = fences->back().get().wait(context->getDevice(), timeout);
-        if (result == VK_TIMEOUT)
-        {
-            return angle::Result::Continue;
-        }
-        ANGLE_VK_TRY(context, result);
-
-        context->getRenderer()->resetSharedFence(&fences->back());
-        fences->pop_back();
-    }
-
-    return angle::Result::Continue;
-}
-
-}  // anonymous namespace
+}  // namespace
 
 // RendererVk implementation.
 RendererVk::RendererVk()
@@ -519,6 +531,8 @@
       mCurrentQueueFamilyIndex(std::numeric_limits<uint32_t>::max()),
       mMaxVertexAttribDivisor(1),
       mDevice(VK_NULL_HANDLE),
+      mLastCompletedQueueSerial(mQueueSerialFactory.generate()),
+      mCurrentQueueSerial(mQueueSerialFactory.generate()),
       mDeviceLost(false),
       mPipelineCacheVkUpdateTimeout(kPipelineCacheVkUpdatePeriod),
       mPipelineCacheDirty(false),
@@ -530,12 +544,13 @@
 
 RendererVk::~RendererVk()
 {
-    ASSERT(mFencedGarbage.empty());
+    ASSERT(mSharedGarbage.empty());
 }
 
 void RendererVk::onDestroy(vk::Context *context)
 {
     (void)cleanupGarbage(context, true);
+    ASSERT(mSharedGarbage.empty());
 
     mFenceRecycler.destroy(mDevice);
 
@@ -577,7 +592,8 @@
 
 void RendererVk::notifyDeviceLost()
 {
-    mDeviceLost = true;
+    mLastCompletedQueueSerial = mLastSubmittedQueueSerial;
+    mDeviceLost               = true;
     mDisplay->notifyDeviceLost();
 }
 
@@ -595,8 +611,14 @@
     const egl::AttributeMap &attribs = mDisplay->getAttributeMap();
     ScopedVkLoaderEnvironment scopedEnvironment(ShouldUseDebugLayers(attribs),
                                                 ChooseICDFromAttribs(attribs));
+#if defined(ANGLE_PLATFORM_WINDOWS) && !defined(_WIN64)
+    // TODO: Re-enable validation layers on 32bit Windows
+    // http://anglebug.com/3946, http://anglebug.com/3924
+    mEnableValidationLayers = false;
+#else
     mEnableValidationLayers = scopedEnvironment.canEnableValidationLayers();
-    mEnabledICD             = scopedEnvironment.getEnabledICD();
+#endif
+    mEnabledICD = scopedEnvironment.getEnabledICD();
 
     // Gather global layer properties.
     uint32_t instanceLayerCount = 0;
@@ -663,10 +685,15 @@
     ExtensionNameList enabledInstanceExtensions;
     enabledInstanceExtensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
     enabledInstanceExtensions.push_back(wsiExtension);
-
+#if defined(ANGLE_PLATFORM_ANDROID)
+    // TODO: Enable DebugUtils on Android
+    // http://anglebug.com/3852
+    bool enableDebugUtils = false;
+#else
     bool enableDebugUtils =
         mEnableValidationLayers &&
         ExtensionFound(VK_EXT_DEBUG_UTILS_EXTENSION_NAME, instanceExtensionNames);
+#endif
     bool enableDebugReport =
         mEnableValidationLayers && !enableDebugUtils &&
         ExtensionFound(VK_EXT_DEBUG_REPORT_EXTENSION_NAME, instanceExtensionNames);
@@ -732,7 +759,16 @@
         enabledInstanceExtensions.empty() ? nullptr : enabledInstanceExtensions.data();
     instanceInfo.enabledLayerCount   = static_cast<uint32_t>(enabledInstanceLayerNames.size());
     instanceInfo.ppEnabledLayerNames = enabledInstanceLayerNames.data();
-
+#if defined(ANGLE_PLATFORM_ANDROID) && !defined(ANGLE_IS_64_BIT_CPU)
+    // TODO: Re-enable validation layers on 32-bit Android
+    // http://anglebug.com/3924
+    VkValidationFeatureDisableEXT vkValFeaturesDisable = VK_VALIDATION_FEATURE_DISABLE_ALL_EXT;
+    VkValidationFeaturesEXT validationFeatures         = {};
+    validationFeatures.sType                           = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
+    validationFeatures.disabledValidationFeatureCount  = 1;
+    validationFeatures.pDisabledValidationFeatures     = &vkValFeaturesDisable;
+    instanceInfo.pNext                                 = &validationFeatures;
+#endif
     ANGLE_VK_TRY(displayVk, vkCreateInstance(&instanceInfo, nullptr, &mInstance));
 
     if (enableDebugUtils)
@@ -796,6 +832,10 @@
     ChoosePhysicalDevice(physicalDevices, mEnabledICD, &mPhysicalDevice,
                          &mPhysicalDeviceProperties);
 
+    mGarbageCollectionFlushThreshold =
+        static_cast<uint32_t>(mPhysicalDeviceProperties.limits.maxMemoryAllocationCount *
+                              kPercentMaxMemoryAllocationCount);
+
     vkGetPhysicalDeviceFeatures(mPhysicalDevice, &mPhysicalDeviceFeatures);
 
     // Ensure we can find a graphics queue family.
@@ -981,6 +1021,7 @@
         mPhysicalDeviceFeatures.vertexPipelineStoresAndAtomics;
     enabledFeatures.features.fragmentStoresAndAtomics =
         mPhysicalDeviceFeatures.fragmentStoresAndAtomics;
+    enabledFeatures.features.geometryShader = mPhysicalDeviceFeatures.geometryShader;
     if (!vk::CommandBuffer::ExecutesInline())
     {
         enabledFeatures.features.inheritedQueries = mPhysicalDeviceFeatures.inheritedQueries;
@@ -1023,7 +1064,11 @@
         deviceProperties.pNext = &divisorProperties;
 
         vkGetPhysicalDeviceProperties2KHR(mPhysicalDevice, &deviceProperties);
-        mMaxVertexAttribDivisor = divisorProperties.maxVertexAttribDivisor;
+        // We only store 8 bit divisor in GraphicsPipelineDesc so capping value & we emulate if
+        // exceeded
+        mMaxVertexAttribDivisor =
+            std::min(divisorProperties.maxVertexAttribDivisor,
+                     static_cast<uint32_t>(std::numeric_limits<uint8_t>::max()));
 
         createInfo.pNext = &enabledFeatures;
     }
@@ -1204,126 +1249,99 @@
 
 void RendererVk::initFeatures(const ExtensionNameList &deviceExtensionNames)
 {
+    bool isAMD      = IsAMD(mPhysicalDeviceProperties.vendorID);
+    bool isIntel    = IsIntel(mPhysicalDeviceProperties.vendorID);
+    bool isNvidia   = IsNvidia(mPhysicalDeviceProperties.vendorID);
+    bool isQualcomm = IsQualcomm(mPhysicalDeviceProperties.vendorID);
+
     // Use OpenGL line rasterization rules by default.
-    mFeatures.basicGLLineRasterization.enabled = true;
+    // TODO(jmadill): Fix Android support. http://anglebug.com/2830
+    ANGLE_FEATURE_CONDITION((&mFeatures), basicGLLineRasterization, !IsAndroid())
 
-    if ((mPhysicalDeviceProperties.apiVersion >= VK_MAKE_VERSION(1, 1, 0)) ||
-        ExtensionFound(VK_KHR_MAINTENANCE1_EXTENSION_NAME, deviceExtensionNames))
-    {
-        // TODO(lucferron): Currently disabled on Intel only since many tests are failing and need
-        // investigation. http://anglebug.com/2728
-        mFeatures.flipViewportY.enabled = !IsIntel(mPhysicalDeviceProperties.vendorID);
-    }
+    // TODO(lucferron): Currently disabled on Intel only since many tests are failing and need
+    // investigation. http://anglebug.com/2728
+    ANGLE_FEATURE_CONDITION(
+        (&mFeatures), flipViewportY,
+        !IsIntel(mPhysicalDeviceProperties.vendorID) &&
+                (mPhysicalDeviceProperties.apiVersion >= VK_MAKE_VERSION(1, 1, 0)) ||
+            ExtensionFound(VK_KHR_MAINTENANCE1_EXTENSION_NAME, deviceExtensionNames))
 
-#ifdef ANGLE_PLATFORM_WINDOWS
     // http://anglebug.com/2838
-    mFeatures.extraCopyBufferRegion.enabled = IsIntel(mPhysicalDeviceProperties.vendorID);
+    ANGLE_FEATURE_CONDITION((&mFeatures), extraCopyBufferRegion, IsWindows() && isIntel)
 
     // http://anglebug.com/3055
-    mFeatures.forceCPUPathForCubeMapCopy.enabled = IsIntel(mPhysicalDeviceProperties.vendorID);
-#endif
-
-    angle::PlatformMethods *platform = ANGLEPlatformCurrent();
-    platform->overrideFeaturesVk(platform, &mFeatures);
+    ANGLE_FEATURE_CONDITION((&mFeatures), forceCPUPathForCubeMapCopy, IsWindows() && isIntel)
 
     // Work around incorrect NVIDIA point size range clamping.
     // TODO(jmadill): Narrow driver range once fixed. http://anglebug.com/2970
-    if (IsNvidia(mPhysicalDeviceProperties.vendorID))
-    {
-        mFeatures.clampPointSize.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION((&mFeatures), clampPointSize, isNvidia)
 
-#if defined(ANGLE_PLATFORM_ANDROID)
     // Work around ineffective compute-graphics barriers on Nexus 5X.
     // TODO(syoussefi): Figure out which other vendors and driver versions are affected.
     // http://anglebug.com/3019
-    mFeatures.flushAfterVertexConversion.enabled =
-        IsNexus5X(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID);
-#endif
+    ANGLE_FEATURE_CONDITION((&mFeatures), flushAfterVertexConversion,
+                            IsAndroid() && IsNexus5X(mPhysicalDeviceProperties.vendorID,
+                                                     mPhysicalDeviceProperties.deviceID))
 
-    if (ExtensionFound(VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME, deviceExtensionNames))
-    {
-        mFeatures.supportsIncrementalPresent.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION(
+        (&mFeatures), supportsIncrementalPresent,
+        ExtensionFound(VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME, deviceExtensionNames))
 
 #if defined(ANGLE_PLATFORM_ANDROID)
-    mFeatures.supportsAndroidHardwareBuffer.enabled =
-        ExtensionFound(VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME,
-                       deviceExtensionNames) &&
-        ExtensionFound(VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME, deviceExtensionNames);
+    ANGLE_FEATURE_CONDITION(
+        (&mFeatures), supportsAndroidHardwareBuffer,
+        IsAndroid() &&
+            ExtensionFound(VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME,
+                           deviceExtensionNames) &&
+            ExtensionFound(VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME, deviceExtensionNames))
 #endif
 
-    if (ExtensionFound(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME, deviceExtensionNames))
-    {
-        mFeatures.supportsExternalMemoryFd.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION(
+        (&mFeatures), supportsExternalMemoryFd,
+        ExtensionFound(VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME, deviceExtensionNames))
 
-    if (ExtensionFound(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, deviceExtensionNames))
-    {
-        mFeatures.supportsExternalSemaphoreFd.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION(
+        (&mFeatures), supportsExternalSemaphoreFd,
+        ExtensionFound(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, deviceExtensionNames))
 
-    if (ExtensionFound(VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, deviceExtensionNames))
-    {
-        mFeatures.supportsShaderStencilExport.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION(
+        (&mFeatures), supportsShaderStencilExport,
+        ExtensionFound(VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME, deviceExtensionNames))
 
     // TODO(syoussefi): when the code path using the extension is implemented, this should be
     // conditioned to the extension not being present as well.  http://anglebug.com/3206
-    if (mPhysicalDeviceFeatures.vertexPipelineStoresAndAtomics)
-    {
-        mFeatures.emulateTransformFeedback.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION((&mFeatures), emulateTransformFeedback,
+                            mPhysicalDeviceFeatures.vertexPipelineStoresAndAtomics == VK_TRUE)
 
-    if (IsLinux() && IsIntel(mPhysicalDeviceProperties.vendorID))
-    {
-        mFeatures.disableFifoPresentMode.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION((&mFeatures), disableFifoPresentMode, IsLinux() && isIntel)
 
-    if (IsAndroid() && IsQualcomm(mPhysicalDeviceProperties.vendorID))
-    {
-        if (vk::CommandBuffer::ExecutesInline())
-        {
-            mFeatures.restartRenderPassAfterLoadOpClear.enabled = true;
-        }
+    ANGLE_FEATURE_CONDITION((&mFeatures), restartRenderPassAfterLoadOpClear,
+                            IsAndroid() && isQualcomm && vk::CommandBuffer::ExecutesInline())
 
-        mFeatures.bindEmptyForUnusedDescriptorSets.enabled = true;
+    ANGLE_FEATURE_CONDITION((&mFeatures), bindEmptyForUnusedDescriptorSets,
+                            IsAndroid() && isQualcomm)
 
-        mFeatures.forceOldRewriteStructSamplers.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION((&mFeatures), forceOldRewriteStructSamplers, IsAndroid() && isQualcomm)
 
-    if (IsWindows() && IsIntel(mPhysicalDeviceProperties.vendorID))
-    {
-        mFeatures.forceNonZeroScissor.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION((&mFeatures), forceNonZeroScissor, IsWindows() && isIntel)
 
-    if (IsIntel(mPhysicalDeviceProperties.vendorID) ||
-        (IsWindows() && IsAMD(mPhysicalDeviceProperties.vendorID)))
-    {
-        mFeatures.perFrameWindowSizeQuery.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION((&mFeatures), perFrameWindowSizeQuery,
+                            isIntel || (IsWindows() && isAMD))
 
-    if (IsWindows() && IsAMD(mPhysicalDeviceProperties.vendorID))
-    {
-        // Disabled on AMD/windows due to buggy behavior.
-        mFeatures.disallowSeamfulCubeMapEmulation.enabled = true;
-    }
+    // Disabled on AMD/windows due to buggy behavior.
+    ANGLE_FEATURE_CONDITION((&mFeatures), disallowSeamfulCubeMapEmulation, IsWindows() && isAMD)
 
-    if (IsAndroid() && IsQualcomm(mPhysicalDeviceProperties.vendorID))
-    {
-        mFeatures.forceD16TexFilter.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION((&mFeatures), forceD16TexFilter, IsAndroid() && isQualcomm)
 
-    if (IsAndroid() && IsQualcomm(mPhysicalDeviceProperties.vendorID))
-    {
-        mFeatures.disableFlippingBlitWithCommand.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION((&mFeatures), disableFlippingBlitWithCommand, IsAndroid() && isQualcomm)
 
-    if (IsPixel2(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID) ||
-        IsPixel1XL(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID))
-    {
-        mFeatures.transientCommandBuffer.enabled = true;
-    }
+    ANGLE_FEATURE_CONDITION(
+        (&mFeatures), transientCommandBuffer,
+        IsPixel2(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID) ||
+            IsPixel1XL(mPhysicalDeviceProperties.vendorID, mPhysicalDeviceProperties.deviceID))
+
+    angle::PlatformMethods *platform = ANGLEPlatformCurrent();
+    platform->overrideFeaturesVk(platform, &mFeatures);
 }
 
 void RendererVk::initPipelineCacheVkKey()
@@ -1518,7 +1536,8 @@
 
 angle::Result RendererVk::queueSubmit(vk::Context *context,
                                       const VkSubmitInfo &submitInfo,
-                                      const vk::Fence &fence)
+                                      const vk::Fence &fence,
+                                      Serial *serialOut)
 {
     {
         std::lock_guard<decltype(mQueueMutex)> lock(mQueueMutex);
@@ -1527,6 +1546,10 @@
 
     ANGLE_TRY(cleanupGarbage(context, false));
 
+    *serialOut                = mCurrentQueueSerial;
+    mLastSubmittedQueueSerial = mCurrentQueueSerial;
+    mCurrentQueueSerial       = mQueueSerialFactory.generate();
+
     return angle::Result::Continue;
 }
 
@@ -1554,11 +1577,6 @@
     }
 }
 
-Serial RendererVk::nextSerial()
-{
-    return mQueueSerialFactory.generate();
-}
-
 angle::Result RendererVk::newSharedFence(vk::Context *context,
                                          vk::Shared<vk::Fence> *sharedFenceOut)
 {
@@ -1579,21 +1597,6 @@
     return angle::Result::Continue;
 }
 
-void RendererVk::addGarbage(vk::Shared<vk::Fence> &&fence,
-                            std::vector<vk::GarbageObjectBase> &&garbage)
-{
-    std::vector<vk::Shared<vk::Fence>> fences;
-    fences.push_back(std::move(fence));
-    addGarbage(std::move(fences), std::move(garbage));
-}
-
-void RendererVk::addGarbage(std::vector<vk::Shared<vk::Fence>> &&fences,
-                            std::vector<vk::GarbageObjectBase> &&garbage)
-{
-    std::lock_guard<decltype(mGarbageMutex)> lock(mGarbageMutex);
-    mFencedGarbage.emplace_back(std::move(fences), std::move(garbage));
-}
-
 template <VkFormatFeatureFlags VkFormatProperties::*features>
 VkFormatFeatureFlags RendererVk::getFormatFeatureBits(VkFormat format,
                                                       const VkFormatFeatureFlags featureBits)
@@ -1634,17 +1637,13 @@
 {
     std::lock_guard<decltype(mGarbageMutex)> lock(mGarbageMutex);
 
-    auto garbageIter = mFencedGarbage.begin();
-    while (garbageIter != mFencedGarbage.end())
+    for (auto garbageIter = mSharedGarbage.begin(); garbageIter != mSharedGarbage.end();)
     {
-        ANGLE_TRY(WaitFences(context, &garbageIter->first, block));
-        if (garbageIter->first.empty())
+        // Possibly 'counter' should be always zero when we add the object to garbage.
+        vk::SharedGarbage &garbage = *garbageIter;
+        if (garbage.destroyIfComplete(mDevice, mLastCompletedQueueSerial))
         {
-            for (vk::GarbageObjectBase &garbageObject : garbageIter->second)
-            {
-                garbageObject.destroy(mDevice);
-            }
-            garbageIter = mFencedGarbage.erase(garbageIter);
+            garbageIter = mSharedGarbage.erase(garbageIter);
         }
         else
         {
@@ -1668,4 +1667,25 @@
 
     return std::move(mLastValidationMessage);
 }
+
+uint64_t RendererVk::getMaxFenceWaitTimeNs() const
+{
+    // Wait a maximum of 10s.  If that times out, we declare it a failure.
+    constexpr uint64_t kMaxFenceWaitTimeNs = 10'000'000'000llu;
+
+#if defined(NDEBUG)
+    return kMaxFenceWaitTimeNs;
+#else
+    // More time in debug builds (e.g. SwiftShader debug needs more time)
+    return kMaxFenceWaitTimeNs * 100;
+#endif
+}
+
+void RendererVk::onCompletedSerial(Serial serial)
+{
+    if (serial > mLastCompletedQueueSerial)
+    {
+        mLastCompletedQueueSerial = serial;
+    }
+}
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.h
index 36f7ec2..572b315 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/RendererVk.h
@@ -39,12 +39,24 @@
 namespace vk
 {
 struct Format;
-}
+}  // namespace vk
 
 // Supports one semaphore from current surface, and one semaphore passed to
 // glSignalSemaphoreEXT.
 using SignalSemaphoreVector = angle::FixedVector<VkSemaphore, 2>;
 
+inline void CollectGarbage(std::vector<vk::GarbageObject> *garbageOut) {}
+
+template <typename ArgT, typename... ArgsT>
+void CollectGarbage(std::vector<vk::GarbageObject> *garbageOut, ArgT object, ArgsT... objectsIn)
+{
+    if (object->valid())
+    {
+        garbageOut->emplace_back(vk::GarbageObject::Get(object));
+    }
+    CollectGarbage(garbageOut, objectsIn...);
+}
+
 class RendererVk : angle::NonCopyable
 {
   public:
@@ -125,6 +137,7 @@
         ASSERT(mFeaturesInitialized);
         return mFeatures;
     }
+    uint32_t getMaxVertexAttribDivisor() const { return mMaxVertexAttribDivisor; }
 
     bool isMockICDEnabled() const { return mEnabledICD == vk::ICD::Mock; }
 
@@ -139,21 +152,34 @@
 
     angle::Result queueSubmit(vk::Context *context,
                               const VkSubmitInfo &submitInfo,
-                              const vk::Fence &fence);
+                              const vk::Fence &fence,
+                              Serial *serialOut);
     angle::Result queueWaitIdle(vk::Context *context);
     VkResult queuePresent(const VkPresentInfoKHR &presentInfo);
 
-    Serial nextSerial();
-
     angle::Result newSharedFence(vk::Context *context, vk::Shared<vk::Fence> *sharedFenceOut);
     inline void resetSharedFence(vk::Shared<vk::Fence> *sharedFenceIn)
     {
         sharedFenceIn->resetAndRecycle(&mFenceRecycler);
     }
 
-    void addGarbage(vk::Shared<vk::Fence> &&fence, std::vector<vk::GarbageObjectBase> &&garbage);
-    void addGarbage(std::vector<vk::Shared<vk::Fence>> &&fences,
-                    std::vector<vk::GarbageObjectBase> &&garbage);
+    template <typename... ArgsT>
+    void collectGarbageAndReinit(vk::SharedResourceUse *use, ArgsT... garbageIn)
+    {
+        std::vector<vk::GarbageObject> sharedGarbage;
+        CollectGarbage(&sharedGarbage, garbageIn...);
+        if (!sharedGarbage.empty())
+        {
+            mSharedGarbage.emplace_back(std::move(*use), std::move(sharedGarbage));
+        }
+        else
+        {
+            // Force releasing "use" even if no garbage was created.
+            use->release();
+        }
+        // Keep "use" valid.
+        use->init();
+    }
 
     static constexpr size_t kMaxExtensionNames = 200;
     using ExtensionNameList = angle::FixedVector<const char *, kMaxExtensionNames>;
@@ -164,6 +190,18 @@
     void onNewValidationMessage(const std::string &message);
     std::string getAndClearLastValidationMessage(uint32_t *countSinceLastClear);
 
+    uint64_t getMaxFenceWaitTimeNs() const;
+    Serial getCurrentQueueSerial() const { return mCurrentQueueSerial; }
+    Serial getLastSubmittedQueueSerial() const { return mLastSubmittedQueueSerial; }
+    Serial getLastCompletedQueueSerial() const { return mLastCompletedQueueSerial; }
+
+    void onCompletedSerial(Serial serial);
+
+    bool shouldCleanupGarbage()
+    {
+        return (mSharedGarbage.size() > mGarbageCollectionFlushThreshold);
+    }
+
   private:
     angle::Result initializeDevice(DisplayVk *displayVk, uint32_t queueFamilyIndex);
     void ensureCapsInitialized() const;
@@ -210,6 +248,9 @@
     VkDevice mDevice;
     AtomicSerialFactory mQueueSerialFactory;
     AtomicSerialFactory mShaderSerialFactory;
+
+    Serial mLastCompletedQueueSerial;
+    Serial mLastSubmittedQueueSerial;
     Serial mCurrentQueueSerial;
 
     bool mDeviceLost;
@@ -217,9 +258,7 @@
     vk::Recycler<vk::Fence> mFenceRecycler;
 
     std::mutex mGarbageMutex;
-    using FencedGarbage =
-        std::pair<std::vector<vk::Shared<vk::Fence>>, std::vector<vk::GarbageObjectBase>>;
-    std::vector<FencedGarbage> mFencedGarbage;
+    vk::SharedGarbageList mSharedGarbage;
 
     vk::MemoryProperties mMemoryProperties;
     vk::FormatTable mFormatTable;
@@ -246,6 +285,11 @@
     // Latest validation data for debug overlay.
     std::string mLastValidationMessage;
     uint32_t mValidationMessageCount;
+
+    // How close to VkPhysicalDeviceLimits::maxMemoryAllocationCount we allow ourselves to get
+    static constexpr double kPercentMaxMemoryAllocationCount = 0.3;
+    // How many objects to garbage collect before issuing a flush()
+    uint32_t mGarbageCollectionFlushThreshold;
 };
 
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SamplerVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SamplerVk.cpp
index 483437b..74169b7 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SamplerVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SamplerVk.cpp
@@ -23,7 +23,7 @@
 void SamplerVk::onDestroy(const gl::Context *context)
 {
     ContextVk *contextVk = vk::GetImpl(context);
-    contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mSampler);
+    contextVk->addGarbage(&mSampler);
 }
 
 const vk::Sampler &SamplerVk::getSampler() const
@@ -43,7 +43,7 @@
         {
             return angle::Result::Continue;
         }
-        contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mSampler);
+        contextVk->addGarbage(&mSampler);
     }
 
     const gl::Extensions &extensions = renderer->getNativeExtensions();
@@ -69,6 +69,15 @@
     samplerInfo.borderColor             = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK;
     samplerInfo.unnormalizedCoordinates = VK_FALSE;
 
+    if (!gl::IsMipmapFiltered(mState))
+    {
+        // Per the Vulkan spec, GL_NEAREST and GL_LINEAR do not map directly to Vulkan, so
+        // they must be emulated (See "Mapping of OpenGL to Vulkan filter modes")
+        samplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
+        samplerInfo.minLod     = 0.0f;
+        samplerInfo.maxLod     = 0.25f;
+    }
+
     ANGLE_VK_TRY(contextVk, mSampler.init(contextVk->getDevice(), samplerInfo));
     // Regenerate the serial on a sampler change.
     mSerial = contextVk->generateTextureSerial();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp
index 9e19ec0..0ec910e 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp
@@ -213,6 +213,20 @@
                               params->firstVertex, params->firstInstance);
                     break;
                 }
+                case CommandID::DrawIndirect:
+                {
+                    const DrawIndirectParams *params =
+                        getParamPtr<DrawIndirectParams>(currentCommand);
+                    vkCmdDrawIndirect(cmdBuffer, params->buffer, params->offset, 1, 0);
+                    break;
+                }
+                case CommandID::DrawIndexedIndirect:
+                {
+                    const DrawIndexedIndirectParams *params =
+                        getParamPtr<DrawIndexedIndirectParams>(currentCommand);
+                    vkCmdDrawIndexedIndirect(cmdBuffer, params->buffer, params->offset, 1, 0);
+                    break;
+                }
                 case CommandID::EndQuery:
                 {
                     const EndQueryParams *params = getParamPtr<EndQueryParams>(currentCommand);
@@ -436,6 +450,9 @@
                 case CommandID::DrawInstanced:
                     result += "DrawInstanced";
                     break;
+                case CommandID::DrawIndexedIndirect:
+                    result += "DrawIndexedIndirect";
+                    break;
                 case CommandID::EndQuery:
                     result += "EndQuery";
                     break;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h
index cc56e76..cc37046 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h
@@ -51,6 +51,8 @@
     DrawIndexedInstancedBaseVertexBaseInstance,
     DrawInstanced,
     DrawInstancedBaseInstance,
+    DrawIndirect,
+    DrawIndexedIndirect,
     EndQuery,
     ExecutionBarrier,
     FillBuffer,
@@ -230,6 +232,13 @@
 };
 VERIFY_4_BYTE_ALIGNMENT(DrawIndexedInstancedBaseVertexBaseInstanceParams)
 
+struct DrawIndexedIndirectParams
+{
+    VkBuffer buffer;
+    VkDeviceSize offset;
+};
+VERIFY_4_BYTE_ALIGNMENT(DrawIndexedIndirectParams)
+
 struct DispatchParams
 {
     uint32_t groupCountX;
@@ -238,6 +247,13 @@
 };
 VERIFY_4_BYTE_ALIGNMENT(DispatchParams)
 
+struct DrawIndirectParams
+{
+    VkBuffer buffer;
+    VkDeviceSize offset;
+};
+VERIFY_4_BYTE_ALIGNMENT(DrawIndirectParams)
+
 struct DispatchIndirectParams
 {
     VkBuffer buffer;
@@ -476,6 +492,15 @@
                                    uint32_t firstVertex,
                                    uint32_t firstInstance);
 
+    void drawIndirect(const Buffer &buffer,
+                      VkDeviceSize offset,
+                      uint32_t drawCount,
+                      uint32_t stride);
+    void drawIndexedIndirect(const Buffer &buffer,
+                             VkDeviceSize offset,
+                             uint32_t drawCount,
+                             uint32_t stride);
+
     void endQuery(VkQueryPool queryPool, uint32_t query);
 
     void executionBarrier(VkPipelineStageFlags stageMask);
@@ -943,6 +968,32 @@
     paramStruct->firstInstance = firstInstance;
 }
 
+ANGLE_INLINE void SecondaryCommandBuffer::drawIndirect(const Buffer &buffer,
+                                                       VkDeviceSize offset,
+                                                       uint32_t drawCount,
+                                                       uint32_t stride)
+{
+    DrawIndirectParams *paramStruct = initCommand<DrawIndirectParams>(CommandID::DrawIndirect);
+    paramStruct->buffer             = buffer.getHandle();
+    paramStruct->offset             = offset;
+
+    // OpenGL ES doesn't have a way to specify a drawCount or stride, throw assert if something
+    // changes.
+    ASSERT(drawCount == 1);
+}
+
+ANGLE_INLINE void SecondaryCommandBuffer::drawIndexedIndirect(const Buffer &buffer,
+                                                              VkDeviceSize offset,
+                                                              uint32_t drawCount,
+                                                              uint32_t stride)
+{
+    DrawIndexedIndirectParams *paramStruct =
+        initCommand<DrawIndexedIndirectParams>(CommandID::DrawIndexedIndirect);
+    paramStruct->buffer = buffer.getHandle();
+    paramStruct->offset = offset;
+    ASSERT(drawCount == 1);
+}
+
 ANGLE_INLINE void SecondaryCommandBuffer::endQuery(VkQueryPool queryPool, uint32_t query)
 {
     EndQueryParams *paramStruct = initCommand<EndQueryParams>(CommandID::EndQuery);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SemaphoreVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SemaphoreVk.cpp
index 46d486e..6f5991c 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SemaphoreVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SemaphoreVk.cpp
@@ -22,7 +22,7 @@
 void SemaphoreVk::onDestroy(const gl::Context *context)
 {
     ContextVk *contextVk = vk::GetImpl(context);
-    contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mSemaphore);
+    contextVk->addGarbage(&mSemaphore);
 }
 
 angle::Result SemaphoreVk::importFd(gl::Context *context, gl::HandleType handleType, GLint fd)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
index 64e1f2e..81befda 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
@@ -143,7 +143,8 @@
 
     VkExtent3D extents = {std::max(static_cast<uint32_t>(width), 1u),
                           std::max(static_cast<uint32_t>(height), 1u), 1u};
-    ANGLE_TRY(image.init(displayVk, gl::TextureType::_2D, extents, vkFormat, samples, usage, 1, 1));
+    ANGLE_TRY(
+        image.init(displayVk, gl::TextureType::_2D, extents, vkFormat, samples, usage, 0, 0, 1, 1));
 
     VkMemoryPropertyFlags flags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
     ANGLE_TRY(image.initMemory(displayVk, renderer->getMemoryProperties(), flags));
@@ -162,21 +163,13 @@
 void OffscreenSurfaceVk::AttachmentImage::destroy(const egl::Display *display)
 {
     DisplayVk *displayVk = vk::GetImpl(display);
-
-    std::vector<vk::GarbageObjectBase> garbageObjects;
-    image.releaseImage(displayVk, &garbageObjects);
-    image.releaseStagingBuffer(displayVk, &garbageObjects);
+    VkDevice device      = displayVk->getDevice();
 
     // It should be safe to immediately destroy the backing images of a surface on surface
-    // destruction.
-    // If this assumption is broken, we could track the last submit fence for the last context that
-    // used this surface to garbage collect the surfaces.
-    for (vk::GarbageObjectBase &garbage : garbageObjects)
-    {
-        garbage.destroy(displayVk->getDevice());
-    }
-
-    imageView.destroy(displayVk->getDevice());
+    // destruction. If this assumption is incorrect, we could use the last submit serial
+    // to determine when to destroy the surface.
+    image.destroy(device);
+    imageView.destroy(device);
 }
 
 OffscreenSurfaceVk::OffscreenSurfaceVk(const egl::SurfaceState &surfaceState,
@@ -184,9 +177,9 @@
                                        EGLint height)
     : SurfaceVk(surfaceState), mWidth(width), mHeight(height)
 {
-    mColorRenderTarget.init(&mColorAttachment.image, &mColorAttachment.imageView, nullptr, 0, 0);
+    mColorRenderTarget.init(&mColorAttachment.image, &mColorAttachment.imageView, 0, 0);
     mDepthStencilRenderTarget.init(&mDepthStencilAttachment.image,
-                                   &mDepthStencilAttachment.imageView, nullptr, 0, 0);
+                                   &mDepthStencilAttachment.imageView, 0, 0);
 }
 
 OffscreenSurfaceVk::~OffscreenSurfaceVk() {}
@@ -415,8 +408,8 @@
 {
     // Initialize the color render target with the multisampled targets.  If not multisampled, the
     // render target will be updated to refer to a swapchain image on every acquire.
-    mColorRenderTarget.init(&mColorImageMS, &mColorImageViewMS, nullptr, 0, 0);
-    mDepthStencilRenderTarget.init(&mDepthStencilImage, &mDepthStencilImageView, nullptr, 0, 0);
+    mColorRenderTarget.init(&mColorImageMS, &mColorImageViewMS, 0, 0);
+    mDepthStencilRenderTarget.init(&mDepthStencilImage, &mDepthStencilImageView, 0, 0);
 }
 
 WindowSurfaceVk::~WindowSurfaceVk()
@@ -779,7 +772,7 @@
         const VkImageUsageFlags usage = kSurfaceVKColorImageUsageFlags;
 
         ANGLE_TRY(mColorImageMS.init(context, gl::TextureType::_2D, vkExtents, format, samples,
-                                     usage, 1, 1));
+                                     usage, 0, 0, 1, 1));
         ANGLE_TRY(mColorImageMS.initMemory(context, renderer->getMemoryProperties(),
                                            VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT));
 
@@ -822,7 +815,7 @@
         const VkImageUsageFlags dsUsage = kSurfaceVKDepthStencilImageUsageFlags;
 
         ANGLE_TRY(mDepthStencilImage.init(context, gl::TextureType::_2D, vkExtents, dsFormat,
-                                          samples, dsUsage, 1, 1));
+                                          samples, dsUsage, 0, 0, 1, 1));
         ANGLE_TRY(mDepthStencilImage.initMemory(context, renderer->getMemoryProperties(),
                                                 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT));
 
@@ -894,38 +887,36 @@
 
 void WindowSurfaceVk::releaseSwapchainImages(ContextVk *contextVk)
 {
+    RendererVk *renderer = contextVk->getRenderer();
+
     if (mDepthStencilImage.valid())
     {
-        Serial depthStencilSerial = mDepthStencilImage.getStoredQueueSerial();
-        mDepthStencilImage.releaseImage(contextVk);
-        mDepthStencilImage.releaseStagingBuffer(contextVk);
+        mDepthStencilImage.releaseImage(renderer);
+        mDepthStencilImage.releaseStagingBuffer(renderer);
 
         if (mDepthStencilImageView.valid())
         {
-            contextVk->releaseObject(depthStencilSerial, &mDepthStencilImageView);
+            contextVk->addGarbage(&mDepthStencilImageView);
         }
     }
 
     if (mColorImageMS.valid())
     {
-        Serial serial = mColorImageMS.getStoredQueueSerial();
-        mColorImageMS.releaseImage(contextVk);
-        mColorImageMS.releaseStagingBuffer(contextVk);
+        mColorImageMS.releaseImage(renderer);
+        mColorImageMS.releaseStagingBuffer(renderer);
 
-        contextVk->releaseObject(serial, &mColorImageViewMS);
-        contextVk->releaseObject(serial, &mFramebufferMS);
+        contextVk->addGarbage(&mColorImageViewMS);
+        contextVk->addGarbage(&mFramebufferMS);
     }
 
     for (SwapchainImage &swapchainImage : mSwapchainImages)
     {
-        Serial imageSerial = swapchainImage.image.getStoredQueueSerial();
-
         // We don't own the swapchain image handles, so we just remove our reference to it.
         swapchainImage.image.resetImageWeakReference();
         swapchainImage.image.destroy(contextVk->getDevice());
 
-        contextVk->releaseObject(imageSerial, &swapchainImage.imageView);
-        contextVk->releaseObject(imageSerial, &swapchainImage.framebuffer);
+        contextVk->addGarbage(&swapchainImage.imageView);
+        contextVk->addGarbage(&swapchainImage.framebuffer);
 
         // present history must have already been taken care of.
         for (ImagePresentHistory &presentHistory : swapchainImage.presentHistory)
@@ -940,49 +931,21 @@
 
 void WindowSurfaceVk::destroySwapChainImages(DisplayVk *displayVk)
 {
-    std::vector<vk::GarbageObjectBase> garbageObjects;
-    if (mDepthStencilImage.valid())
-    {
-        mDepthStencilImage.releaseImage(displayVk, &garbageObjects);
-        mDepthStencilImage.releaseStagingBuffer(displayVk, &garbageObjects);
-
-        if (mDepthStencilImageView.valid())
-        {
-            mDepthStencilImageView.dumpResources(&garbageObjects);
-        }
-    }
-
-    if (mColorImageMS.valid())
-    {
-        mColorImageMS.releaseImage(displayVk, &garbageObjects);
-        mColorImageMS.releaseImage(displayVk, &garbageObjects);
-
-        mColorImageViewMS.dumpResources(&garbageObjects);
-        mFramebufferMS.dumpResources(&garbageObjects);
-    }
-
     VkDevice device = displayVk->getDevice();
 
-    for (vk::GarbageObjectBase &garbage : garbageObjects)
-    {
-        garbage.destroy(device);
-    }
+    mDepthStencilImage.destroy(device);
+    mDepthStencilImageView.destroy(device);
+    mColorImageMS.destroy(device);
+    mColorImageViewMS.destroy(device);
+    mFramebufferMS.destroy(device);
 
     for (SwapchainImage &swapchainImage : mSwapchainImages)
     {
         // We don't own the swapchain image handles, so we just remove our reference to it.
         swapchainImage.image.resetImageWeakReference();
         swapchainImage.image.destroy(device);
-
-        if (swapchainImage.imageView.valid())
-        {
-            swapchainImage.imageView.destroy(device);
-        }
-
-        if (swapchainImage.framebuffer.valid())
-        {
-            swapchainImage.framebuffer.destroy(device);
-        }
+        swapchainImage.imageView.destroy(device);
+        swapchainImage.framebuffer.destroy(device);
 
         for (ImagePresentHistory &presentHistory : swapchainImage.presentHistory)
         {
@@ -1053,7 +1016,7 @@
                                    multisampledTransition);
 
         // Setup graph dependency between the swapchain image and the multisampled one.
-        image.image.addReadDependency(&mColorImageMS);
+        image.image.addReadDependency(contextVk, &mColorImageMS);
 
         VkImageResolve resolveRegion                = {};
         resolveRegion.srcSubresource.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;
@@ -1230,17 +1193,6 @@
 
     SwapchainImage &image = mSwapchainImages[mCurrentSwapchainImageIndex];
 
-    // This swap chain image is new, reset any dependency information it has.
-    //
-    // When the Vulkan backend is multithreading, different contexts can have very different current
-    // serials.  If a surface is rendered to by multiple contexts in different frames, the last
-    // context to write a particular swap chain image has no bearing on the current context writing
-    // to that image.
-    //
-    // Clear the image's queue serial because it's possible that it appears to be in the future to
-    // the next context that writes to the image.
-    image.image.resetQueueSerial();
-
     // Update RenderTarget pointers to this swapchain image if not multisampling.  Note: a possible
     // optimization is to defer the |vkAcquireNextImageKHR| call itself to |present()| if
     // multisampling, as the swapchain image is essentially unused until then.
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.cpp
index 3716e79..a872f4b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.cpp
@@ -17,32 +17,25 @@
 
 namespace rx
 {
-FenceSyncVk::FenceSyncVk() {}
-
-FenceSyncVk::~FenceSyncVk() {}
-
-void FenceSyncVk::onDestroy(ContextVk *contextVk)
+namespace vk
 {
-    if (mEvent.valid())
-    {
-        contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mEvent);
-    }
-
-    for (vk::Shared<vk::Fence> &fence : mFences)
-    {
-        fence.reset(contextVk->getDevice());
-    }
+SyncHelper::SyncHelper()
+{
+    mUse.init();
 }
 
-void FenceSyncVk::onDestroy(DisplayVk *display)
+SyncHelper::~SyncHelper()
 {
-    std::vector<vk::GarbageObjectBase> garbage;
-    mEvent.dumpResources(&garbage);
-
-    display->getRenderer()->addGarbage(std::move(mFences), std::move(garbage));
+    mUse.release();
 }
 
-angle::Result FenceSyncVk::initialize(ContextVk *contextVk)
+void SyncHelper::releaseToRenderer(RendererVk *renderer)
+{
+    renderer->collectGarbageAndReinit(&mUse, &mEvent);
+    mFence.reset(renderer->getDevice());
+}
+
+angle::Result SyncHelper::initialize(ContextVk *contextVk)
 {
     ASSERT(!mEvent.valid());
 
@@ -53,24 +46,24 @@
     eventCreateInfo.sType             = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO;
     eventCreateInfo.flags             = 0;
 
-    vk::DeviceScoped<vk::Event> event(device);
+    DeviceScoped<Event> event(device);
     ANGLE_VK_TRY(contextVk, event.get().init(device, eventCreateInfo));
-
-    vk::Shared<vk::Fence> fence;
-    ANGLE_TRY(contextVk->getNextSubmitFence(&fence));
+    ANGLE_TRY(contextVk->getNextSubmitFence(&mFence));
 
     mEvent = event.release();
-    mFences.emplace_back(std::move(fence));
 
-    contextVk->getCommandGraph()->setFenceSync(mEvent);
+    CommandGraph *commandGraph = contextVk->getCommandGraph();
+    commandGraph->setFenceSync(mEvent);
+    commandGraph->onResourceUse(mUse);
+
     return angle::Result::Continue;
 }
 
-angle::Result FenceSyncVk::clientWait(vk::Context *context,
-                                      ContextVk *contextVk,
-                                      bool flushCommands,
-                                      uint64_t timeout,
-                                      VkResult *outResult)
+angle::Result SyncHelper::clientWait(Context *context,
+                                     ContextVk *contextVk,
+                                     bool flushCommands,
+                                     uint64_t timeout,
+                                     VkResult *outResult)
 {
     RendererVk *renderer = context->getRenderer();
 
@@ -97,8 +90,8 @@
 
     // Wait on the fence that's expected to be signaled on the first vkQueueSubmit after
     // `initialize` was called. The first fence is the fence created to signal this sync.
-    ASSERT(!mFences.empty());
-    VkResult status = mFences[0].get().wait(renderer->getDevice(), timeout);
+    ASSERT(mFence.get().valid());
+    VkResult status = mFence.get().wait(renderer->getDevice(), timeout);
 
     // Check for errors, but don't consider timeout as such.
     if (status != VK_TIMEOUT)
@@ -110,21 +103,14 @@
     return angle::Result::Continue;
 }
 
-angle::Result FenceSyncVk::serverWait(vk::Context *context, ContextVk *contextVk)
+void SyncHelper::serverWait(ContextVk *contextVk)
 {
-    if (contextVk)
-    {
-        contextVk->getCommandGraph()->waitFenceSync(mEvent);
-
-        // Track fences from Contexts that use this sync for garbage collection.
-        vk::Shared<vk::Fence> nextSubmitFence;
-        ANGLE_TRY(contextVk->getNextSubmitFence(&nextSubmitFence));
-        mFences.emplace_back(std::move(nextSubmitFence));
-    }
-    return angle::Result::Continue;
+    CommandGraph *commandGraph = contextVk->getCommandGraph();
+    commandGraph->waitFenceSync(mEvent);
+    commandGraph->onResourceUse(mUse);
 }
 
-angle::Result FenceSyncVk::getStatus(vk::Context *context, bool *signaled)
+angle::Result SyncHelper::getStatus(Context *context, bool *signaled)
 {
     VkResult result = mEvent.getStatus(context->getDevice());
     if (result != VK_EVENT_SET && result != VK_EVENT_RESET)
@@ -134,6 +120,7 @@
     *signaled = result == VK_EVENT_SET;
     return angle::Result::Continue;
 }
+}  // namespace vk
 
 SyncVk::SyncVk() : SyncImpl() {}
 
@@ -141,7 +128,7 @@
 
 void SyncVk::onDestroy(const gl::Context *context)
 {
-    mFenceSync.onDestroy(vk::GetImpl(context));
+    mFenceSync.releaseToRenderer(vk::GetImpl(context)->getRenderer());
 }
 
 angle::Result SyncVk::set(const gl::Context *context, GLenum condition, GLbitfield flags)
@@ -194,7 +181,8 @@
     ASSERT(timeout == GL_TIMEOUT_IGNORED);
 
     ContextVk *contextVk = vk::GetImpl(context);
-    return mFenceSync.serverWait(contextVk, contextVk);
+    mFenceSync.serverWait(contextVk);
+    return angle::Result::Continue;
 }
 
 angle::Result SyncVk::getStatus(const gl::Context *context, GLint *outResult)
@@ -215,7 +203,7 @@
 
 void EGLSyncVk::onDestroy(const egl::Display *display)
 {
-    mFenceSync.onDestroy(vk::GetImpl(display));
+    mFenceSync.releaseToRenderer(vk::GetImpl(display)->getRenderer());
 }
 
 egl::Error EGLSyncVk::initialize(const egl::Display *display,
@@ -275,12 +263,14 @@
                                  const gl::Context *context,
                                  EGLint flags)
 {
+    // Server wait requires a valid bound context.
+    ASSERT(context);
+
+    // No flags are currently implemented.
     ASSERT(flags == 0);
-    ContextVk *contextVk = context ? vk::GetImpl(context) : nullptr;
-    if (mFenceSync.serverWait(vk::GetImpl(display), contextVk) == angle::Result::Stop)
-    {
-        return egl::Error(EGL_BAD_ALLOC);
-    }
+
+    ContextVk *contextVk = vk::GetImpl(context);
+    mFenceSync.serverWait(contextVk);
     return egl::NoError();
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.h
index 6cfef2c..0a97c11 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/SyncVk.h
@@ -12,8 +12,7 @@
 
 #include "libANGLE/renderer/EGLSyncImpl.h"
 #include "libANGLE/renderer/SyncImpl.h"
-
-#include "libANGLE/renderer/vulkan/vk_utils.h"
+#include "libANGLE/renderer/vulkan/CommandGraph.h"
 
 namespace egl
 {
@@ -22,34 +21,38 @@
 
 namespace rx
 {
+namespace vk
+{
 // The behaviors of SyncImpl and EGLSyncImpl as fence syncs (only supported type) are currently
 // identical for the Vulkan backend, and this class implements both interfaces.
-class FenceSyncVk
+class SyncHelper
 {
   public:
-    FenceSyncVk();
-    ~FenceSyncVk();
+    SyncHelper();
+    ~SyncHelper();
 
-    void onDestroy(ContextVk *contextVk);
-    void onDestroy(DisplayVk *display);
+    void releaseToRenderer(RendererVk *renderer);
 
     angle::Result initialize(ContextVk *contextVk);
-    angle::Result clientWait(vk::Context *context,
+    angle::Result clientWait(Context *context,
                              ContextVk *contextVk,
                              bool flushCommands,
                              uint64_t timeout,
                              VkResult *outResult);
-    angle::Result serverWait(vk::Context *context, ContextVk *contextVk);
-    angle::Result getStatus(vk::Context *context, bool *signaled);
+    void serverWait(ContextVk *contextVk);
+    angle::Result getStatus(Context *context, bool *signaled);
 
   private:
     // The vkEvent that's signaled on `init` and can be waited on in `serverWait`, or queried with
     // `getStatus`.
-    vk::Event mEvent;
-    // The first fence in the list is signaled once the CB including the `init` signal is executed.
-    // `clientWait` waits on this fence. The other fences are referenced to prevent deletion.
-    std::vector<vk::Shared<vk::Fence>> mFences;
+    Event mEvent;
+    // The fence is signaled once the CB including the `init` signal is executed.
+    // `clientWait` waits on this fence.
+    Shared<Fence> mFence;
+
+    SharedResourceUse mUse;
 };
+}  // namespace vk
 
 class SyncVk final : public SyncImpl
 {
@@ -70,7 +73,7 @@
     angle::Result getStatus(const gl::Context *context, GLint *outResult) override;
 
   private:
-    FenceSyncVk mFenceSync;
+    vk::SyncHelper mFenceSync;
 };
 
 class EGLSyncVk final : public EGLSyncImpl
@@ -97,7 +100,7 @@
     egl::Error dupNativeFenceFD(const egl::Display *display, EGLint *result) const override;
 
   private:
-    FenceSyncVk mFenceSync;
+    vk::SyncHelper mFenceSync;
 };
 }  // namespace rx
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.cpp
index df8d376..4dc09ce 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.cpp
@@ -72,6 +72,33 @@
     return image.getExtents().depth > 1 ? image.getExtents().depth : image.getLayerCount();
 }
 
+void GetRenderTargetLayerCountAndIndex(vk::ImageHelper *image,
+                                       const gl::ImageIndex &index,
+                                       GLuint *layerCount,
+                                       GLuint *layerIndex)
+{
+    switch (index.getType())
+    {
+        case gl::TextureType::CubeMap:
+            *layerIndex = index.cubeMapFaceIndex();
+            *layerCount = gl::kCubeFaceCount;
+            return;
+
+        case gl::TextureType::_3D:
+            *layerIndex = index.hasLayer() ? index.getLayerIndex() : 0;
+            *layerCount = image->getExtents().depth;
+            return;
+
+        case gl::TextureType::_2DArray:
+            *layerIndex = index.hasLayer() ? index.getLayerIndex() : 0;
+            *layerCount = image->getLayerCount();
+            return;
+
+        default:
+            UNREACHABLE();
+    }
+}
+
 bool HasBothDepthAndStencilAspects(VkImageAspectFlags aspectFlags)
 {
     constexpr VkImageAspectFlags kDepthStencilAspects =
@@ -80,67 +107,6 @@
 }
 }  // anonymous namespace
 
-TextureVk::TextureVkViews::TextureVkViews() {}
-TextureVk::TextureVkViews::~TextureVkViews() {}
-
-void TextureVk::TextureVkViews::release(ContextVk *contextVk, Serial currentSerial)
-{
-    contextVk->releaseObject(currentSerial, &mDrawBaseLevelImageView);
-    contextVk->releaseObject(currentSerial, &mReadBaseLevelImageView);
-    contextVk->releaseObject(currentSerial, &mReadMipmapImageView);
-    contextVk->releaseObject(currentSerial, &mFetchBaseLevelImageView);
-    contextVk->releaseObject(currentSerial, &mFetchMipmapImageView);
-}
-
-angle::Result TextureVk::generateMipmapLevelsWithCPU(ContextVk *contextVk,
-                                                     const angle::Format &sourceFormat,
-                                                     GLuint layer,
-                                                     GLuint firstMipLevel,
-                                                     GLuint maxMipLevel,
-                                                     const size_t sourceWidth,
-                                                     const size_t sourceHeight,
-                                                     const size_t sourceRowPitch,
-                                                     uint8_t *sourceData)
-{
-    size_t previousLevelWidth    = sourceWidth;
-    size_t previousLevelHeight   = sourceHeight;
-    uint8_t *previousLevelData   = sourceData;
-    size_t previousLevelRowPitch = sourceRowPitch;
-
-    for (GLuint currentMipLevel = firstMipLevel; currentMipLevel <= maxMipLevel; currentMipLevel++)
-    {
-        // Compute next level width and height.
-        size_t mipWidth  = std::max<size_t>(1, previousLevelWidth >> 1);
-        size_t mipHeight = std::max<size_t>(1, previousLevelHeight >> 1);
-
-        // With the width and height of the next mip, we can allocate the next buffer we need.
-        uint8_t *destData   = nullptr;
-        size_t destRowPitch = mipWidth * sourceFormat.pixelBytes;
-
-        size_t mipAllocationSize = destRowPitch * mipHeight;
-        gl::Extents mipLevelExtents(static_cast<int>(mipWidth), static_cast<int>(mipHeight), 1);
-
-        ANGLE_TRY(mImage->stageSubresourceUpdateAndGetData(
-            contextVk, mipAllocationSize,
-            gl::ImageIndex::MakeFromType(mState.getType(), currentMipLevel, layer), mipLevelExtents,
-            gl::Offset(), &destData));
-        onStagingBufferChange();
-
-        // Generate the mipmap into that new buffer
-        sourceFormat.mipGenerationFunction(previousLevelWidth, previousLevelHeight, 1,
-                                           previousLevelData, previousLevelRowPitch, 0, destData,
-                                           destRowPitch, 0);
-
-        // Swap for the next iteration
-        previousLevelWidth    = mipWidth;
-        previousLevelHeight   = mipHeight;
-        previousLevelData     = destData;
-        previousLevelRowPitch = destRowPitch;
-    }
-
-    return angle::Result::Continue;
-}
-
 // TextureVk implementation.
 TextureVk::TextureVk(const gl::TextureState &state, RendererVk *renderer)
     : TextureImpl(state),
@@ -159,7 +125,7 @@
     ContextVk *contextVk = vk::GetImpl(context);
 
     releaseAndDeleteImage(contextVk);
-    contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mSampler);
+    contextVk->addGarbage(&mSampler);
 }
 
 angle::Result TextureVk::setImage(const gl::Context *context,
@@ -445,7 +411,7 @@
 
         return copySubImageImplWithDraw(contextVk, offsetImageIndex, modifiedDestOffset, destFormat,
                                         0, clippedSourceArea, isViewportFlipY, false, false, false,
-                                        &colorReadRT->getImage(), colorReadRT->getFetchImageView());
+                                        &colorReadRT->getImage(), colorReadRT->getReadImageView());
     }
 
     // Do a CPU readback that does the conversion, and then stage the change to the pixel buffer.
@@ -505,7 +471,8 @@
 
     // Read back the requested region of the source texture
     uint8_t *sourceData = nullptr;
-    ANGLE_TRY(source->copyImageDataToBuffer(contextVk, sourceLevel, 1, sourceArea, &sourceData));
+    ANGLE_TRY(source->copyImageDataToBufferAndGetData(contextVk, sourceLevel, 1, sourceArea,
+                                                      &sourceData));
 
     const angle::Format &sourceTextureFormat = sourceVkFormat.imageFormat();
     const angle::Format &destTextureFormat   = destVkFormat.imageFormat();
@@ -593,7 +560,7 @@
                              commandBuffer);
 
         // Source's layout change should happen before the copy
-        srcImage->addReadDependency(mImage);
+        srcImage->addReadDependency(contextVk, mImage);
 
         VkImageSubresourceLayers destSubresource = srcSubresource;
         destSubresource.mipLevel                 = level;
@@ -628,7 +595,7 @@
                                    commandBuffer);
 
         // Source's layout change should happen before the copy
-        srcImage->addReadDependency(stagingImage.get());
+        srcImage->addReadDependency(contextVk, stagingImage.get());
 
         VkImageSubresourceLayers destSubresource = srcSubresource;
         destSubresource.mipLevel                 = 0;
@@ -660,9 +627,8 @@
                                                   vk::ImageHelper *srcImage,
                                                   const vk::ImageView *srcView)
 {
-    RendererVk *renderer      = contextVk->getRenderer();
-    UtilsVk &utilsVk          = contextVk->getUtils();
-    Serial currentQueueSerial = contextVk->getCurrentQueueSerial();
+    RendererVk *renderer = contextVk->getRenderer();
+    UtilsVk &utilsVk     = contextVk->getUtils();
 
     UtilsVk::CopyImageParameters params;
     params.srcOffset[0]        = sourceArea.x;
@@ -731,7 +697,7 @@
 
             // Queue the resource for cleanup as soon as the copy above is finished.  There's no
             // need to keep it around.
-            contextVk->releaseObject(currentQueueSerial, &stagingView);
+            contextVk->addGarbage(&stagingView);
         }
 
         // Stage the copy for when the image storage is actually created.
@@ -789,7 +755,7 @@
 
     const vk::Format &format = renderer->getFormat(internalFormat);
 
-    setImageHelper(contextVk, new vk::ImageHelper(), mState.getType(), format, 0, 0, true);
+    setImageHelper(contextVk, new vk::ImageHelper(), mState.getType(), format, 0, 0, 0, true);
 
     ANGLE_TRY(
         memoryObjectVk->createImage(context, type, levels, internalFormat, size, offset, mImage));
@@ -826,7 +792,8 @@
 
     ImageVk *imageVk = vk::GetImpl(image);
     setImageHelper(contextVk, imageVk->getImage(), imageVk->getImageTextureType(), format,
-                   imageVk->getImageLevel(), imageVk->getImageLayer(), false);
+                   imageVk->getImageLevel(), imageVk->getImageLayer(),
+                   mState.getEffectiveBaseLevel(), false);
 
     ASSERT(type != gl::TextureType::CubeMap);
     ANGLE_TRY(initImageViews(contextVk, format, image->getFormat().info->sized, 1, 1));
@@ -898,7 +865,7 @@
 {
     if (mImage == nullptr)
     {
-        setImageHelper(contextVk, new vk::ImageHelper(), mState.getType(), format, 0, 0, true);
+        setImageHelper(contextVk, new vk::ImageHelper(), mState.getType(), format, 0, 0, 0, true);
     }
     else
     {
@@ -914,6 +881,7 @@
                                const vk::Format &format,
                                uint32_t imageLevelOffset,
                                uint32_t imageLayerOffset,
+                               uint32_t imageBaseLevel,
                                bool selfOwned)
 {
     ASSERT(mImage == nullptr);
@@ -926,13 +894,10 @@
     mImage->initStagingBuffer(contextVk->getRenderer(), format, vk::kStagingBufferFlags,
                               mStagingBufferInitialSize);
 
-    mRenderTarget.init(mImage, &mDefaultViews.mDrawBaseLevelImageView,
-                       &mDefaultViews.mFetchBaseLevelImageView, getNativeImageLevel(0),
-                       getNativeImageLayer(0));
+    mRenderTarget.init(mImage, &mDrawImageView, getNativeImageLevel(0), getNativeImageLayer(0));
 
     // Force re-creation of layered render targets next time they are needed
-    mCubeMapRenderTargets.clear();
-    m3DRenderTargets.clear();
+    mLayerRenderTargets.clear();
 
     mSerial = contextVk->generateTextureSerial();
 }
@@ -982,53 +947,73 @@
     return angle::Result::Continue;
 }
 
-angle::Result TextureVk::copyImageDataToBuffer(ContextVk *contextVk,
-                                               size_t sourceLevel,
-                                               uint32_t layerCount,
-                                               const gl::Rectangle &sourceArea,
-                                               uint8_t **outDataPtr)
+angle::Result TextureVk::copyImageDataToBufferAndGetData(ContextVk *contextVk,
+                                                         size_t sourceLevel,
+                                                         uint32_t layerCount,
+                                                         const gl::Rectangle &sourceArea,
+                                                         uint8_t **outDataPtr)
 {
-    ANGLE_TRACE_EVENT0("gpu.angle", "TextureVk::copyImageDataToBuffer");
+    ANGLE_TRACE_EVENT0("gpu.angle", "TextureVk::copyImageDataToBufferAndGetData");
+
     // Make sure the source is initialized and it's images are flushed.
     ANGLE_TRY(ensureImageInitialized(contextVk));
 
+    gl::Box area(0, 0, 0, sourceArea.width, sourceArea.height, 1);
+
+    vk::BufferHelper *copyBuffer  = nullptr;
+    VkDeviceSize sourceCopyOffset = 0;
+
+    ANGLE_TRY(copyImageDataToBuffer(contextVk, sourceLevel, layerCount, 0, area, &copyBuffer,
+                                    &sourceCopyOffset, outDataPtr));
+
+    // Explicitly finish. If new use cases arise where we don't want to block we can change this.
+    ANGLE_TRY(contextVk->finishImpl());
+
+    return angle::Result::Continue;
+}
+
+angle::Result TextureVk::copyImageDataToBuffer(ContextVk *contextVk,
+                                               size_t sourceLevel,
+                                               uint32_t layerCount,
+                                               uint32_t baseLayer,
+                                               const gl::Box &sourceArea,
+                                               vk::BufferHelper **bufferOut,
+                                               VkDeviceSize *bufferOffsetOut,
+                                               uint8_t **outDataPtr)
+{
+    ANGLE_TRACE_EVENT0("gpu.angle", "TextureVk::copyImageDataToBuffer");
+
     const angle::Format &imageFormat = getImage().getFormat().imageFormat();
-    size_t sourceCopyAllocationSize =
-        sourceArea.width * sourceArea.height * imageFormat.pixelBytes * layerCount;
+    size_t sourceCopyAllocationSize  = sourceArea.width * sourceArea.height * sourceArea.depth *
+                                      imageFormat.pixelBytes * layerCount;
 
     vk::CommandBuffer *commandBuffer = nullptr;
     ANGLE_TRY(mImage->recordCommands(contextVk, &commandBuffer));
 
-    // Requirement of the copyImageToBuffer, the source image must be in SRC_OPTIMAL layout.
+    // Transition the image to readable layout
     mImage->changeLayout(VK_IMAGE_ASPECT_COLOR_BIT, vk::ImageLayout::TransferSrc, commandBuffer);
 
-    // Allocate enough memory to copy the sourceArea region of the source texture into its pixel
-    // buffer.
-    VkBuffer copyBufferHandle     = VK_NULL_HANDLE;
-    VkDeviceSize sourceCopyOffset = 0;
+    // Allocate staging buffer data
     ANGLE_TRY(mImage->allocateStagingMemory(contextVk, sourceCopyAllocationSize, outDataPtr,
-                                            &copyBufferHandle, &sourceCopyOffset, nullptr));
+                                            bufferOut, bufferOffsetOut, nullptr));
 
     VkBufferImageCopy region               = {};
-    region.bufferOffset                    = sourceCopyOffset;
+    region.bufferOffset                    = *bufferOffsetOut;
     region.bufferRowLength                 = 0;
     region.bufferImageHeight               = 0;
     region.imageExtent.width               = sourceArea.width;
     region.imageExtent.height              = sourceArea.height;
-    region.imageExtent.depth               = 1;
+    region.imageExtent.depth               = sourceArea.depth;
     region.imageOffset.x                   = sourceArea.x;
     region.imageOffset.y                   = sourceArea.y;
-    region.imageOffset.z                   = 0;
+    region.imageOffset.z                   = sourceArea.z;
     region.imageSubresource.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;
-    region.imageSubresource.baseArrayLayer = 0;
+    region.imageSubresource.baseArrayLayer = baseLayer;
     region.imageSubresource.layerCount     = layerCount;
     region.imageSubresource.mipLevel       = static_cast<uint32_t>(sourceLevel);
 
     commandBuffer->copyImageToBuffer(mImage->getImage(), mImage->getCurrentLayout(),
-                                     copyBufferHandle, 1, &region);
-
-    // Explicitly finish. If new use cases arise where we don't want to block we can change this.
-    ANGLE_TRY(contextVk->finishImpl());
+                                     (*bufferOut)->getBuffer().getHandle(), 1, &region);
 
     return angle::Result::Continue;
 }
@@ -1042,8 +1027,9 @@
 
     uint8_t *imageData = nullptr;
     gl::Rectangle imageArea(0, 0, baseLevelExtents.width, baseLevelExtents.height);
-    ANGLE_TRY(copyImageDataToBuffer(contextVk, mState.getEffectiveBaseLevel(), imageLayerCount,
-                                    imageArea, &imageData));
+
+    ANGLE_TRY(copyImageDataToBufferAndGetData(contextVk, mState.getEffectiveBaseLevel(),
+                                              imageLayerCount, imageArea, &imageData));
 
     const angle::Format &angleFormat = mImage->getFormat().imageFormat();
     GLuint sourceRowPitch            = baseLevelExtents.width * angleFormat.pixelBytes;
@@ -1096,7 +1082,8 @@
     if (renderer->hasImageFormatFeatureBits(mImage->getFormat().vkImageFormat, kBlitFeatureFlags))
     {
         ANGLE_TRY(ensureImageInitialized(contextVk));
-        ANGLE_TRY(mImage->generateMipmapsWithBlit(contextVk, mState.getMipmapMaxLevel()));
+        ANGLE_TRY(mImage->generateMipmapsWithBlit(
+            contextVk, mState.getMipmapMaxLevel() - mState.getEffectiveBaseLevel()));
     }
     else
     {
@@ -1108,8 +1095,118 @@
 
 angle::Result TextureVk::setBaseLevel(const gl::Context *context, GLuint baseLevel)
 {
-    ANGLE_VK_UNREACHABLE(vk::GetImpl(context));
-    return angle::Result::Stop;
+    return angle::Result::Continue;
+}
+
+angle::Result TextureVk::changeLevels(ContextVk *contextVk, GLuint baseLevel, GLuint maxLevel)
+{
+    if (!mImage)
+    {
+        return angle::Result::Continue;
+    }
+
+    // Track the previous levels for use in update loop below
+    uint32_t previousBaseLevel = mImage->getBaseLevel();
+
+    bool baseLevelChanged = baseLevel != previousBaseLevel;
+    bool maxLevelChanged  = (mImage->getLevelCount() + previousBaseLevel) != (maxLevel + 1);
+
+    if (!(baseLevelChanged || maxLevelChanged))
+    {
+        // This scenario is a noop, most likely maxLevel has been lowered to a level that already
+        // reflects the current state of the image
+        return angle::Result::Continue;
+    }
+
+    if (!mImage->valid())
+    {
+        // Track the levels in our ImageHelper
+        mImage->setBaseAndMaxLevels(baseLevel, maxLevel);
+
+        // No further work to do, let staged updates handle the new levels
+        return angle::Result::Continue;
+    }
+
+    // If we get here, we already have a valid image and it needs to be recreated
+    // to reflect new base or max levels.
+
+    // First, flush any pending updates so we have good data in the existing vkImage
+    vk::CommandBuffer *commandBuffer = nullptr;
+    ANGLE_TRY(mImage->recordCommands(contextVk, &commandBuffer));
+    ANGLE_TRY(mImage->flushStagedUpdates(contextVk, getNativeImageLevel(0), mImage->getLevelCount(),
+                                         getNativeImageLayer(0), mImage->getLayerCount(),
+                                         commandBuffer));
+
+    // After flushing, track the new levels (they are used in the flush, hence the wait)
+    mImage->setBaseAndMaxLevels(baseLevel, maxLevel);
+
+    // Next, back up any data we need to preserve by staging it as updates to the new image.
+
+    // Stage updates for all levels in the GL texture, while preserving the data in the vkImage.
+    // This ensures we propagate all the current image data, even as max level moves around.
+    uint32_t updateCount =
+        std::max<GLuint>(mState.getMipmapMaxLevel() + 1, mImage->getLevelCount());
+
+    // The staged updates won't be applied until the image has the requisite mip levels
+    for (uint32_t layer = 0; layer < mImage->getLayerCount(); layer++)
+    {
+        for (uint32_t level = 0; level < updateCount; level++)
+        {
+            if (mImage->isUpdateStaged(level, layer))
+            {
+                // If there is still an update staged for the surface at the designated
+                // layer/level, we don't need to propagate any data from this image.
+                // This can happen for original texture levels that have never fit into
+                // the vkImage due to base/max level, and for vkImage data that has been
+                // staged by previous calls to changeLevels that didn't fit into the
+                // new vkImage.
+                continue;
+            }
+
+            // Pull data from the current image and stage it as an update for the new image
+
+            // First we populate the staging buffer with current level data
+            const gl::ImageDesc &desc =
+                mState.getImageDesc(gl::TextureTypeToTarget(mState.getType(), layer), level);
+            const gl::Extents &extents     = desc.size;
+            const gl::InternalFormat &info = *desc.format.info;
+
+            // We need to adjust the source Vulkan level to reflect the previous base level.
+            // vk level 0 previously aligned with whatever the base level was.
+            uint32_t srcLevelVK = baseLevelChanged ? level - previousBaseLevel : level;
+            ASSERT(srcLevelVK <= mImage->getLevelCount());
+
+            // Adjust offset and depth based on our knowledge of image type here
+            gl::Box area(0, 0, 0, extents.width, extents.height, extents.depth);
+            if (gl::IsArrayTextureType(mState.getType()))
+            {
+                area.z     = 0;
+                area.depth = 1;
+            }
+
+            // Now copy from the image to the staging buffer
+            vk::BufferHelper *stagingBuffer  = nullptr;
+            VkDeviceSize stagingBufferOffset = 0;
+            ANGLE_TRY(copyImageDataToBuffer(contextVk, srcLevelVK, 1, layer, area, &stagingBuffer,
+                                            &stagingBufferOffset, nullptr));
+
+            // Stage an update to the new image that we will populate with existing mip levels
+            // We're providing the buffer handle and offset to use, since we *just* populated it
+            size_t bufferSize = extents.width * extents.height * extents.depth * info.pixelBytes;
+            ANGLE_TRY(mImage->stageSubresourceUpdateFromBuffer(contextVk, bufferSize, level, layer,
+                                                               1, extents, gl::Offset(),
+                                                               stagingBuffer, stagingBufferOffset));
+        }
+    }
+
+    // Inform the front end that we've updated the staging buffer
+    onStagingBufferChange();
+
+    // Now that we've staged all the updates, release the current image so that it will be
+    // recreated with the correct number of mip levels, base level, and max level.
+    releaseImage(contextVk);
+
+    return angle::Result::Continue;
 }
 
 angle::Result TextureVk::bindTexImage(const gl::Context *context, egl::Surface *surface)
@@ -1125,7 +1222,7 @@
     // eglBindTexImage can only be called with pbuffer (offscreen) surfaces
     OffscreenSurfaceVk *offscreenSurface = GetImplAs<OffscreenSurfaceVk>(surface);
     setImageHelper(contextVk, offscreenSurface->getColorAttachmentImage(), mState.getType(), format,
-                   surface->getMipmapLevel(), 0, false);
+                   surface->getMipmapLevel(), 0, mState.getEffectiveBaseLevel(), false);
 
     ASSERT(mImage->getLayerCount() == 1);
     gl::Format glFormat(internalFormat);
@@ -1153,19 +1250,21 @@
     ContextVk *contextVk = vk::GetImpl(context);
     ANGLE_TRY(ensureImageInitialized(contextVk));
 
+    GLuint layerIndex = 0, layerCount = 0;
+
     switch (imageIndex.getType())
     {
         case gl::TextureType::_2D:
             *rtOut = &mRenderTarget;
             break;
+        case gl::TextureType::CubeMap:
         case gl::TextureType::_2DArray:
         case gl::TextureType::_3D:
-            ANGLE_TRY(init3DRenderTargets(contextVk));
-            *rtOut = &m3DRenderTargets[imageIndex.getLayerIndex()];
-            break;
-        case gl::TextureType::CubeMap:
-            ANGLE_TRY(initCubeMapRenderTargets(contextVk));
-            *rtOut = &mCubeMapRenderTargets[imageIndex.cubeMapFaceIndex()];
+            // Special handling required for different types, grab the count and index
+            GetRenderTargetLayerCountAndIndex(mImage, imageIndex, &layerCount, &layerIndex);
+
+            ANGLE_TRY(initLayerRenderTargets(contextVk, layerCount));
+            *rtOut = &mLayerRenderTargets[layerIndex];
             break;
         default:
             UNREACHABLE();
@@ -1178,7 +1277,7 @@
 {
     const gl::ImageDesc &baseLevelDesc  = mState.getBaseLevelDesc();
     const gl::Extents &baseLevelExtents = baseLevelDesc.size;
-    const uint32_t levelCount           = getLevelCount();
+    const uint32_t levelCount           = getLevelCount() - mState.getEffectiveBaseLevel();
 
     const vk::Format &format =
         contextVk->getRenderer()->getFormat(baseLevelDesc.format.info->sizedInternalFormat);
@@ -1211,69 +1310,20 @@
                                       commandBuffer);
 }
 
-angle::Result TextureVk::init3DRenderTargets(ContextVk *contextVk)
+angle::Result TextureVk::initLayerRenderTargets(ContextVk *contextVk, GLuint layerCount)
 {
     // Lazy init. Check if already initialized.
-    if (!m3DRenderTargets.empty())
+    if (!mLayerRenderTargets.empty())
         return angle::Result::Continue;
 
-    uint32_t layerCount = GetImageLayerCountForView(*mImage);
-    const gl::ImageDesc &baseLevelDesc = mState.getBaseLevelDesc();
-
-    mLayerFetchImageView.resize(layerCount);
-    m3DRenderTargets.resize(layerCount);
+    mLayerRenderTargets.resize(layerCount);
 
     for (uint32_t layerIndex = 0; layerIndex < layerCount; ++layerIndex)
     {
         const vk::ImageView *drawView;
         ANGLE_TRY(getLayerLevelDrawImageView(contextVk, layerIndex, 0, &drawView));
-
-        // Users of the render target expect the views to directly view the desired layer, so we
-        // need create a fetch view for each layer as well.
-        gl::SwizzleState mappedSwizzle;
-        MapSwizzleState(contextVk, mImage->getFormat(), baseLevelDesc.format.info->sized,
-                        mState.getSwizzleState(), &mappedSwizzle);
-        gl::TextureType arrayType = vk::Get2DTextureType(layerCount, mImage->getSamples());
-        ANGLE_TRY(mImage->initLayerImageView(contextVk, arrayType, mImage->getAspectFlags(),
-                                             mappedSwizzle, &mLayerFetchImageView[layerIndex],
-                                             getNativeImageLevel(0), 1,
-                                             getNativeImageLayer(layerIndex), 1));
-
-        m3DRenderTargets[layerIndex].init(mImage, drawView, &mLayerFetchImageView[layerIndex],
-                                          getNativeImageLevel(0), getNativeImageLayer(layerIndex));
-    }
-    return angle::Result::Continue;
-}
-
-angle::Result TextureVk::initCubeMapRenderTargets(ContextVk *contextVk)
-{
-    // Lazy init. Check if already initialized.
-    if (!mCubeMapRenderTargets.empty())
-        return angle::Result::Continue;
-
-    const gl::ImageDesc &baseLevelDesc = mState.getBaseLevelDesc();
-
-    mLayerFetchImageView.resize(gl::kCubeFaceCount);
-    mCubeMapRenderTargets.resize(gl::kCubeFaceCount);
-    for (uint32_t cubeMapFaceIndex = 0; cubeMapFaceIndex < gl::kCubeFaceCount; ++cubeMapFaceIndex)
-    {
-        const vk::ImageView *drawView;
-        ANGLE_TRY(getLayerLevelDrawImageView(contextVk, cubeMapFaceIndex, 0, &drawView));
-
-        // Users of the render target expect the views to directly view the desired layer, so we
-        // need create a fetch view for each layer as well.
-        gl::SwizzleState mappedSwizzle;
-        MapSwizzleState(contextVk, mImage->getFormat(), baseLevelDesc.format.info->sized,
-                        mState.getSwizzleState(), &mappedSwizzle);
-        gl::TextureType arrayType = vk::Get2DTextureType(gl::kCubeFaceCount, mImage->getSamples());
-        ANGLE_TRY(mImage->initLayerImageView(contextVk, arrayType, mImage->getAspectFlags(),
-                                             mappedSwizzle, &mLayerFetchImageView[cubeMapFaceIndex],
-                                             getNativeImageLevel(0), 1,
-                                             getNativeImageLayer(cubeMapFaceIndex), 1));
-
-        mCubeMapRenderTargets[cubeMapFaceIndex].init(
-            mImage, drawView, &mLayerFetchImageView[cubeMapFaceIndex], getNativeImageLevel(0),
-            getNativeImageLayer(cubeMapFaceIndex));
+        mLayerRenderTargets[layerIndex].init(mImage, drawView, getNativeImageLevel(0),
+                                             getNativeImageLayer(layerIndex));
     }
     return angle::Result::Continue;
 }
@@ -1283,6 +1333,14 @@
 {
     ContextVk *contextVk = vk::GetImpl(context);
 
+    // Set base and max level before initializing the image
+    if (dirtyBits.test(gl::Texture::DIRTY_BIT_MAX_LEVEL) ||
+        dirtyBits.test(gl::Texture::DIRTY_BIT_BASE_LEVEL))
+    {
+        ANGLE_TRY(
+            changeLevels(contextVk, mState.getEffectiveBaseLevel(), mState.getEffectiveMaxLevel()));
+    }
+
     // Initialize the image storage and flush the pixel buffer.
     ANGLE_TRY(ensureImageInitialized(contextVk));
 
@@ -1294,7 +1352,7 @@
     RendererVk *renderer = contextVk->getRenderer();
     if (mSampler.valid())
     {
-        contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mSampler);
+        contextVk->addGarbage(&mSampler);
     }
 
     if (dirtyBits.test(gl::Texture::DIRTY_BIT_SWIZZLE_RED) ||
@@ -1354,6 +1412,15 @@
     samplerInfo.borderColor             = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK;
     samplerInfo.unnormalizedCoordinates = VK_FALSE;
 
+    if (!gl::IsMipmapFiltered(samplerState))
+    {
+        // Per the Vulkan spec, GL_NEAREST and GL_LINEAR do not map directly to Vulkan, so
+        // they must be emulated (See "Mapping of OpenGL to Vulkan filter modes")
+        samplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST;
+        samplerInfo.minLod     = 0.0f;
+        samplerInfo.maxLod     = 0.25f;
+    }
+
     ANGLE_VK_TRY(contextVk, mSampler.init(contextVk->getDevice(), samplerInfo));
 
     // Regenerate the serial on a sampler change.
@@ -1395,46 +1462,25 @@
     releaseAndDeleteImage(contextVk);
 }
 
-const TextureVk::TextureVkViews *TextureVk::getTextureViews() const
-{
-    VkImageAspectFlags aspectFlags = mImage->getAspectFlags();
-    if (HasBothDepthAndStencilAspects(aspectFlags) && mState.isStencilMode())
-    {
-        return &mStencilViews;
-    }
-    return &mDefaultViews;
-}
-
 const vk::ImageView &TextureVk::getReadImageView() const
 {
     ASSERT(mImage->valid());
-    const TextureVkViews *activeView = getTextureViews();
 
-    if (!gl::IsMipmapFiltered(mState.getSamplerState()))
+    if (mState.isStencilMode() && mStencilReadImageView.valid())
     {
-        return activeView->mReadBaseLevelImageView;
+        return mStencilReadImageView;
     }
 
-    return activeView->mReadMipmapImageView;
+    return mReadImageView;
 }
 
 const vk::ImageView &TextureVk::getFetchImageView() const
 {
-
-    if (!mDefaultViews.mFetchBaseLevelImageView.valid())
-    {
-        return getReadImageView();
-    }
-
     ASSERT(mImage->valid());
-    const TextureVkViews *activeView = getTextureViews();
 
-    if (!gl::IsMipmapFiltered(mState.getSamplerState()))
-    {
-        return activeView->mFetchBaseLevelImageView;
-    }
-
-    return activeView->mFetchMipmapImageView;
+    // We don't currently support fetch for depth/stencil cube map textures.
+    ASSERT(!mStencilReadImageView.valid() || !mFetchImageView.valid());
+    return (mFetchImageView.valid() ? mFetchImageView : mReadImageView);
 }
 
 vk::ImageView *TextureVk::getLayerLevelImageViewImpl(vk::LayerLevelImageViewVector *imageViews,
@@ -1480,12 +1526,10 @@
         return angle::Result::Continue;
     }
 
-    uint32_t layerCount = GetImageLayerCountForView(*mImage);
-
     // Lazily allocate the image view itself.
     // Note that these views are specifically made to be used as color attachments, and therefore
     // don't have swizzle.
-    gl::TextureType viewType = vk::Get2DTextureType(layerCount, mImage->getSamples());
+    gl::TextureType viewType = vk::Get2DTextureType(1, mImage->getSamples());
     return mImage->initLayerImageView(context, viewType, mImage->getAspectFlags(),
                                       gl::SwizzleState(), imageView,
                                       getNativeImageLevel(static_cast<uint32_t>(level)), 1,
@@ -1516,12 +1560,7 @@
     }
     else
     {
-        // Create a view of the selected layer.
-        imageView = getLayerLevelImageViewImpl(&mLayerLevelStorageImageViews, singleLayer, level);
-
-        // If viewing a single layer, the image is always 2D.  Note that GLES doesn't support
-        // multisampled storage images.
-        viewType = gl::TextureType::_2D;
+        return getLayerLevelDrawImageView(contextVk, singleLayer, level, imageViewOut);
     }
 
     *imageViewOut = imageView;
@@ -1578,6 +1617,7 @@
     gl_vk::GetExtentsAndLayerCount(mState.getType(), extents, &vkExtent, &layerCount);
 
     ANGLE_TRY(mImage->init(contextVk, mState.getType(), vkExtent, format, 1, imageUsageFlags,
+                           mState.getEffectiveBaseLevel(), mState.getEffectiveMaxLevel(),
                            levelCount, layerCount));
 
     const VkMemoryPropertyFlags flags = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
@@ -1605,25 +1645,35 @@
     return angle::Result::Continue;
 }
 
-angle::Result TextureVk::initImageViewImpl(ContextVk *contextVk,
-                                           const vk::Format &format,
-                                           uint32_t levelCount,
-                                           uint32_t layerCount,
-                                           TextureVkViews *view,
-                                           VkImageAspectFlags aspectFlags,
-                                           gl::SwizzleState mappedSwizzle)
+angle::Result TextureVk::initImageViews(ContextVk *contextVk,
+                                        const vk::Format &format,
+                                        const bool sized,
+                                        uint32_t levelCount,
+                                        uint32_t layerCount)
 {
-    // TODO: Support non-zero base level for ES 3.0 by passing it to getNativeImageLevel.
-    // http://anglebug.com/3148
     uint32_t baseLevel = getNativeImageLevel(0);
     uint32_t baseLayer = getNativeImageLayer(0);
 
-    ANGLE_TRY(mImage->initLayerImageView(contextVk, mState.getType(), aspectFlags, mappedSwizzle,
-                                         &view->mReadMipmapImageView, baseLevel, levelCount,
-                                         baseLayer, layerCount));
-    ANGLE_TRY(mImage->initLayerImageView(contextVk, mState.getType(), aspectFlags, mappedSwizzle,
-                                         &view->mReadBaseLevelImageView, baseLevel, 1, baseLayer,
-                                         layerCount));
+    gl::SwizzleState mappedSwizzle;
+    MapSwizzleState(contextVk, format, sized, mState.getSwizzleState(), &mappedSwizzle);
+
+    const VkImageAspectFlags aspectFlags = vk::GetFormatAspectFlags(format.angleFormat());
+    if (HasBothDepthAndStencilAspects(aspectFlags))
+    {
+        ANGLE_TRY(mImage->initLayerImageView(contextVk, mState.getType(), VK_IMAGE_ASPECT_DEPTH_BIT,
+                                             mappedSwizzle, &mReadImageView, baseLevel, levelCount,
+                                             baseLayer, layerCount));
+        ANGLE_TRY(mImage->initLayerImageView(
+            contextVk, mState.getType(), VK_IMAGE_ASPECT_STENCIL_BIT, mappedSwizzle,
+            &mStencilReadImageView, baseLevel, levelCount, baseLayer, layerCount));
+    }
+    else
+    {
+        ANGLE_TRY(mImage->initLayerImageView(contextVk, mState.getType(), aspectFlags,
+                                             mappedSwizzle, &mReadImageView, baseLevel, levelCount,
+                                             baseLayer, layerCount));
+    }
+
     if (mState.getType() == gl::TextureType::CubeMap ||
         mState.getType() == gl::TextureType::_2DArray ||
         mState.getType() == gl::TextureType::_2DMultisampleArray)
@@ -1631,53 +1681,27 @@
         gl::TextureType arrayType = vk::Get2DTextureType(layerCount, mImage->getSamples());
 
         ANGLE_TRY(mImage->initLayerImageView(contextVk, arrayType, aspectFlags, mappedSwizzle,
-                                             &view->mFetchMipmapImageView, baseLevel, levelCount,
-                                             baseLayer, layerCount));
-        ANGLE_TRY(mImage->initLayerImageView(contextVk, arrayType, aspectFlags, mappedSwizzle,
-                                             &view->mFetchBaseLevelImageView, baseLevel, 1,
-                                             baseLayer, layerCount));
+                                             &mFetchImageView, baseLevel, levelCount, baseLayer,
+                                             layerCount));
     }
+
     if (!format.imageFormat().isBlock)
     {
         ANGLE_TRY(mImage->initLayerImageView(contextVk, mState.getType(), aspectFlags,
-                                             gl::SwizzleState(), &view->mDrawBaseLevelImageView,
-                                             baseLevel, 1, baseLayer, layerCount));
+                                             gl::SwizzleState(), &mDrawImageView, baseLevel, 1,
+                                             baseLayer, layerCount));
     }
 
     return angle::Result::Continue;
 }
 
-angle::Result TextureVk::initImageViews(ContextVk *contextVk,
-                                        const vk::Format &format,
-                                        const bool sized,
-                                        uint32_t levelCount,
-                                        uint32_t layerCount)
-{
-    ASSERT(mImage != nullptr);
-
-    gl::SwizzleState mappedSwizzle;
-    MapSwizzleState(contextVk, format, sized, mState.getSwizzleState(), &mappedSwizzle);
-
-    VkImageAspectFlags aspectFlags = vk::GetFormatAspectFlags(format.angleFormat());
-    if (HasBothDepthAndStencilAspects(aspectFlags))
-    {
-        ANGLE_TRY(initImageViewImpl(contextVk, format, levelCount, layerCount, &mStencilViews,
-                                    VK_IMAGE_ASPECT_STENCIL_BIT, mappedSwizzle));
-        aspectFlags = VK_IMAGE_ASPECT_DEPTH_BIT;
-    }
-    ANGLE_TRY(initImageViewImpl(contextVk, format, levelCount, layerCount, &mDefaultViews,
-                                aspectFlags, mappedSwizzle));
-
-    return angle::Result::Continue;
-}
-
 void TextureVk::releaseImage(ContextVk *contextVk)
 {
     if (mImage)
     {
         if (mOwnsImage)
         {
-            mImage->releaseImage(contextVk);
+            mImage->releaseImage(contextVk->getRenderer());
         }
         else
         {
@@ -1687,61 +1711,93 @@
 
     releaseImageViews(contextVk);
 
-    mCubeMapRenderTargets.clear();
-    m3DRenderTargets.clear();
+    mLayerRenderTargets.clear();
 
     onStagingBufferChange();
 }
 
 void TextureVk::releaseImageViews(ContextVk *contextVk)
 {
-    Serial currentSerial = contextVk->getCurrentQueueSerial();
-
-    mDefaultViews.release(contextVk, currentSerial);
-
-    mStencilViews.release(contextVk, currentSerial);
+    contextVk->addGarbage(&mReadImageView);
+    contextVk->addGarbage(&mFetchImageView);
+    contextVk->addGarbage(&mStencilReadImageView);
+    contextVk->addGarbage(&mDrawImageView);
 
     for (vk::ImageViewVector &layerViews : mLayerLevelDrawImageViews)
     {
         for (vk::ImageView &imageView : layerViews)
         {
-            contextVk->releaseObject(currentSerial, &imageView);
+            contextVk->addGarbage(&imageView);
         }
     }
     mLayerLevelDrawImageViews.clear();
-    for (vk::ImageView &imageView : mLayerFetchImageView)
-    {
-        contextVk->releaseObject(currentSerial, &imageView);
-    }
-    mLayerFetchImageView.clear();
     for (vk::ImageView &imageView : mLevelStorageImageViews)
     {
-        contextVk->releaseObject(currentSerial, &imageView);
+        contextVk->addGarbage(&imageView);
     }
     mLevelStorageImageViews.clear();
-    for (vk::ImageViewVector &layerViews : mLayerLevelStorageImageViews)
-    {
-        for (vk::ImageView &imageView : layerViews)
-        {
-            contextVk->releaseObject(currentSerial, &imageView);
-        }
-    }
-    mLayerLevelStorageImageViews.clear();
 }
 
 void TextureVk::releaseStagingBuffer(ContextVk *contextVk)
 {
     if (mImage)
     {
-        mImage->releaseStagingBuffer(contextVk);
+        mImage->releaseStagingBuffer(contextVk->getRenderer());
     }
 }
 
 uint32_t TextureVk::getLevelCount() const
 {
-    ASSERT(mState.getEffectiveBaseLevel() == 0);
-
     // getMipmapMaxLevel will be 0 here if mipmaps are not used, so the levelCount is always +1.
     return mState.getMipmapMaxLevel() + 1;
 }
+
+angle::Result TextureVk::generateMipmapLevelsWithCPU(ContextVk *contextVk,
+                                                     const angle::Format &sourceFormat,
+                                                     GLuint layer,
+                                                     GLuint firstMipLevel,
+                                                     GLuint maxMipLevel,
+                                                     const size_t sourceWidth,
+                                                     const size_t sourceHeight,
+                                                     const size_t sourceRowPitch,
+                                                     uint8_t *sourceData)
+{
+    size_t previousLevelWidth    = sourceWidth;
+    size_t previousLevelHeight   = sourceHeight;
+    uint8_t *previousLevelData   = sourceData;
+    size_t previousLevelRowPitch = sourceRowPitch;
+
+    for (GLuint currentMipLevel = firstMipLevel; currentMipLevel <= maxMipLevel; currentMipLevel++)
+    {
+        // Compute next level width and height.
+        size_t mipWidth  = std::max<size_t>(1, previousLevelWidth >> 1);
+        size_t mipHeight = std::max<size_t>(1, previousLevelHeight >> 1);
+
+        // With the width and height of the next mip, we can allocate the next buffer we need.
+        uint8_t *destData   = nullptr;
+        size_t destRowPitch = mipWidth * sourceFormat.pixelBytes;
+
+        size_t mipAllocationSize = destRowPitch * mipHeight;
+        gl::Extents mipLevelExtents(static_cast<int>(mipWidth), static_cast<int>(mipHeight), 1);
+
+        ANGLE_TRY(mImage->stageSubresourceUpdateAndGetData(
+            contextVk, mipAllocationSize,
+            gl::ImageIndex::MakeFromType(mState.getType(), currentMipLevel, layer), mipLevelExtents,
+            gl::Offset(), &destData));
+        onStagingBufferChange();
+
+        // Generate the mipmap into that new buffer
+        sourceFormat.mipGenerationFunction(previousLevelWidth, previousLevelHeight, 1,
+                                           previousLevelData, previousLevelRowPitch, 0, destData,
+                                           destRowPitch, 0);
+
+        // Swap for the next iteration
+        previousLevelWidth    = mipWidth;
+        previousLevelHeight   = mipHeight;
+        previousLevelData     = destData;
+        previousLevelRowPitch = destRowPitch;
+    }
+
+    return angle::Result::Continue;
+}
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.h
index 6158d23..dc48211 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TextureVk.h
@@ -179,19 +179,6 @@
     }
 
   private:
-    struct TextureVkViews final : angle::NonCopyable
-    {
-        TextureVkViews();
-        ~TextureVkViews();
-
-        void release(ContextVk *contextVk, Serial currentSerial);
-        vk::ImageView mDrawBaseLevelImageView;
-        vk::ImageView mReadBaseLevelImageView;
-        vk::ImageView mReadMipmapImageView;
-        vk::ImageView mFetchBaseLevelImageView;
-        vk::ImageView mFetchMipmapImageView;
-    };
-
     // Transform an image index from the frontend into one that can be used on the backing
     // ImageHelper, taking into account mipmap or cube face offsets
     gl::ImageIndex getNativeImageIndex(const gl::ImageIndex &inputImageIndex) const;
@@ -206,6 +193,7 @@
                         const vk::Format &format,
                         uint32_t imageLevelOffset,
                         uint32_t imageLayerOffset,
+                        uint32_t imageBaseLevel,
                         bool selfOwned);
     void updateImageHelper(ContextVk *contextVk, const vk::Format &internalFormat);
 
@@ -230,10 +218,19 @@
                                   const uint8_t *pixels,
                                   const vk::Format &vkFormat);
 
+    angle::Result copyImageDataToBufferAndGetData(ContextVk *contextVk,
+                                                  size_t sourceLevel,
+                                                  uint32_t layerCount,
+                                                  const gl::Rectangle &sourceArea,
+                                                  uint8_t **outDataPtr);
+
     angle::Result copyImageDataToBuffer(ContextVk *contextVk,
                                         size_t sourceLevel,
                                         uint32_t layerCount,
-                                        const gl::Rectangle &sourceArea,
+                                        uint32_t baseLayer,
+                                        const gl::Box &sourceArea,
+                                        vk::BufferHelper **bufferOut,
+                                        VkDeviceSize *bufferOffsetOut,
                                         uint8_t **outDataPtr);
 
     angle::Result generateMipmapsWithCPU(const gl::Context *context);
@@ -302,19 +299,11 @@
                                  const bool sized,
                                  uint32_t levelCount,
                                  uint32_t layerCount);
-    angle::Result init3DRenderTargets(ContextVk *contextVk);
-    angle::Result initImageViewImpl(ContextVk *contextVk,
-                                    const vk::Format &format,
-                                    uint32_t levelCount,
-                                    uint32_t layerCount,
-                                    TextureVkViews *views,
-                                    VkImageAspectFlags aspectFlags,
-                                    gl::SwizzleState mappedSwizzle);
+    angle::Result initLayerRenderTargets(ContextVk *contextVk, GLuint layerCount);
     vk::ImageView *getLevelImageViewImpl(vk::ImageViewVector *imageViews, size_t level);
     vk::ImageView *getLayerLevelImageViewImpl(vk::LayerLevelImageViewVector *imageViews,
                                               size_t layer,
                                               size_t level);
-    angle::Result initCubeMapRenderTargets(ContextVk *contextVk);
 
     angle::Result ensureImageInitializedImpl(ContextVk *contextVk,
                                              const gl::Extents &baseLevelExtents,
@@ -323,7 +312,7 @@
 
     void onStagingBufferChange() { onStateChange(angle::SubjectMessage::SubjectChanged); }
 
-    const TextureVkViews *getTextureViews() const;
+    angle::Result changeLevels(ContextVk *contextVk, GLuint baseLevel, GLuint maxLevel);
 
     bool mOwnsImage;
 
@@ -340,20 +329,20 @@
     vk::ImageHelper *mImage;
 
     // Read views.
-    TextureVkViews mDefaultViews;
-    TextureVkViews mStencilViews;
+    vk::ImageView mReadImageView;
+    vk::ImageView mFetchImageView;
+    vk::ImageView mStencilReadImageView;
+
     // Draw views.
+    vk::ImageView mDrawImageView;
     vk::LayerLevelImageViewVector mLayerLevelDrawImageViews;
-    // Fetch views.
-    vk::ImageViewVector mLayerFetchImageView;
+
     // Storage image views.
     vk::ImageViewVector mLevelStorageImageViews;
-    vk::LayerLevelImageViewVector mLayerLevelStorageImageViews;
 
     vk::Sampler mSampler;
     RenderTargetVk mRenderTarget;
-    std::vector<RenderTargetVk> m3DRenderTargets;
-    std::vector<RenderTargetVk> mCubeMapRenderTargets;
+    std::vector<RenderTargetVk> mLayerRenderTargets;
 
     // The serial is used for cache indexing.
     Serial mSerial;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp
index fa53f4c..6676bba 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp
@@ -237,7 +237,7 @@
     FramebufferVk *framebufferVk       = vk::GetImpl(context->getState().getDrawFramebuffer());
     vk::FramebufferHelper *framebuffer = framebufferVk->getFramebuffer();
 
-    framebuffer->updateQueueSerial(contextVk->getCurrentQueueSerial());
+    framebuffer->updateCurrentAccessNodes();
     if (framebuffer->hasStartedRenderPass())
     {
         framebuffer->finishCurrentCommands(contextVk);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.cpp
index 488d5fe..a50b143 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.cpp
@@ -82,16 +82,28 @@
     bool srcIsA2BGR10 =
         ((params.srcFormat->vertexAttribType == gl::VertexAttribType::UnsignedInt2101010) ||
          (params.srcFormat->vertexAttribType == gl::VertexAttribType::Int2101010));
+    bool srcIsRGB10A2 =
+        ((params.srcFormat->vertexAttribType == gl::VertexAttribType::UnsignedInt1010102) ||
+         params.srcFormat->vertexAttribType == gl::VertexAttribType::Int1010102) &&
+        params.srcFormat->alphaBits;
+    bool srcIsRGB10X2 =
+        ((params.srcFormat->vertexAttribType == gl::VertexAttribType::UnsignedInt1010102) ||
+         params.srcFormat->vertexAttribType == gl::VertexAttribType::Int1010102) &&
+        !params.srcFormat->alphaBits;
+    bool srcIsHalfFloat = params.srcFormat->isVertexTypeHalfFloat();
 
-    bool destIsSint  = params.destFormat->isSint();
-    bool destIsUint  = params.destFormat->isUint();
-    bool destIsFloat = params.destFormat->isFloat();
+    bool destIsSint      = params.destFormat->isSint();
+    bool destIsUint      = params.destFormat->isUint();
+    bool destIsFloat     = params.destFormat->isFloat();
+    bool destIsHalfFloat = params.destFormat->isVertexTypeHalfFloat();
 
     // Assert on the types to make sure the shader supports its.  These are based on
     // ConvertVertex_comp::Conversion values.
-    ASSERT(!destIsSint || srcIsSint);    // If destination is sint, src must be sint too
-    ASSERT(!destIsUint || srcIsUint);    // If destination is uint, src must be uint too
-    ASSERT(!srcIsFixed || destIsFloat);  // If source is fixed, dest must be float
+    ASSERT(!destIsSint || srcIsSint);           // If destination is sint, src must be sint too
+    ASSERT(!destIsUint || srcIsUint);           // If destination is uint, src must be uint too
+    ASSERT(!srcIsFixed || destIsFloat);         // If source is fixed, dest must be float
+    ASSERT(srcIsHalfFloat == destIsHalfFloat);  // Both src and dest are half float or neither
+
     // One of each bool set must be true
     ASSERT(srcIsSint || srcIsUint || srcIsSnorm || srcIsUnorm || srcIsFixed || srcIsFloat);
     ASSERT(destIsSint || destIsUint || destIsFloat);
@@ -134,6 +146,56 @@
             UNREACHABLE();
         }
     }
+    else if (srcIsRGB10A2)
+    {
+        if (srcIsSint)
+        {
+            flags |= ConvertVertex_comp::kRGB10A2SintToFloat;
+        }
+        else if (srcIsUint)
+        {
+            flags |= ConvertVertex_comp::kRGB10A2UintToFloat;
+        }
+        else if (srcIsSnorm)
+        {
+            flags |= ConvertVertex_comp::kRGB10A2SnormToFloat;
+        }
+        else if (srcIsUnorm)
+        {
+            flags |= ConvertVertex_comp::kRGB10A2UnormToFloat;
+        }
+        else
+        {
+            UNREACHABLE();
+        }
+    }
+    else if (srcIsRGB10X2)
+    {
+        if (srcIsSint)
+        {
+            flags |= ConvertVertex_comp::kRGB10X2SintToFloat;
+        }
+        else if (srcIsUint)
+        {
+            flags |= ConvertVertex_comp::kRGB10X2UintToFloat;
+        }
+        else if (srcIsSnorm)
+        {
+            flags |= ConvertVertex_comp::kRGB10X2SnormToFloat;
+        }
+        else if (srcIsUnorm)
+        {
+            flags |= ConvertVertex_comp::kRGB10X2UnormToFloat;
+        }
+        else
+        {
+            UNREACHABLE();
+        }
+    }
+    else if (srcIsHalfFloat && destIsHalfFloat)
+    {
+        flags |= ConvertVertex_comp::kHalfFloatToHalfFloat;
+    }
     else if (srcIsSint && destIsSint)
     {
         flags |= ConvertVertex_comp::kSintToSint;
@@ -446,6 +508,43 @@
                                       ArraySize(setSizes), sizeof(ConvertIndexShaderParams));
 }
 
+angle::Result UtilsVk::ensureConvertIndexIndirectResourcesInitialized(ContextVk *contextVk)
+{
+    if (mPipelineLayouts[Function::ConvertIndexIndirectBuffer].valid())
+    {
+        return angle::Result::Continue;
+    }
+
+    VkDescriptorPoolSize setSizes[3] = {
+        {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1},  // source index buffer
+        {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1},  // dest index buffer
+        {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1},  // cmd buffer
+    };
+
+    return ensureResourcesInitialized(contextVk, Function::ConvertIndexIndirectBuffer, setSizes,
+                                      ArraySize(setSizes),
+                                      sizeof(ConvertIndexIndirectShaderParams));
+}
+
+angle::Result UtilsVk::ensureConvertIndexIndirectLineLoopResourcesInitialized(ContextVk *contextVk)
+{
+    if (mPipelineLayouts[Function::ConvertIndexIndirectLineLoopBuffer].valid())
+    {
+        return angle::Result::Continue;
+    }
+
+    VkDescriptorPoolSize setSizes[4] = {
+        {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1},  // cmd buffer
+        {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1},  // dest cmd buffer
+        {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1},  // source index buffer
+        {VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1},  // dest index buffer
+    };
+
+    return ensureResourcesInitialized(contextVk, Function::ConvertIndexIndirectLineLoopBuffer,
+                                      setSizes, ArraySize(setSizes),
+                                      sizeof(ConvertIndexIndirectLineLoopShaderParams));
+}
+
 angle::Result UtilsVk::ensureConvertVertexResourcesInitialized(ContextVk *contextVk)
 {
     if (mPipelineLayouts[Function::ConvertVertexBuffer].valid())
@@ -777,6 +876,142 @@
     return angle::Result::Continue;
 }
 
+angle::Result UtilsVk::convertIndexIndirectBuffer(ContextVk *contextVk,
+                                                  vk::BufferHelper *cmdBuffer,
+                                                  vk::BufferHelper *dest,
+                                                  vk::BufferHelper *src,
+                                                  const ConvertIndexIndirectParameters &params)
+{
+    ANGLE_TRY(ensureConvertIndexIndirectResourcesInitialized(contextVk));
+
+    vk::CommandBuffer *commandBuffer;
+    ANGLE_TRY(dest->recordCommands(contextVk, &commandBuffer));
+
+    // Tell src we are going to read from it and dest it's being written to.
+    src->onReadByBuffer(contextVk, dest, VK_ACCESS_SHADER_READ_BIT, VK_ACCESS_SHADER_WRITE_BIT);
+    cmdBuffer->onReadByBuffer(contextVk, dest, VK_ACCESS_SHADER_READ_BIT,
+                              VK_ACCESS_SHADER_WRITE_BIT);
+
+    VkDescriptorSet descriptorSet;
+    vk::RefCountedDescriptorPoolBinding descriptorPoolBinding;
+    ANGLE_TRY(allocateDescriptorSet(contextVk, Function::ConvertIndexIndirectBuffer,
+                                    &descriptorPoolBinding, &descriptorSet));
+
+    std::array<VkDescriptorBufferInfo, 3> buffers = {{
+        {dest->getBuffer().getHandle(), 0, VK_WHOLE_SIZE},
+        {src->getBuffer().getHandle(), 0, VK_WHOLE_SIZE},
+        {cmdBuffer->getBuffer().getHandle(), 0, VK_WHOLE_SIZE},
+    }};
+
+    VkWriteDescriptorSet writeInfo = {};
+    writeInfo.sType                = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
+    writeInfo.dstSet               = descriptorSet;
+    writeInfo.dstBinding           = kConvertIndexDestinationBinding;
+    writeInfo.descriptorCount      = 3;
+    writeInfo.descriptorType       = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
+    writeInfo.pBufferInfo          = buffers.data();
+
+    vkUpdateDescriptorSets(contextVk->getDevice(), 1, &writeInfo, 0, nullptr);
+
+    ConvertIndexIndirectShaderParams shaderParams = {params.indirectBufferOffset >> 2,
+                                                     params.dstOffset >> 2, params.maxIndex, 0};
+
+    uint32_t flags = vk::InternalShader::ConvertIndex_comp::kIsIndirect;
+    if (contextVk->getState().isPrimitiveRestartEnabled())
+    {
+        flags |= vk::InternalShader::ConvertIndex_comp::kIsPrimitiveRestartEnabled;
+    }
+
+    vk::RefCounted<vk::ShaderAndSerial> *shader = nullptr;
+    ANGLE_TRY(contextVk->getShaderLibrary().getConvertIndex_comp(contextVk, flags, &shader));
+
+    ANGLE_TRY(setupProgram(contextVk, Function::ConvertIndexIndirectBuffer, shader, nullptr,
+                           &mConvertIndexPrograms[flags], nullptr, descriptorSet, &shaderParams,
+                           sizeof(ConvertIndexIndirectShaderParams), commandBuffer));
+
+    constexpr uint32_t kInvocationsPerGroup = 64;
+    constexpr uint32_t kInvocationsPerIndex = 2;
+    const uint32_t kIndexCount              = params.maxIndex;
+    const uint32_t kGroupCount =
+        UnsignedCeilDivide(kIndexCount * kInvocationsPerIndex, kInvocationsPerGroup);
+    commandBuffer->dispatch(kGroupCount, 1, 1);
+
+    descriptorPoolBinding.reset();
+
+    return angle::Result::Continue;
+}
+
+angle::Result UtilsVk::convertLineLoopIndexIndirectBuffer(
+    ContextVk *contextVk,
+    vk::BufferHelper *srcIndirectBuffer,
+    vk::BufferHelper *destIndirectBuffer,
+    vk::BufferHelper *destIndexBuffer,
+    vk::BufferHelper *srcIndexBuffer,
+    const ConvertLineLoopIndexIndirectParameters &params)
+{
+    ANGLE_TRY(ensureConvertIndexIndirectLineLoopResourcesInitialized(contextVk));
+
+    vk::CommandBuffer *commandBuffer;
+    ANGLE_TRY(destIndexBuffer->recordCommands(contextVk, &commandBuffer));
+
+    // Tell src we are going to read from it and dest it's being written to.
+    srcIndexBuffer->onReadByBuffer(contextVk, destIndexBuffer, VK_ACCESS_SHADER_READ_BIT,
+                                   VK_ACCESS_SHADER_WRITE_BIT);
+    srcIndirectBuffer->onReadByBuffer(contextVk, destIndexBuffer, VK_ACCESS_SHADER_READ_BIT,
+                                      VK_ACCESS_SHADER_WRITE_BIT);
+
+    ANGLE_TRY(destIndirectBuffer->recordCommands(contextVk, &commandBuffer));
+
+    srcIndirectBuffer->onReadByBuffer(contextVk, destIndirectBuffer, VK_ACCESS_SHADER_READ_BIT,
+                                      VK_ACCESS_SHADER_WRITE_BIT);
+
+    VkDescriptorSet descriptorSet;
+    vk::RefCountedDescriptorPoolBinding descriptorPoolBinding;
+    ANGLE_TRY(allocateDescriptorSet(contextVk, Function::ConvertIndexIndirectLineLoopBuffer,
+                                    &descriptorPoolBinding, &descriptorSet));
+
+    std::array<VkDescriptorBufferInfo, 4> buffers = {{
+        {srcIndirectBuffer->getBuffer().getHandle(), 0, VK_WHOLE_SIZE},
+        {destIndirectBuffer->getBuffer().getHandle(), 0, VK_WHOLE_SIZE},
+        {destIndexBuffer->getBuffer().getHandle(), 0, VK_WHOLE_SIZE},
+        {srcIndexBuffer->getBuffer().getHandle(), 0, VK_WHOLE_SIZE},
+    }};
+
+    VkWriteDescriptorSet writeInfo = {};
+    writeInfo.sType                = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
+    writeInfo.dstSet               = descriptorSet;
+    writeInfo.dstBinding           = kConvertIndexDestinationBinding;
+    writeInfo.descriptorCount      = 4;
+    writeInfo.descriptorType       = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
+    writeInfo.pBufferInfo          = buffers.data();
+
+    vkUpdateDescriptorSets(contextVk->getDevice(), 1, &writeInfo, 0, nullptr);
+
+    ConvertIndexIndirectLineLoopShaderParams shaderParams = {
+        params.indirectBufferOffset >> 2, params.dstIndirectBufferOffset >> 2,
+        params.dstIndexBufferOffset >> 2, contextVk->getState().isPrimitiveRestartEnabled()};
+
+    uint32_t flags = 0;
+    if (params.is32Bit)
+    {
+        flags |= vk::InternalShader::ConvertIndexIndirectLineLoop_comp::kIs32Bit;
+    }
+
+    vk::RefCounted<vk::ShaderAndSerial> *shader = nullptr;
+    ANGLE_TRY(contextVk->getShaderLibrary().getConvertIndexIndirectLineLoop_comp(contextVk, flags,
+                                                                                 &shader));
+
+    ANGLE_TRY(setupProgram(contextVk, Function::ConvertIndexIndirectLineLoopBuffer, shader, nullptr,
+                           &mConvertIndexPrograms[flags], nullptr, descriptorSet, &shaderParams,
+                           sizeof(ConvertIndexIndirectLineLoopShaderParams), commandBuffer));
+
+    commandBuffer->dispatch(1, 1, 1);
+
+    descriptorPoolBinding.reset();
+
+    return angle::Result::Continue;
+}
+
 angle::Result UtilsVk::convertVertexBuffer(ContextVk *contextVk,
                                            vk::BufferHelper *dest,
                                            vk::BufferHelper *src,
@@ -888,7 +1123,7 @@
     ANGLE_TRY(image->beginRenderPass(contextVk, framebuffer, renderArea, renderPassDesc,
                                      renderPassAttachmentOps, clearValues, commandBufferOut));
 
-    contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &framebuffer);
+    contextVk->addGarbage(&framebuffer);
 
     return angle::Result::Continue;
 }
@@ -902,8 +1137,8 @@
     const gl::Rectangle &scissoredRenderArea = params.clearArea;
 
     vk::CommandBuffer *commandBuffer;
-    if (!framebuffer->appendToStartedRenderPass(contextVk->getCurrentQueueSerial(),
-                                                scissoredRenderArea, &commandBuffer))
+    if (!framebuffer->appendToStartedRenderPass(contextVk->getCommandGraph(), scissoredRenderArea,
+                                                &commandBuffer))
     {
         ANGLE_TRY(framebuffer->startNewRenderPass(contextVk, scissoredRenderArea, &commandBuffer));
     }
@@ -1131,14 +1366,14 @@
     }
 
     vk::CommandBuffer *commandBuffer;
-    if (!framebuffer->appendToStartedRenderPass(contextVk->getCurrentQueueSerial(), params.blitArea,
+    if (!framebuffer->appendToStartedRenderPass(contextVk->getCommandGraph(), params.blitArea,
                                                 &commandBuffer))
     {
         ANGLE_TRY(framebuffer->startNewRenderPass(contextVk, params.blitArea, &commandBuffer));
     }
 
     // Source's layout change should happen before rendering
-    src->addReadDependency(framebuffer->getFramebuffer());
+    src->addReadDependency(contextVk, framebuffer->getFramebuffer());
 
     VkDescriptorImageInfo imageInfos[2] = {};
 
@@ -1226,7 +1461,7 @@
                                     &descriptorPoolBinding, &descriptorSet));
 
     // Create a temporary buffer to blit/resolve stencil into.
-    vk::ContextScoped<vk::BufferHelper> blitBuffer(contextVk);
+    vk::RendererScoped<vk::BufferHelper> blitBuffer(contextVk->getRenderer());
 
     uint32_t bufferRowLengthInUints = UnsignedCeilDivide(params.blitArea.width, sizeof(uint32_t));
     VkDeviceSize bufferSize = bufferRowLengthInUints * sizeof(uint32_t) * params.blitArea.height;
@@ -1242,7 +1477,7 @@
 
     ANGLE_TRY(
         blitBuffer.get().init(contextVk, blitBufferInfo, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT));
-    blitBuffer.get().updateQueueSerial(contextVk->getCurrentQueueSerial());
+    blitBuffer.get().onGraphAccess(contextVk->getCommandGraph());
 
     BlitResolveStencilNoExportShaderParams shaderParams;
     if (isResolve)
@@ -1285,7 +1520,7 @@
     vk::CommandBuffer *commandBuffer;
     ANGLE_TRY(framebuffer->getFramebuffer()->recordCommands(contextVk, &commandBuffer));
 
-    src->addReadDependency(framebuffer->getFramebuffer());
+    src->addReadDependency(contextVk, framebuffer->getFramebuffer());
 
     // Blit/resolve stencil into the buffer.
     VkDescriptorImageInfo imageInfo = {};
@@ -1471,7 +1706,7 @@
         startRenderPass(contextVk, dest, destView, renderPassDesc, renderArea, &commandBuffer));
 
     // Source's layout change should happen before rendering
-    src->addReadDependency(dest);
+    src->addReadDependency(contextVk, dest);
 
     VkDescriptorImageInfo imageInfo = {};
     imageInfo.imageView             = srcView->getHandle();
@@ -1537,7 +1772,7 @@
     dest->changeLayout(VK_IMAGE_ASPECT_COLOR_BIT, vk::ImageLayout::ComputeShaderWrite,
                        commandBuffer);
 
-    enabledWidgetsBuffer->onRead(dest, VK_ACCESS_SHADER_READ_BIT);
+    enabledWidgetsBuffer->onRead(contextVk, dest, VK_ACCESS_SHADER_READ_BIT);
 
     VkDescriptorImageInfo imageInfo = {};
     imageInfo.imageView             = destView->getHandle();
@@ -1612,10 +1847,10 @@
     dest->changeLayout(VK_IMAGE_ASPECT_COLOR_BIT, vk::ImageLayout::ComputeShaderWrite,
                        commandBuffer);
 
-    culledWidgets->addReadDependency(dest);
-    font->addReadDependency(dest);
-    textWidgetsBuffer->onRead(dest, VK_ACCESS_SHADER_READ_BIT);
-    graphWidgetsBuffer->onRead(dest, VK_ACCESS_SHADER_READ_BIT);
+    culledWidgets->addReadDependency(contextVk, dest);
+    font->addReadDependency(contextVk, dest);
+    textWidgetsBuffer->onRead(contextVk, dest, VK_ACCESS_SHADER_READ_BIT);
+    graphWidgetsBuffer->onRead(contextVk, dest, VK_ACCESS_SHADER_READ_BIT);
 
     VkDescriptorImageInfo imageInfos[3] = {};
     imageInfos[0].imageView             = destView->getHandle();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.h
index 3f07ed1..27cd2d1 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/UtilsVk.h
@@ -54,6 +54,21 @@
         uint32_t maxIndex  = 0;
     };
 
+    struct ConvertIndexIndirectParameters
+    {
+        uint32_t indirectBufferOffset = 0;
+        uint32_t dstOffset            = 0;
+        uint32_t maxIndex             = 0;
+    };
+
+    struct ConvertLineLoopIndexIndirectParameters
+    {
+        uint32_t indirectBufferOffset    = 0;
+        uint32_t dstIndirectBufferOffset = 0;
+        uint32_t dstIndexBufferOffset    = 0;
+        uint32_t is32Bit                 = 0;
+    };
+
     struct ConvertVertexParameters
     {
         size_t vertexCount;
@@ -87,7 +102,8 @@
 
     struct BlitResolveParameters
     {
-        // |srcOffset| and |dstOffset| define the original blit/resolve offsets, possibly flipped.
+        // |srcOffset| and |dstIndexBufferOffset| define the original blit/resolve offsets, possibly
+        // flipped.
         int srcOffset[2];
         int destOffset[2];
         // |stretch| is SourceDimension / DestDimension used to transfer dest coordinates to source.
@@ -137,6 +153,20 @@
                                      vk::BufferHelper *dest,
                                      vk::BufferHelper *src,
                                      const ConvertIndexParameters &params);
+    angle::Result convertIndexIndirectBuffer(ContextVk *contextVk,
+                                             vk::BufferHelper *cmdBufferVk,
+                                             vk::BufferHelper *dest,
+                                             vk::BufferHelper *src,
+                                             const ConvertIndexIndirectParameters &params);
+
+    angle::Result convertLineLoopIndexIndirectBuffer(
+        ContextVk *contextVk,
+        vk::BufferHelper *cmdBufferVk,
+        vk::BufferHelper *destCmdBufferVk,
+        vk::BufferHelper *dest,
+        vk::BufferHelper *src,
+        const ConvertLineLoopIndexIndirectParameters &params);
+
     angle::Result convertVertexBuffer(ContextVk *contextVk,
                                       vk::BufferHelper *dest,
                                       vk::BufferHelper *src,
@@ -210,6 +240,22 @@
         uint32_t _padding      = 0;
     };
 
+    struct ConvertIndexIndirectShaderParams
+    {
+        uint32_t cmdOffsetDiv4 = 0;
+        uint32_t dstOffsetDiv4 = 0;
+        uint32_t maxIndex      = 0;
+        uint32_t _padding      = 0;
+    };
+
+    struct ConvertIndexIndirectLineLoopShaderParams
+    {
+        uint32_t cmdOffsetDiv4    = 0;
+        uint32_t dstCmdOffsetDiv4 = 0;
+        uint32_t dstOffsetDiv4    = 0;
+        uint32_t isRestartEnabled = 0;
+    };
+
     struct ConvertVertexShaderParams
     {
         ConvertVertexShaderParams();
@@ -310,9 +356,11 @@
         BlitResolveStencilNoExport = 6,
         OverlayCull                = 7,
         OverlayDraw                = 8,
+        ConvertIndexIndirectBuffer = 9,
+        ConvertIndexIndirectLineLoopBuffer = 10,
 
-        InvalidEnum = 9,
-        EnumCount   = 9,
+        InvalidEnum = 11,
+        EnumCount   = 11,
     };
 
     // Common function that creates the pipeline for the specified function, binds it and prepares
@@ -346,6 +394,8 @@
     // appropriate parameters.
     angle::Result ensureBufferClearResourcesInitialized(ContextVk *contextVk);
     angle::Result ensureConvertIndexResourcesInitialized(ContextVk *contextVk);
+    angle::Result ensureConvertIndexIndirectResourcesInitialized(ContextVk *contextVk);
+    angle::Result ensureConvertIndexIndirectLineLoopResourcesInitialized(ContextVk *contextVk);
     angle::Result ensureConvertVertexResourcesInitialized(ContextVk *contextVk);
     angle::Result ensureImageClearResourcesInitialized(ContextVk *contextVk);
     angle::Result ensureImageCopyResourcesInitialized(ContextVk *contextVk);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
index 4acd04e..bc75f57 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.cpp
@@ -54,17 +54,37 @@
                                size_t bytesToAllocate,
                                size_t destOffset,
                                size_t vertexCount,
-                               size_t stride,
+                               size_t sourceStride,
+                               size_t destStride,
                                VertexCopyFunction vertexLoadFunction,
                                vk::BufferHelper **bufferOut,
-                               VkDeviceSize *bufferOffsetOut)
+                               VkDeviceSize *bufferOffsetOut,
+                               uint32_t replicateCount)
 {
     uint8_t *dst = nullptr;
     ANGLE_TRY(dynamicBuffer->allocate(contextVk, bytesToAllocate, &dst, nullptr, bufferOffsetOut,
                                       nullptr));
     *bufferOut = dynamicBuffer->getCurrentBuffer();
     dst += destOffset;
-    vertexLoadFunction(sourceData, stride, vertexCount, dst);
+    if (replicateCount == 1)
+    {
+        vertexLoadFunction(sourceData, sourceStride, vertexCount, dst);
+    }
+    else
+    {
+        ASSERT(replicateCount > 1);
+        uint32_t sourceRemainingCount = replicateCount - 1;
+        for (size_t dataCopied = 0; dataCopied < bytesToAllocate;
+             dataCopied += destStride, dst += destStride, sourceRemainingCount--)
+        {
+            vertexLoadFunction(sourceData, sourceStride, 1, dst);
+            if (sourceRemainingCount == 0)
+            {
+                sourceData += sourceStride;
+                sourceRemainingCount = replicateCount;
+            }
+        }
+    }
 
     ANGLE_TRY(dynamicBuffer->flush(contextVk));
     return angle::Result::Continue;
@@ -128,11 +148,13 @@
 {
     ContextVk *contextVk = vk::GetImpl(context);
 
-    mTheNullBuffer.release(contextVk);
+    RendererVk *renderer = contextVk->getRenderer();
 
-    mDynamicVertexData.release(contextVk);
-    mDynamicIndexData.release(contextVk);
-    mTranslatedByteIndexData.release(contextVk);
+    mTheNullBuffer.release(renderer);
+
+    mDynamicVertexData.release(renderer);
+    mDynamicIndexData.release(renderer);
+    mTranslatedByteIndexData.release(renderer);
     mLineLoopHelper.release(contextVk);
 }
 
@@ -163,6 +185,50 @@
     return contextVk->getUtils().convertIndexBuffer(contextVk, dest, src, params);
 }
 
+angle::Result VertexArrayVk::convertIndexBufferIndirectGPU(ContextVk *contextVk,
+                                                           BufferVk *cmdBufferVk,
+                                                           BufferVk *indexBufferVk,
+                                                           const void *offset)
+{
+    intptr_t indirectBufferOffset = reinterpret_cast<intptr_t>(offset);
+    size_t srcDataSize            = static_cast<size_t>(indexBufferVk->getSize());
+
+    mTranslatedByteIndexData.releaseInFlightBuffers(contextVk);
+
+    ANGLE_TRY(mTranslatedByteIndexData.allocate(contextVk, sizeof(GLushort) * srcDataSize, nullptr,
+                                                nullptr, &mCurrentElementArrayBufferOffset,
+                                                nullptr));
+    mCurrentElementArrayBuffer = mTranslatedByteIndexData.getCurrentBuffer();
+
+    vk::BufferHelper *dest = mTranslatedByteIndexData.getCurrentBuffer();
+    vk::BufferHelper *src  = &indexBufferVk->getBuffer();
+
+    // Copy relevant section of the source into destination at allocated offset.  Note that the
+    // offset returned by allocate() above is in bytes. As is the indices offset pointer.
+    UtilsVk::ConvertIndexIndirectParameters params = {};
+    params.indirectBufferOffset                    = static_cast<uint32_t>(indirectBufferOffset);
+    params.dstOffset = static_cast<uint32_t>(mCurrentElementArrayBufferOffset);
+    params.maxIndex  = static_cast<uint32_t>(indexBufferVk->getSize());
+
+    return contextVk->getUtils().convertIndexIndirectBuffer(contextVk, &cmdBufferVk->getBuffer(),
+                                                            dest, src, params);
+}
+
+angle::Result VertexArrayVk::handleLineLoopIndirect(ContextVk *contextVk,
+                                                    BufferVk *indirectBufferVk,
+                                                    gl::DrawElementsType glIndexType,
+                                                    VkDeviceSize indirectBufferOffset,
+                                                    vk::BufferHelper **indirectBufferOut,
+                                                    VkDeviceSize *indirectBufferOffsetOut)
+{
+    ANGLE_TRY(mLineLoopHelper.streamIndicesIndirect(
+        contextVk, glIndexType, mCurrentElementArrayBuffer, &indirectBufferVk->getBuffer(),
+        indirectBufferOffset, &mCurrentElementArrayBuffer, &mCurrentElementArrayBufferOffset,
+        indirectBufferOut, indirectBufferOffsetOut));
+
+    return angle::Result::Continue;
+}
+
 angle::Result VertexArrayVk::convertIndexBufferCPU(ContextVk *contextVk,
                                                    gl::DrawElementsType indexType,
                                                    size_t indexCount,
@@ -305,9 +371,9 @@
     srcBytes += binding.getOffset() + relativeOffset;
     ASSERT(GetVertexInputAlignment(vertexFormat) <= vk::kVertexBufferAlignment);
     ANGLE_TRY(StreamVertexData(contextVk, &conversion->data, srcBytes, numVertices * dstFormatSize,
-                               0, numVertices, binding.getStride(), vertexFormat.vertexLoadFunction,
-                               &mCurrentArrayBuffers[attribIndex],
-                               &conversion->lastAllocationOffset));
+                               0, numVertices, binding.getStride(), srcFormatSize,
+                               vertexFormat.vertexLoadFunction, &mCurrentArrayBuffers[attribIndex],
+                               &conversion->lastAllocationOffset, 1));
     srcBuffer->unmapImpl(contextVk);
 
     ASSERT(conversion->dirty);
@@ -431,6 +497,11 @@
         GLuint stride;
         bool anyVertexBufferConvertedOnGpu = false;
         gl::Buffer *bufferGL               = binding.getBuffer().get();
+        // Emulated and/or client-side attribs will be streamed
+        bool isStreamingVertexAttrib =
+            (binding.getDivisor() > renderer->getMaxVertexAttribDivisor()) || (bufferGL == nullptr);
+        mStreamingVertexAttribsMask.set(attribIndex, isStreamingVertexAttrib);
+
         if (bufferGL)
         {
             BufferVk *bufferVk               = vk::GetImpl(bufferGL);
@@ -486,7 +557,7 @@
                 }
                 else
                 {
-                    vk::BufferHelper &bufferHelper = bufferVk->getBuffer();
+                    vk::BufferHelper &bufferHelper          = bufferVk->getBuffer();
                     mCurrentArrayBuffers[attribIndex]       = &bufferHelper;
                     mCurrentArrayBufferHandles[attribIndex] = bufferHelper.getBuffer().getHandle();
                     mCurrentArrayBufferOffsets[attribIndex] = binding.getOffset();
@@ -534,17 +605,24 @@
     return angle::Result::Continue;
 }
 
-angle::Result VertexArrayVk::updateClientAttribs(const gl::Context *context,
-                                                 GLint firstVertex,
-                                                 GLsizei vertexOrIndexCount,
-                                                 GLsizei instanceCount,
-                                                 gl::DrawElementsType indexTypeOrInvalid,
-                                                 const void *indices)
+// Handle copying client attribs and/or expanding attrib buffer in case where attribute
+//  divisor value has to be emulated.
+angle::Result VertexArrayVk::updateStreamedAttribs(const gl::Context *context,
+                                                   GLint firstVertex,
+                                                   GLsizei vertexOrIndexCount,
+                                                   GLsizei instanceCount,
+                                                   gl::DrawElementsType indexTypeOrInvalid,
+                                                   const void *indices)
 {
-    ContextVk *contextVk                    = vk::GetImpl(context);
-    const gl::AttributesMask &clientAttribs = context->getStateCache().getActiveClientAttribsMask();
+    ContextVk *contextVk = vk::GetImpl(context);
+    const gl::AttributesMask activeAttribs =
+        context->getStateCache().getActiveClientAttribsMask() |
+        context->getStateCache().getActiveBufferedAttribsMask();
+    const gl::AttributesMask activeStreamedAttribs = mStreamingVertexAttribsMask & activeAttribs;
 
-    ASSERT(clientAttribs.any());
+    // Early return for corner case where emulated buffered attribs are not active
+    if (!activeStreamedAttribs.any())
+        return angle::Result::Continue;
 
     GLint startVertex;
     size_t vertexCount;
@@ -557,33 +635,65 @@
     const auto &attribs  = mState.getVertexAttributes();
     const auto &bindings = mState.getVertexBindings();
 
-    // TODO(fjhenigman): When we have a bunch of interleaved attributes, they end up
+    // TODO: When we have a bunch of interleaved attributes, they end up
     // un-interleaved, wasting space and copying time.  Consider improving on that.
-    for (size_t attribIndex : clientAttribs)
+    for (size_t attribIndex : activeStreamedAttribs)
     {
         const gl::VertexAttribute &attrib = attribs[attribIndex];
-        const gl::VertexBinding &binding  = bindings[attrib.bindingIndex];
-        ASSERT(attrib.enabled && binding.getBuffer().get() == nullptr);
+        ASSERT(attrib.enabled);
+        const gl::VertexBinding &binding = bindings[attrib.bindingIndex];
 
         const vk::Format &vertexFormat = renderer->getFormat(attrib.format->id);
         GLuint stride                  = vertexFormat.bufferFormat().pixelBytes;
 
         ASSERT(GetVertexInputAlignment(vertexFormat) <= vk::kVertexBufferAlignment);
 
-        const uint8_t *src = static_cast<const uint8_t *>(attrib.pointer);
-        if (binding.getDivisor() > 0)
+        const uint8_t *src     = static_cast<const uint8_t *>(attrib.pointer);
+        const uint32_t divisor = binding.getDivisor();
+        if (divisor > 0)
         {
-            // instanced attrib
-            size_t count           = UnsignedCeilDivide(instanceCount, binding.getDivisor());
-            size_t bytesToAllocate = count * stride;
+            // Instanced attrib
+            if (divisor > renderer->getMaxVertexAttribDivisor())
+            {
+                // Emulated attrib
+                BufferVk *bufferVk = nullptr;
+                if (binding.getBuffer().get() != nullptr)
+                {
+                    // Map buffer to expand attribs for divisor emulation
+                    bufferVk      = vk::GetImpl(binding.getBuffer().get());
+                    void *buffSrc = nullptr;
+                    ANGLE_TRY(bufferVk->mapImpl(contextVk, &buffSrc));
+                    src = reinterpret_cast<const uint8_t *>(buffSrc);
+                }
+                // Divisor will be set to 1 & so update buffer to have 1 attrib per instance
+                size_t bytesToAllocate = instanceCount * stride;
 
-            ANGLE_TRY(StreamVertexData(contextVk, &mDynamicVertexData, src, bytesToAllocate, 0,
-                                       count, binding.getStride(), vertexFormat.vertexLoadFunction,
-                                       &mCurrentArrayBuffers[attribIndex],
-                                       &mCurrentArrayBufferOffsets[attribIndex]));
+                ANGLE_TRY(StreamVertexData(contextVk, &mDynamicVertexData, src, bytesToAllocate, 0,
+                                           instanceCount, binding.getStride(), stride,
+                                           vertexFormat.vertexLoadFunction,
+                                           &mCurrentArrayBuffers[attribIndex],
+                                           &mCurrentArrayBufferOffsets[attribIndex], divisor));
+                if (bufferVk)
+                {
+                    bufferVk->unmapImpl(contextVk);
+                }
+            }
+            else
+            {
+                ASSERT(binding.getBuffer().get() == nullptr);
+                size_t count           = UnsignedCeilDivide(instanceCount, divisor);
+                size_t bytesToAllocate = count * stride;
+
+                ANGLE_TRY(StreamVertexData(contextVk, &mDynamicVertexData, src, bytesToAllocate, 0,
+                                           count, binding.getStride(), stride,
+                                           vertexFormat.vertexLoadFunction,
+                                           &mCurrentArrayBuffers[attribIndex],
+                                           &mCurrentArrayBufferOffsets[attribIndex], 1));
+            }
         }
         else
         {
+            ASSERT(binding.getBuffer().get() == nullptr);
             // Allocate space for startVertex + vertexCount so indexing will work.  If we don't
             // start at zero all the indices will be off.
             // Only vertexCount vertices will be used by the upcoming draw so that is all we copy.
@@ -593,8 +703,8 @@
 
             ANGLE_TRY(StreamVertexData(
                 contextVk, &mDynamicVertexData, src, bytesToAllocate, destOffset, vertexCount,
-                binding.getStride(), vertexFormat.vertexLoadFunction,
-                &mCurrentArrayBuffers[attribIndex], &mCurrentArrayBufferOffsets[attribIndex]));
+                binding.getStride(), stride, vertexFormat.vertexLoadFunction,
+                &mCurrentArrayBuffers[attribIndex], &mCurrentArrayBufferOffsets[attribIndex], 1));
         }
 
         mCurrentArrayBufferHandles[attribIndex] =
@@ -667,13 +777,14 @@
 void VertexArrayVk::updateDefaultAttrib(ContextVk *contextVk,
                                         size_t attribIndex,
                                         VkBuffer bufferHandle,
+                                        vk::BufferHelper *buffer,
                                         uint32_t offset)
 {
     if (!mState.getEnabledAttributesMask().test(attribIndex))
     {
         mCurrentArrayBufferHandles[attribIndex] = bufferHandle;
         mCurrentArrayBufferOffsets[attribIndex] = offset;
-        mCurrentArrayBuffers[attribIndex]       = nullptr;
+        mCurrentArrayBuffers[attribIndex]       = buffer;
 
         setDefaultPackedInput(contextVk, attribIndex);
     }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.h
index f41ec80..a5af18e 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/VertexArrayVk.h
@@ -35,14 +35,15 @@
     void updateDefaultAttrib(ContextVk *contextVk,
                              size_t attribIndex,
                              VkBuffer bufferHandle,
+                             vk::BufferHelper *buffer,
                              uint32_t offset);
 
-    angle::Result updateClientAttribs(const gl::Context *context,
-                                      GLint firstVertex,
-                                      GLsizei vertexOrIndexCount,
-                                      GLsizei instanceCount,
-                                      gl::DrawElementsType indexTypeOrInvalid,
-                                      const void *indices);
+    angle::Result updateStreamedAttribs(const gl::Context *context,
+                                        GLint firstVertex,
+                                        GLsizei vertexOrIndexCount,
+                                        GLsizei instanceCount,
+                                        gl::DrawElementsType indexTypeOrInvalid,
+                                        const void *indices);
 
     angle::Result handleLineLoop(ContextVk *contextVk,
                                  GLint firstVertex,
@@ -51,6 +52,13 @@
                                  const void *indices,
                                  uint32_t *indexCountOut);
 
+    angle::Result handleLineLoopIndirect(ContextVk *contextVk,
+                                         BufferVk *indirectBufferVk,
+                                         gl::DrawElementsType glIndexType,
+                                         VkDeviceSize indirectBufferOffset,
+                                         vk::BufferHelper **indirectBufferOut,
+                                         VkDeviceSize *indirectBufferOffsetOut);
+
     const gl::AttribArray<VkBuffer> &getCurrentArrayBufferHandles() const
     {
         return mCurrentArrayBufferHandles;
@@ -82,11 +90,21 @@
                                         BufferVk *bufferVk,
                                         const void *indices);
 
+    angle::Result convertIndexBufferIndirectGPU(ContextVk *contextVk,
+                                                BufferVk *cmdBufferVk,
+                                                BufferVk *indexBufferVk,
+                                                const void *indices);
+
     angle::Result convertIndexBufferCPU(ContextVk *contextVk,
                                         gl::DrawElementsType indexType,
                                         size_t indexCount,
                                         const void *sourcePointer);
 
+    const gl::AttributesMask &getStreamingVertexAttribsMask() const
+    {
+        return mStreamingVertexAttribsMask;
+    }
+
   private:
     void setDefaultPackedInput(ContextVk *contextVk, size_t attribIndex);
 
@@ -128,6 +146,9 @@
 
     // Vulkan does not allow binding a null vertex buffer. We use a dummy as a placeholder.
     vk::BufferHelper mTheNullBuffer;
+
+    // Track client and/or emulated attribs that we have to stream their buffer contents
+    gl::AttributesMask mStreamingVertexAttribsMask;
 };
 }  // namespace rx
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp
index a2f2e96..be216c9 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp
@@ -128,7 +128,7 @@
     mImage = new vk::ImageHelper();
     ANGLE_TRY(mImage->initExternal(displayVk, gl::TextureType::_2D, vkExtents, vkFormat, 1, usage,
                                    vk::ImageLayout::ExternalPreInitialized,
-                                   &externalMemoryImageCreateInfo, 1, 1));
+                                   &externalMemoryImageCreateInfo, 0, 0, 1, 1));
 
     VkImportAndroidHardwareBufferInfoANDROID importHardwareBufferInfo = {};
     importHardwareBufferInfo.sType  = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID;
@@ -201,13 +201,12 @@
     return mImage;
 }
 
-void HardwareBufferImageSiblingVkAndroid::release(DisplayVk *display,
-                                                  std::vector<vk::GarbageObjectBase> *garbageQueue)
+void HardwareBufferImageSiblingVkAndroid::release(RendererVk *renderer)
 {
     if (mImage != nullptr)
     {
-        mImage->releaseImage(display, garbageQueue);
-        mImage->releaseStagingBuffer(display, garbageQueue);
+        mImage->releaseImage(renderer);
+        mImage->releaseStagingBuffer(renderer);
         SafeDelete(mImage);
     }
 }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.h
index 029e294..0c9025f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.h
@@ -36,7 +36,7 @@
     // ExternalImageSiblingVk interface
     vk::ImageHelper *getImage() const override;
 
-    void release(DisplayVk *display, std::vector<vk::GarbageObjectBase> *garbageQueue) override;
+    void release(RendererVk *renderer) override;
 
   private:
     angle::Result initImpl(DisplayVk *displayVk);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FastOpenGLStateTransitions.md b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FastOpenGLStateTransitions.md
index afa2f07..e7a0c42 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FastOpenGLStateTransitions.md
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FastOpenGLStateTransitions.md
@@ -13,7 +13,7 @@
 pipeline recompilations are orders of manitude slower than OpenGL state changes.
 
 The second level cache is an ANGLE-owned hash map from OpenGL state vectors to compiled pipelines.
-See [GraphicsPipelineCache][GraphicsPipelineCache] in [vk_cache_utils.h](vk_cache_utils.h). ANGLE's
+See [GraphicsPipelineCache][GraphicsPipelineCache] in [vk_cache_utils.h](../vk_cache_utils.h). ANGLE's
 [GraphicsPipelineDesc][GraphicsPipelineDesc] class is a tightly packed 256-byte description of the
 current OpenGL rendering state. We also use a [xxHash](https://github.com/Cyan4973/xxHash) for the
 fastest possible hash computation. The hash map speeds up state changes considerably. But it is
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FormatTablesAndEmulation.md b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FormatTablesAndEmulation.md
index 7b0bdc6..624078c 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FormatTablesAndEmulation.md
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/FormatTablesAndEmulation.md
@@ -18,14 +18,14 @@
 ## The Vulkan Format Table
 
 Overrides and fallbacks are implemented in ANGLE's [Vulkan format
-table][vk_format_table_autogen.cpp]. The table is auto-generated by
-[`gen_vk_format_table.py`](gen_vk_format_table.py). We store the mapping from
-[`angle::Format::ID`](../FormatID_autogen.h) to [VkFormat][VkFormat] in
-[`vk_format_map.json`](vk_format_map.json). The format map also lists the overrides and fallbacks.
+table][../vk_format_table_autogen.cpp]. The table is auto-generated by
+[`gen_vk_format_table.py`](../gen_vk_format_table.py). We store the mapping from
+[`angle::Format::ID`](../../FormatID_autogen.h) to [VkFormat][VkFormat] in
+[`vk_format_map.json`](../vk_format_map.json). The format map also lists the overrides and fallbacks.
 To update the tables please modify the format map JSON and then run
 [`scripts/run_code_generation.py`][RunCodeGeneration].
 
-The [`vk::Format`](vk_format_utils.h) class describes the information ANGLE needs for a particular
+The [`vk::Format`](../vk_format_utils.h) class describes the information ANGLE needs for a particular
 `VkFormat`. The 'ANGLE' format ID is a reference to the front-end format. The 'Image' or 'Buffer'
 format are the native Vulkan formats that implement a particular front-end format for `VkImages` and
 `VkBuffers`. For the above example of `R8_UNORM` overriding `L8_UNORM`, `L8_UNORM` is the ANGLE
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/OpenGLLineSegmentRasterization.md b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/OpenGLLineSegmentRasterization.md
index dc2bd60..cfa0a05 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/OpenGLLineSegmentRasterization.md
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/OpenGLLineSegmentRasterization.md
@@ -18,7 +18,7 @@
 spec section 3.4.1 "Basic Line Segment Rasterization" spec for more details. To implement this rule
 we inject a small computation to test if a pixel falls within the diamond in the start of the pixel
 shader. If the pixel fails the diamond test we discard the fragment. Note that we only perform this
-test when drawing lines. See the section on [Shader Compilation](#shader-module-compilation) for
+test when drawing lines. See the section on [Shader Compilation](ShaderModuleCompilation.md) for
 more info. See the below diagram for an illustration of the diamond rule:
 
 ![OpenGL Diamond Rule Example][DiamondRule]
@@ -46,7 +46,8 @@
 code please see [TranslatorVulkan.cpp][TranslatorVulkan.cpp] under
 `AddLineSegmentRasterizationEmulation`.
 
-[VulkanLineRaster]: https://www.khronos.org/registry/vulkan/specs/1.1/html/chap24.html#primsrast-lines-basic
 [Bresenham]: https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm
-[VulkanVsGLLineRaster]: img/LineRasterComparison.gif
 [DiamondRule]: img/LineRasterPixelExample.png
+[TranslatorVulkan.cpp]: https://chromium.googlesource.com/angle/angle/+/refs/heads/master/src/compiler/translator/TranslatorVulkan.cpp
+[VulkanLineRaster]: https://www.khronos.org/registry/vulkan/specs/1.1/html/chap24.html#primsrast-lines-basic
+[VulkanVsGLLineRaster]: img/LineRasterComparison.gif
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/ShaderModuleCompilation.md b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/ShaderModuleCompilation.md
index d149ab1..b718180 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/ShaderModuleCompilation.md
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/doc/ShaderModuleCompilation.md
@@ -8,7 +8,7 @@
 GLSL. Vulkan-compatible GLSL matches the [GL_KHR_vulkan_glsl][GL_KHR_vulkan_glsl] extension spec
 with some additional workarounds and emulation. We emulate OpenGL's different depth range, viewport
 y flipping, default uniforms, and OpenGL [line segment
-rasterization](#opengl-line-segment-rasterization). For more info see
+rasterization](OpenGLLineSegmentRasterization.md). For more info see
 [TranslatorVulkan.cpp][TranslatorVulkan.cpp]. After initial compilation the shaders are not
 complete. They are templated with markers that are filled in later at link time.
 
@@ -16,7 +16,7 @@
 necessary locations and properties to write to connect the shader stage interfaces. We get the
 completed shader source using ANGLE's [GlslangWrapper][GlslangWrapper.cpp] helper class. We still
 cannot generate `VkShaderModules` since some ANGLE features like [OpenGL line
-rasterization](#opengl-line-segment-rasterization) emulation depend on draw-time information.
+rasterization](OpenGLLineSegmentRasterization.md) emulation depend on draw-time information.
 
 1. **Draw-time SPIR-V Generation**: Once the application records a draw call we use Khronos'
 [glslang][glslang] to convert the Vulkan-compatible GLSL into SPIR-V with the correct draw-time
@@ -74,10 +74,10 @@
 
 ![Vulkan Shader Translation Flow](https://raw.githubusercontent.com/google/angle/master/src/libANGLE/renderer/vulkan/doc/img/VulkanShaderTranslation.svg?sanitize=true)
 
-[VkShaderModule]: https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkShaderModule.html
-[translator]: https://chromium.googlesource.com/angle/angle/+/refs/heads/master/src/compiler/translator/
 [GL_KHR_vulkan_glsl]: https://github.com/KhronosGroup/GLSL/blob/master/extensions/khr/GL_KHR_vulkan_glsl.txt
-[TranslatorVulkan.cpp]: https://chromium.googlesource.com/angle/angle/+/refs/heads/master/src/compiler/translator/TranslatorVulkan.cpp
 [glslang]: https://github.com/KhronosGroup/glslang
 [GlslangWrapper.cpp]: https://chromium.googlesource.com/angle/angle/+/refs/heads/master/src/libANGLE/renderer/vulkan/GlslangWrapper.cpp
 [SPIRV-Tools]: https://github.com/KhronosGroup/SPIRV-Tools
+[translator]: https://chromium.googlesource.com/angle/angle/+/refs/heads/master/src/compiler/translator/
+[TranslatorVulkan.cpp]: https://chromium.googlesource.com/angle/angle/+/refs/heads/master/src/compiler/translator/TranslatorVulkan.cpp
+[VkShaderModule]: https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkShaderModule.html
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py
index bd971f3..6f411a6 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py
@@ -596,7 +596,7 @@
 
 
 def shader_path(shader):
-    return '"src/libANGLE/renderer/vulkan/%s"' % slash(shader)
+    return '"%s"' % slash(shader)
 
 
 def main():
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc
index 9e49172..5a8d5fe 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc
@@ -1,9 +1,9 @@
 	// 7.12.3226
 	 #pragma once
 const uint32_t kConvertIndex_comp_00000000[] = {
-	0x07230203,0x00010000,0x00080007,0x0000007d,0x00000000,0x00020011,0x00000001,0x0006000b,
+	0x07230203,0x00010000,0x00080007,0x00000089,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
-	0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000041,0x00060010,0x00000004,
+	0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000048,0x00060010,0x00000004,
 	0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,
 	0x00000004,0x6e69616d,0x00000000,0x00060005,0x0000000a,0x6c6c7550,0x65646e49,0x31752878,
 	0x0000003b,0x00040005,0x00000009,0x65646e69,0x00000078,0x00090005,0x00000010,0x6b636150,
@@ -17,77 +17,86 @@
 	0x00000000,0x00030005,0x00000016,0x00000000,0x00050005,0x0000001d,0x42637273,0x6b636f6c,
 	0x00000000,0x00030005,0x0000001f,0x00637273,0x00050006,0x0000001f,0x00000000,0x44637273,
 	0x00617461,0x00030005,0x00000021,0x00000000,0x00060005,0x00000028,0x43637273,0x6f706d6f,
-	0x746e656e,0x00000000,0x00040005,0x0000002c,0x756c6176,0x00000065,0x00040005,0x0000003e,
-	0x65646e69,0x00000078,0x00080005,0x00000041,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,
-	0x496e6f69,0x00000044,0x00050005,0x00000050,0x56747364,0x65756c61,0x00000000,0x00050005,
-	0x00000051,0x56637273,0x65756c61,0x00000000,0x00040005,0x00000052,0x61726170,0x0000006d,
-	0x00040005,0x00000055,0x61726170,0x0000006d,0x00040005,0x00000057,0x61726170,0x0000006d,
-	0x00040005,0x00000058,0x61726170,0x0000006d,0x00050005,0x00000064,0x56637273,0x65756c61,
-	0x00000000,0x00040005,0x00000067,0x61726170,0x0000006d,0x00040005,0x00000069,0x61726170,
-	0x0000006d,0x00040005,0x0000006b,0x61726170,0x0000006d,0x00040005,0x0000006c,0x61726170,
-	0x0000006d,0x00030005,0x00000071,0x00747364,0x00050006,0x00000071,0x00000000,0x44747364,
-	0x00617461,0x00030005,0x00000073,0x00000000,0x00050048,0x00000014,0x00000000,0x00000023,
-	0x00000000,0x00050048,0x00000014,0x00000001,0x00000023,0x00000004,0x00050048,0x00000014,
-	0x00000002,0x00000023,0x00000008,0x00050048,0x00000014,0x00000003,0x00000023,0x0000000c,
-	0x00030047,0x00000014,0x00000002,0x00040047,0x0000001e,0x00000006,0x00000004,0x00040048,
-	0x0000001f,0x00000000,0x00000018,0x00050048,0x0000001f,0x00000000,0x00000023,0x00000000,
-	0x00030047,0x0000001f,0x00000003,0x00040047,0x00000021,0x00000022,0x00000000,0x00040047,
-	0x00000021,0x00000021,0x00000001,0x00040047,0x00000041,0x0000000b,0x0000001c,0x00040047,
-	0x00000070,0x00000006,0x00000004,0x00050048,0x00000071,0x00000000,0x00000023,0x00000000,
-	0x00030047,0x00000071,0x00000003,0x00040047,0x00000073,0x00000022,0x00000000,0x00040047,
-	0x00000073,0x00000021,0x00000000,0x00040047,0x0000007c,0x0000000b,0x00000019,0x00020013,
-	0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000,
-	0x00040020,0x00000007,0x00000007,0x00000006,0x00040021,0x00000008,0x00000006,0x00000007,
-	0x00060021,0x0000000c,0x00000002,0x00000007,0x00000007,0x00000007,0x0006001e,0x00000014,
-	0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000015,0x00000009,0x00000014,
-	0x0004003b,0x00000015,0x00000016,0x00000009,0x00040015,0x00000017,0x00000020,0x00000001,
-	0x0004002b,0x00000017,0x00000018,0x00000000,0x00040020,0x00000019,0x00000009,0x00000006,
-	0x0003001d,0x0000001e,0x00000006,0x0003001e,0x0000001f,0x0000001e,0x00040020,0x00000020,
-	0x00000002,0x0000001f,0x0004003b,0x00000020,0x00000021,0x00000002,0x0004002b,0x00000017,
-	0x00000023,0x00000002,0x00040020,0x00000025,0x00000002,0x00000006,0x0004002b,0x00000006,
-	0x0000002a,0x00000003,0x0004002b,0x00000017,0x0000002f,0x00000003,0x0004002b,0x00000006,
-	0x00000032,0x000000ff,0x0004002b,0x00000017,0x00000039,0x00000004,0x00040017,0x0000003f,
-	0x00000006,0x00000003,0x00040020,0x00000040,0x00000001,0x0000003f,0x0004003b,0x00000040,
-	0x00000041,0x00000001,0x0004002b,0x00000006,0x00000042,0x00000000,0x00040020,0x00000043,
-	0x00000001,0x00000006,0x0004002b,0x00000017,0x00000046,0x00000001,0x00020014,0x0000004b,
-	0x0004002b,0x00000006,0x0000005d,0x00000001,0x0003001d,0x00000070,0x00000006,0x0003001e,
-	0x00000071,0x00000070,0x00040020,0x00000072,0x00000002,0x00000071,0x0004003b,0x00000072,
-	0x00000073,0x00000002,0x0004002b,0x00000006,0x0000007b,0x00000040,0x0006002c,0x0000003f,
-	0x0000007c,0x0000007b,0x0000005d,0x0000005d,0x00050036,0x00000002,0x00000004,0x00000000,
-	0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x0000003e,0x00000007,0x0004003b,
-	0x00000007,0x00000050,0x00000007,0x0004003b,0x00000007,0x00000051,0x00000007,0x0004003b,
-	0x00000007,0x00000052,0x00000007,0x0004003b,0x00000007,0x00000055,0x00000007,0x0004003b,
-	0x00000007,0x00000057,0x00000007,0x0004003b,0x00000007,0x00000058,0x00000007,0x0004003b,
-	0x00000007,0x00000064,0x00000007,0x0004003b,0x00000007,0x00000067,0x00000007,0x0004003b,
-	0x00000007,0x00000069,0x00000007,0x0004003b,0x00000007,0x0000006b,0x00000007,0x0004003b,
-	0x00000007,0x0000006c,0x00000007,0x00050041,0x00000043,0x00000044,0x00000041,0x00000042,
-	0x0004003d,0x00000006,0x00000045,0x00000044,0x000500c4,0x00000006,0x00000047,0x00000045,
-	0x00000046,0x0003003e,0x0000003e,0x00000047,0x0004003d,0x00000006,0x00000048,0x0000003e,
-	0x00050041,0x00000019,0x00000049,0x00000016,0x00000023,0x0004003d,0x00000006,0x0000004a,
-	0x00000049,0x000500ae,0x0000004b,0x0000004c,0x00000048,0x0000004a,0x000300f7,0x0000004e,
-	0x00000000,0x000400fa,0x0000004c,0x0000004d,0x0000004e,0x000200f8,0x0000004d,0x000100fd,
-	0x000200f8,0x0000004e,0x0003003e,0x00000050,0x00000042,0x0004003d,0x00000006,0x00000053,
-	0x0000003e,0x0003003e,0x00000052,0x00000053,0x00050039,0x00000006,0x00000054,0x0000000a,
-	0x00000052,0x0003003e,0x00000051,0x00000054,0x0004003d,0x00000006,0x00000056,0x00000051,
-	0x0003003e,0x00000055,0x00000056,0x0003003e,0x00000057,0x00000042,0x0004003d,0x00000006,
-	0x00000059,0x00000050,0x0003003e,0x00000058,0x00000059,0x00070039,0x00000002,0x0000005a,
-	0x00000010,0x00000055,0x00000057,0x00000058,0x0004003d,0x00000006,0x0000005b,0x00000058,
-	0x0003003e,0x00000050,0x0000005b,0x0004003d,0x00000006,0x0000005c,0x0000003e,0x00050080,
-	0x00000006,0x0000005e,0x0000005c,0x0000005d,0x00050041,0x00000019,0x0000005f,0x00000016,
-	0x00000023,0x0004003d,0x00000006,0x00000060,0x0000005f,0x000500b0,0x0000004b,0x00000061,
-	0x0000005e,0x00000060,0x000300f7,0x00000063,0x00000000,0x000400fa,0x00000061,0x00000062,
-	0x00000063,0x000200f8,0x00000062,0x0004003d,0x00000006,0x00000065,0x0000003e,0x00050080,
-	0x00000006,0x00000066,0x00000065,0x0000005d,0x0003003e,0x00000067,0x00000066,0x00050039,
-	0x00000006,0x00000068,0x0000000a,0x00000067,0x0003003e,0x00000064,0x00000068,0x0004003d,
-	0x00000006,0x0000006a,0x00000064,0x0003003e,0x00000069,0x0000006a,0x0003003e,0x0000006b,
-	0x0000005d,0x0004003d,0x00000006,0x0000006d,0x00000050,0x0003003e,0x0000006c,0x0000006d,
-	0x00070039,0x00000002,0x0000006e,0x00000010,0x00000069,0x0000006b,0x0000006c,0x0004003d,
-	0x00000006,0x0000006f,0x0000006c,0x0003003e,0x00000050,0x0000006f,0x000200f9,0x00000063,
-	0x000200f8,0x00000063,0x00050041,0x00000019,0x00000074,0x00000016,0x00000046,0x0004003d,
-	0x00000006,0x00000075,0x00000074,0x00050041,0x00000043,0x00000076,0x00000041,0x00000042,
-	0x0004003d,0x00000006,0x00000077,0x00000076,0x00050080,0x00000006,0x00000078,0x00000075,
-	0x00000077,0x0004003d,0x00000006,0x00000079,0x00000050,0x00060041,0x00000025,0x0000007a,
-	0x00000073,0x00000018,0x00000078,0x0003003e,0x0000007a,0x00000079,0x000100fd,0x00010038,
+	0x746e656e,0x00000000,0x00040005,0x0000002c,0x756c6176,0x00000065,0x00050005,0x0000003e,
+	0x73726966,0x646e4974,0x00007865,0x00050005,0x00000040,0x49646e65,0x7865646e,0x00000000,
+	0x00040005,0x00000045,0x65646e69,0x00000078,0x00080005,0x00000048,0x475f6c67,0x61626f6c,
+	0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005,0x00000058,0x56747364,0x65756c61,
+	0x00000000,0x00050005,0x0000005e,0x56637273,0x65756c61,0x00000000,0x00040005,0x0000005f,
+	0x61726170,0x0000006d,0x00040005,0x00000062,0x61726170,0x0000006d,0x00040005,0x00000064,
+	0x61726170,0x0000006d,0x00040005,0x00000065,0x61726170,0x0000006d,0x00050005,0x00000070,
+	0x56637273,0x65756c61,0x00000000,0x00040005,0x00000073,0x61726170,0x0000006d,0x00040005,
+	0x00000075,0x61726170,0x0000006d,0x00040005,0x00000077,0x61726170,0x0000006d,0x00040005,
+	0x00000078,0x61726170,0x0000006d,0x00030005,0x0000007d,0x00747364,0x00050006,0x0000007d,
+	0x00000000,0x44747364,0x00617461,0x00030005,0x0000007f,0x00000000,0x00050048,0x00000014,
+	0x00000000,0x00000023,0x00000000,0x00050048,0x00000014,0x00000001,0x00000023,0x00000004,
+	0x00050048,0x00000014,0x00000002,0x00000023,0x00000008,0x00050048,0x00000014,0x00000003,
+	0x00000023,0x0000000c,0x00030047,0x00000014,0x00000002,0x00040047,0x0000001e,0x00000006,
+	0x00000004,0x00040048,0x0000001f,0x00000000,0x00000018,0x00050048,0x0000001f,0x00000000,
+	0x00000023,0x00000000,0x00030047,0x0000001f,0x00000003,0x00040047,0x00000021,0x00000022,
+	0x00000000,0x00040047,0x00000021,0x00000021,0x00000001,0x00040047,0x00000048,0x0000000b,
+	0x0000001c,0x00040047,0x0000007c,0x00000006,0x00000004,0x00050048,0x0000007d,0x00000000,
+	0x00000023,0x00000000,0x00030047,0x0000007d,0x00000003,0x00040047,0x0000007f,0x00000022,
+	0x00000000,0x00040047,0x0000007f,0x00000021,0x00000000,0x00040047,0x00000088,0x0000000b,
+	0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,
+	0x00000020,0x00000000,0x00040020,0x00000007,0x00000007,0x00000006,0x00040021,0x00000008,
+	0x00000006,0x00000007,0x00060021,0x0000000c,0x00000002,0x00000007,0x00000007,0x00000007,
+	0x0006001e,0x00000014,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000015,
+	0x00000009,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000009,0x00040015,0x00000017,
+	0x00000020,0x00000001,0x0004002b,0x00000017,0x00000018,0x00000000,0x00040020,0x00000019,
+	0x00000009,0x00000006,0x0003001d,0x0000001e,0x00000006,0x0003001e,0x0000001f,0x0000001e,
+	0x00040020,0x00000020,0x00000002,0x0000001f,0x0004003b,0x00000020,0x00000021,0x00000002,
+	0x0004002b,0x00000017,0x00000023,0x00000002,0x00040020,0x00000025,0x00000002,0x00000006,
+	0x0004002b,0x00000006,0x0000002a,0x00000003,0x0004002b,0x00000017,0x0000002f,0x00000003,
+	0x0004002b,0x00000006,0x00000032,0x000000ff,0x0004002b,0x00000017,0x00000039,0x00000004,
+	0x0004002b,0x00000006,0x0000003f,0x00000000,0x00040017,0x00000046,0x00000006,0x00000003,
+	0x00040020,0x00000047,0x00000001,0x00000046,0x0004003b,0x00000047,0x00000048,0x00000001,
+	0x00040020,0x00000049,0x00000001,0x00000006,0x0004002b,0x00000017,0x0000004d,0x00000001,
+	0x00020014,0x00000053,0x0004002b,0x00000006,0x0000006a,0x00000001,0x0003001d,0x0000007c,
+	0x00000006,0x0003001e,0x0000007d,0x0000007c,0x00040020,0x0000007e,0x00000002,0x0000007d,
+	0x0004003b,0x0000007e,0x0000007f,0x00000002,0x0004002b,0x00000006,0x00000087,0x00000040,
+	0x0006002c,0x00000046,0x00000088,0x00000087,0x0000006a,0x0000006a,0x00050036,0x00000002,
+	0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x0000003e,
+	0x00000007,0x0004003b,0x00000007,0x00000040,0x00000007,0x0004003b,0x00000007,0x00000045,
+	0x00000007,0x0004003b,0x00000007,0x00000058,0x00000007,0x0004003b,0x00000007,0x0000005e,
+	0x00000007,0x0004003b,0x00000007,0x0000005f,0x00000007,0x0004003b,0x00000007,0x00000062,
+	0x00000007,0x0004003b,0x00000007,0x00000064,0x00000007,0x0004003b,0x00000007,0x00000065,
+	0x00000007,0x0004003b,0x00000007,0x00000070,0x00000007,0x0004003b,0x00000007,0x00000073,
+	0x00000007,0x0004003b,0x00000007,0x00000075,0x00000007,0x0004003b,0x00000007,0x00000077,
+	0x00000007,0x0004003b,0x00000007,0x00000078,0x00000007,0x0003003e,0x0000003e,0x0000003f,
+	0x0004003d,0x00000006,0x00000041,0x0000003e,0x00050041,0x00000019,0x00000042,0x00000016,
+	0x00000023,0x0004003d,0x00000006,0x00000043,0x00000042,0x00050080,0x00000006,0x00000044,
+	0x00000041,0x00000043,0x0003003e,0x00000040,0x00000044,0x00050041,0x00000049,0x0000004a,
+	0x00000048,0x0000003f,0x0004003d,0x00000006,0x0000004b,0x0000004a,0x0004003d,0x00000006,
+	0x0000004c,0x0000003e,0x000500c2,0x00000006,0x0000004e,0x0000004c,0x0000004d,0x00050080,
+	0x00000006,0x0000004f,0x0000004b,0x0000004e,0x000500c4,0x00000006,0x00000050,0x0000004f,
+	0x0000004d,0x0003003e,0x00000045,0x00000050,0x0004003d,0x00000006,0x00000051,0x00000045,
+	0x0004003d,0x00000006,0x00000052,0x00000040,0x000500ae,0x00000053,0x00000054,0x00000051,
+	0x00000052,0x000300f7,0x00000056,0x00000000,0x000400fa,0x00000054,0x00000055,0x00000056,
+	0x000200f8,0x00000055,0x000100fd,0x000200f8,0x00000056,0x0003003e,0x00000058,0x0000003f,
+	0x0004003d,0x00000006,0x00000059,0x00000045,0x0004003d,0x00000006,0x0000005a,0x0000003e,
+	0x000500ae,0x00000053,0x0000005b,0x00000059,0x0000005a,0x000300f7,0x0000005d,0x00000000,
+	0x000400fa,0x0000005b,0x0000005c,0x0000005d,0x000200f8,0x0000005c,0x0004003d,0x00000006,
+	0x00000060,0x00000045,0x0003003e,0x0000005f,0x00000060,0x00050039,0x00000006,0x00000061,
+	0x0000000a,0x0000005f,0x0003003e,0x0000005e,0x00000061,0x0004003d,0x00000006,0x00000063,
+	0x0000005e,0x0003003e,0x00000062,0x00000063,0x0003003e,0x00000064,0x0000003f,0x0004003d,
+	0x00000006,0x00000066,0x00000058,0x0003003e,0x00000065,0x00000066,0x00070039,0x00000002,
+	0x00000067,0x00000010,0x00000062,0x00000064,0x00000065,0x0004003d,0x00000006,0x00000068,
+	0x00000065,0x0003003e,0x00000058,0x00000068,0x000200f9,0x0000005d,0x000200f8,0x0000005d,
+	0x0004003d,0x00000006,0x00000069,0x00000045,0x00050080,0x00000006,0x0000006b,0x00000069,
+	0x0000006a,0x0004003d,0x00000006,0x0000006c,0x00000040,0x000500b0,0x00000053,0x0000006d,
+	0x0000006b,0x0000006c,0x000300f7,0x0000006f,0x00000000,0x000400fa,0x0000006d,0x0000006e,
+	0x0000006f,0x000200f8,0x0000006e,0x0004003d,0x00000006,0x00000071,0x00000045,0x00050080,
+	0x00000006,0x00000072,0x00000071,0x0000006a,0x0003003e,0x00000073,0x00000072,0x00050039,
+	0x00000006,0x00000074,0x0000000a,0x00000073,0x0003003e,0x00000070,0x00000074,0x0004003d,
+	0x00000006,0x00000076,0x00000070,0x0003003e,0x00000075,0x00000076,0x0003003e,0x00000077,
+	0x0000006a,0x0004003d,0x00000006,0x00000079,0x00000058,0x0003003e,0x00000078,0x00000079,
+	0x00070039,0x00000002,0x0000007a,0x00000010,0x00000075,0x00000077,0x00000078,0x0004003d,
+	0x00000006,0x0000007b,0x00000078,0x0003003e,0x00000058,0x0000007b,0x000200f9,0x0000006f,
+	0x000200f8,0x0000006f,0x00050041,0x00000019,0x00000080,0x00000016,0x0000004d,0x0004003d,
+	0x00000006,0x00000081,0x00000080,0x00050041,0x00000049,0x00000082,0x00000048,0x0000003f,
+	0x0004003d,0x00000006,0x00000083,0x00000082,0x00050080,0x00000006,0x00000084,0x00000081,
+	0x00000083,0x0004003d,0x00000006,0x00000085,0x00000058,0x00060041,0x00000025,0x00000086,
+	0x0000007f,0x00000018,0x00000084,0x0003003e,0x00000086,0x00000085,0x000100fd,0x00010038,
 	0x00050036,0x00000006,0x0000000a,0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,
 	0x000200f8,0x0000000b,0x0004003b,0x00000007,0x00000012,0x00000007,0x0004003b,0x00000007,
 	0x0000001d,0x00000007,0x0004003b,0x00000007,0x00000028,0x00000007,0x0004003b,0x00000007,
@@ -143,7 +152,9 @@
 //
 // uint PullIndex(uint index)
 // {
+//
 //     uint srcIndex = index + srcOffset;
+//
 //     uint srcBlock = srcData[srcIndex >> 2];
 //     uint srcComponent =(srcIndex & 3);
 //
@@ -161,17 +172,23 @@
 // void main()
 // {
 //
-//     uint index =(gl_GlobalInvocationID . x << 1);
+//     uint firstIndex = 0;
+//     uint endIndex = firstIndex + maxIndex;
 //
-//     if(index >= maxIndex)
+//     uint index =((gl_GlobalInvocationID . x +(firstIndex >> 1))<< 1);
+//
+//     if(index >= endIndex)
 //         return;
 //
 //     uint dstValue = 0;
 //
-//     uint srcValue = PullIndex(index);
-//     PackIndexValue(srcValue, 0, dstValue);
+//     if(index >= firstIndex)
+//     {
+//         uint srcValue = PullIndex(index);
+//         PackIndexValue(srcValue, 0, dstValue);
+//     }
 //
-//     if(index + 1 < maxIndex)
+//     if(index + 1 < endIndex)
 //     {
 //         uint srcValue = PullIndex(index + 1);
 //         PackIndexValue(srcValue, 1, dstValue);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc
index 64e264b..6303275 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc
@@ -1,9 +1,9 @@
 	// 7.12.3226
 	 #pragma once
 const uint32_t kConvertIndex_comp_00000001[] = {
-	0x07230203,0x00010000,0x00080007,0x00000082,0x00000000,0x00020011,0x00000001,0x0006000b,
+	0x07230203,0x00010000,0x00080007,0x0000008e,0x00000000,0x00020011,0x00000001,0x0006000b,
 	0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
-	0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000047,0x00060010,0x00000004,
+	0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000004e,0x00060010,0x00000004,
 	0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,0x000001c2,0x00040005,
 	0x00000004,0x6e69616d,0x00000000,0x00060005,0x0000000a,0x6c6c7550,0x65646e49,0x31752878,
 	0x0000003b,0x00040005,0x00000009,0x65646e69,0x00000078,0x00090005,0x00000010,0x6b636150,
@@ -17,78 +17,87 @@
 	0x00000000,0x00030005,0x00000016,0x00000000,0x00050005,0x0000001d,0x42637273,0x6b636f6c,
 	0x00000000,0x00030005,0x0000001f,0x00637273,0x00050006,0x0000001f,0x00000000,0x44637273,
 	0x00617461,0x00030005,0x00000021,0x00000000,0x00060005,0x00000028,0x43637273,0x6f706d6f,
-	0x746e656e,0x00000000,0x00040005,0x0000002c,0x756c6176,0x00000065,0x00040005,0x00000044,
-	0x65646e69,0x00000078,0x00080005,0x00000047,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,
-	0x496e6f69,0x00000044,0x00050005,0x00000055,0x56747364,0x65756c61,0x00000000,0x00050005,
-	0x00000056,0x56637273,0x65756c61,0x00000000,0x00040005,0x00000057,0x61726170,0x0000006d,
-	0x00040005,0x0000005a,0x61726170,0x0000006d,0x00040005,0x0000005c,0x61726170,0x0000006d,
-	0x00040005,0x0000005d,0x61726170,0x0000006d,0x00050005,0x00000069,0x56637273,0x65756c61,
-	0x00000000,0x00040005,0x0000006c,0x61726170,0x0000006d,0x00040005,0x0000006e,0x61726170,
-	0x0000006d,0x00040005,0x00000070,0x61726170,0x0000006d,0x00040005,0x00000071,0x61726170,
-	0x0000006d,0x00030005,0x00000076,0x00747364,0x00050006,0x00000076,0x00000000,0x44747364,
-	0x00617461,0x00030005,0x00000078,0x00000000,0x00050048,0x00000014,0x00000000,0x00000023,
-	0x00000000,0x00050048,0x00000014,0x00000001,0x00000023,0x00000004,0x00050048,0x00000014,
-	0x00000002,0x00000023,0x00000008,0x00050048,0x00000014,0x00000003,0x00000023,0x0000000c,
-	0x00030047,0x00000014,0x00000002,0x00040047,0x0000001e,0x00000006,0x00000004,0x00040048,
-	0x0000001f,0x00000000,0x00000018,0x00050048,0x0000001f,0x00000000,0x00000023,0x00000000,
-	0x00030047,0x0000001f,0x00000003,0x00040047,0x00000021,0x00000022,0x00000000,0x00040047,
-	0x00000021,0x00000021,0x00000001,0x00040047,0x00000047,0x0000000b,0x0000001c,0x00040047,
-	0x00000075,0x00000006,0x00000004,0x00050048,0x00000076,0x00000000,0x00000023,0x00000000,
-	0x00030047,0x00000076,0x00000003,0x00040047,0x00000078,0x00000022,0x00000000,0x00040047,
-	0x00000078,0x00000021,0x00000000,0x00040047,0x00000081,0x0000000b,0x00000019,0x00020013,
-	0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000,
-	0x00040020,0x00000007,0x00000007,0x00000006,0x00040021,0x00000008,0x00000006,0x00000007,
-	0x00060021,0x0000000c,0x00000002,0x00000007,0x00000007,0x00000007,0x0006001e,0x00000014,
-	0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000015,0x00000009,0x00000014,
-	0x0004003b,0x00000015,0x00000016,0x00000009,0x00040015,0x00000017,0x00000020,0x00000001,
-	0x0004002b,0x00000017,0x00000018,0x00000000,0x00040020,0x00000019,0x00000009,0x00000006,
-	0x0003001d,0x0000001e,0x00000006,0x0003001e,0x0000001f,0x0000001e,0x00040020,0x00000020,
-	0x00000002,0x0000001f,0x0004003b,0x00000020,0x00000021,0x00000002,0x0004002b,0x00000017,
-	0x00000023,0x00000002,0x00040020,0x00000025,0x00000002,0x00000006,0x0004002b,0x00000006,
-	0x0000002a,0x00000003,0x0004002b,0x00000017,0x0000002f,0x00000003,0x0004002b,0x00000006,
-	0x00000032,0x000000ff,0x00020014,0x00000035,0x0004002b,0x00000006,0x00000039,0x0000ffff,
-	0x0004002b,0x00000017,0x0000003f,0x00000004,0x00040017,0x00000045,0x00000006,0x00000003,
-	0x00040020,0x00000046,0x00000001,0x00000045,0x0004003b,0x00000046,0x00000047,0x00000001,
-	0x0004002b,0x00000006,0x00000048,0x00000000,0x00040020,0x00000049,0x00000001,0x00000006,
-	0x0004002b,0x00000017,0x0000004c,0x00000001,0x0004002b,0x00000006,0x00000062,0x00000001,
-	0x0003001d,0x00000075,0x00000006,0x0003001e,0x00000076,0x00000075,0x00040020,0x00000077,
-	0x00000002,0x00000076,0x0004003b,0x00000077,0x00000078,0x00000002,0x0004002b,0x00000006,
-	0x00000080,0x00000040,0x0006002c,0x00000045,0x00000081,0x00000080,0x00000062,0x00000062,
-	0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
-	0x00000007,0x00000044,0x00000007,0x0004003b,0x00000007,0x00000055,0x00000007,0x0004003b,
-	0x00000007,0x00000056,0x00000007,0x0004003b,0x00000007,0x00000057,0x00000007,0x0004003b,
-	0x00000007,0x0000005a,0x00000007,0x0004003b,0x00000007,0x0000005c,0x00000007,0x0004003b,
-	0x00000007,0x0000005d,0x00000007,0x0004003b,0x00000007,0x00000069,0x00000007,0x0004003b,
-	0x00000007,0x0000006c,0x00000007,0x0004003b,0x00000007,0x0000006e,0x00000007,0x0004003b,
-	0x00000007,0x00000070,0x00000007,0x0004003b,0x00000007,0x00000071,0x00000007,0x00050041,
-	0x00000049,0x0000004a,0x00000047,0x00000048,0x0004003d,0x00000006,0x0000004b,0x0000004a,
-	0x000500c4,0x00000006,0x0000004d,0x0000004b,0x0000004c,0x0003003e,0x00000044,0x0000004d,
-	0x0004003d,0x00000006,0x0000004e,0x00000044,0x00050041,0x00000019,0x0000004f,0x00000016,
-	0x00000023,0x0004003d,0x00000006,0x00000050,0x0000004f,0x000500ae,0x00000035,0x00000051,
-	0x0000004e,0x00000050,0x000300f7,0x00000053,0x00000000,0x000400fa,0x00000051,0x00000052,
-	0x00000053,0x000200f8,0x00000052,0x000100fd,0x000200f8,0x00000053,0x0003003e,0x00000055,
-	0x00000048,0x0004003d,0x00000006,0x00000058,0x00000044,0x0003003e,0x00000057,0x00000058,
-	0x00050039,0x00000006,0x00000059,0x0000000a,0x00000057,0x0003003e,0x00000056,0x00000059,
-	0x0004003d,0x00000006,0x0000005b,0x00000056,0x0003003e,0x0000005a,0x0000005b,0x0003003e,
-	0x0000005c,0x00000048,0x0004003d,0x00000006,0x0000005e,0x00000055,0x0003003e,0x0000005d,
-	0x0000005e,0x00070039,0x00000002,0x0000005f,0x00000010,0x0000005a,0x0000005c,0x0000005d,
-	0x0004003d,0x00000006,0x00000060,0x0000005d,0x0003003e,0x00000055,0x00000060,0x0004003d,
-	0x00000006,0x00000061,0x00000044,0x00050080,0x00000006,0x00000063,0x00000061,0x00000062,
-	0x00050041,0x00000019,0x00000064,0x00000016,0x00000023,0x0004003d,0x00000006,0x00000065,
-	0x00000064,0x000500b0,0x00000035,0x00000066,0x00000063,0x00000065,0x000300f7,0x00000068,
-	0x00000000,0x000400fa,0x00000066,0x00000067,0x00000068,0x000200f8,0x00000067,0x0004003d,
-	0x00000006,0x0000006a,0x00000044,0x00050080,0x00000006,0x0000006b,0x0000006a,0x00000062,
-	0x0003003e,0x0000006c,0x0000006b,0x00050039,0x00000006,0x0000006d,0x0000000a,0x0000006c,
-	0x0003003e,0x00000069,0x0000006d,0x0004003d,0x00000006,0x0000006f,0x00000069,0x0003003e,
-	0x0000006e,0x0000006f,0x0003003e,0x00000070,0x00000062,0x0004003d,0x00000006,0x00000072,
-	0x00000055,0x0003003e,0x00000071,0x00000072,0x00070039,0x00000002,0x00000073,0x00000010,
-	0x0000006e,0x00000070,0x00000071,0x0004003d,0x00000006,0x00000074,0x00000071,0x0003003e,
-	0x00000055,0x00000074,0x000200f9,0x00000068,0x000200f8,0x00000068,0x00050041,0x00000019,
-	0x00000079,0x00000016,0x0000004c,0x0004003d,0x00000006,0x0000007a,0x00000079,0x00050041,
-	0x00000049,0x0000007b,0x00000047,0x00000048,0x0004003d,0x00000006,0x0000007c,0x0000007b,
-	0x00050080,0x00000006,0x0000007d,0x0000007a,0x0000007c,0x0004003d,0x00000006,0x0000007e,
-	0x00000055,0x00060041,0x00000025,0x0000007f,0x00000078,0x00000018,0x0000007d,0x0003003e,
-	0x0000007f,0x0000007e,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000a,0x00000000,
+	0x746e656e,0x00000000,0x00040005,0x0000002c,0x756c6176,0x00000065,0x00050005,0x00000044,
+	0x73726966,0x646e4974,0x00007865,0x00050005,0x00000046,0x49646e65,0x7865646e,0x00000000,
+	0x00040005,0x0000004b,0x65646e69,0x00000078,0x00080005,0x0000004e,0x475f6c67,0x61626f6c,
+	0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00050005,0x0000005d,0x56747364,0x65756c61,
+	0x00000000,0x00050005,0x00000063,0x56637273,0x65756c61,0x00000000,0x00040005,0x00000064,
+	0x61726170,0x0000006d,0x00040005,0x00000067,0x61726170,0x0000006d,0x00040005,0x00000069,
+	0x61726170,0x0000006d,0x00040005,0x0000006a,0x61726170,0x0000006d,0x00050005,0x00000075,
+	0x56637273,0x65756c61,0x00000000,0x00040005,0x00000078,0x61726170,0x0000006d,0x00040005,
+	0x0000007a,0x61726170,0x0000006d,0x00040005,0x0000007c,0x61726170,0x0000006d,0x00040005,
+	0x0000007d,0x61726170,0x0000006d,0x00030005,0x00000082,0x00747364,0x00050006,0x00000082,
+	0x00000000,0x44747364,0x00617461,0x00030005,0x00000084,0x00000000,0x00050048,0x00000014,
+	0x00000000,0x00000023,0x00000000,0x00050048,0x00000014,0x00000001,0x00000023,0x00000004,
+	0x00050048,0x00000014,0x00000002,0x00000023,0x00000008,0x00050048,0x00000014,0x00000003,
+	0x00000023,0x0000000c,0x00030047,0x00000014,0x00000002,0x00040047,0x0000001e,0x00000006,
+	0x00000004,0x00040048,0x0000001f,0x00000000,0x00000018,0x00050048,0x0000001f,0x00000000,
+	0x00000023,0x00000000,0x00030047,0x0000001f,0x00000003,0x00040047,0x00000021,0x00000022,
+	0x00000000,0x00040047,0x00000021,0x00000021,0x00000001,0x00040047,0x0000004e,0x0000000b,
+	0x0000001c,0x00040047,0x00000081,0x00000006,0x00000004,0x00050048,0x00000082,0x00000000,
+	0x00000023,0x00000000,0x00030047,0x00000082,0x00000003,0x00040047,0x00000084,0x00000022,
+	0x00000000,0x00040047,0x00000084,0x00000021,0x00000000,0x00040047,0x0000008d,0x0000000b,
+	0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,0x00000006,
+	0x00000020,0x00000000,0x00040020,0x00000007,0x00000007,0x00000006,0x00040021,0x00000008,
+	0x00000006,0x00000007,0x00060021,0x0000000c,0x00000002,0x00000007,0x00000007,0x00000007,
+	0x0006001e,0x00000014,0x00000006,0x00000006,0x00000006,0x00000006,0x00040020,0x00000015,
+	0x00000009,0x00000014,0x0004003b,0x00000015,0x00000016,0x00000009,0x00040015,0x00000017,
+	0x00000020,0x00000001,0x0004002b,0x00000017,0x00000018,0x00000000,0x00040020,0x00000019,
+	0x00000009,0x00000006,0x0003001d,0x0000001e,0x00000006,0x0003001e,0x0000001f,0x0000001e,
+	0x00040020,0x00000020,0x00000002,0x0000001f,0x0004003b,0x00000020,0x00000021,0x00000002,
+	0x0004002b,0x00000017,0x00000023,0x00000002,0x00040020,0x00000025,0x00000002,0x00000006,
+	0x0004002b,0x00000006,0x0000002a,0x00000003,0x0004002b,0x00000017,0x0000002f,0x00000003,
+	0x0004002b,0x00000006,0x00000032,0x000000ff,0x00020014,0x00000035,0x0004002b,0x00000006,
+	0x00000039,0x0000ffff,0x0004002b,0x00000017,0x0000003f,0x00000004,0x0004002b,0x00000006,
+	0x00000045,0x00000000,0x00040017,0x0000004c,0x00000006,0x00000003,0x00040020,0x0000004d,
+	0x00000001,0x0000004c,0x0004003b,0x0000004d,0x0000004e,0x00000001,0x00040020,0x0000004f,
+	0x00000001,0x00000006,0x0004002b,0x00000017,0x00000053,0x00000001,0x0004002b,0x00000006,
+	0x0000006f,0x00000001,0x0003001d,0x00000081,0x00000006,0x0003001e,0x00000082,0x00000081,
+	0x00040020,0x00000083,0x00000002,0x00000082,0x0004003b,0x00000083,0x00000084,0x00000002,
+	0x0004002b,0x00000006,0x0000008c,0x00000040,0x0006002c,0x0000004c,0x0000008d,0x0000008c,
+	0x0000006f,0x0000006f,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
+	0x00000005,0x0004003b,0x00000007,0x00000044,0x00000007,0x0004003b,0x00000007,0x00000046,
+	0x00000007,0x0004003b,0x00000007,0x0000004b,0x00000007,0x0004003b,0x00000007,0x0000005d,
+	0x00000007,0x0004003b,0x00000007,0x00000063,0x00000007,0x0004003b,0x00000007,0x00000064,
+	0x00000007,0x0004003b,0x00000007,0x00000067,0x00000007,0x0004003b,0x00000007,0x00000069,
+	0x00000007,0x0004003b,0x00000007,0x0000006a,0x00000007,0x0004003b,0x00000007,0x00000075,
+	0x00000007,0x0004003b,0x00000007,0x00000078,0x00000007,0x0004003b,0x00000007,0x0000007a,
+	0x00000007,0x0004003b,0x00000007,0x0000007c,0x00000007,0x0004003b,0x00000007,0x0000007d,
+	0x00000007,0x0003003e,0x00000044,0x00000045,0x0004003d,0x00000006,0x00000047,0x00000044,
+	0x00050041,0x00000019,0x00000048,0x00000016,0x00000023,0x0004003d,0x00000006,0x00000049,
+	0x00000048,0x00050080,0x00000006,0x0000004a,0x00000047,0x00000049,0x0003003e,0x00000046,
+	0x0000004a,0x00050041,0x0000004f,0x00000050,0x0000004e,0x00000045,0x0004003d,0x00000006,
+	0x00000051,0x00000050,0x0004003d,0x00000006,0x00000052,0x00000044,0x000500c2,0x00000006,
+	0x00000054,0x00000052,0x00000053,0x00050080,0x00000006,0x00000055,0x00000051,0x00000054,
+	0x000500c4,0x00000006,0x00000056,0x00000055,0x00000053,0x0003003e,0x0000004b,0x00000056,
+	0x0004003d,0x00000006,0x00000057,0x0000004b,0x0004003d,0x00000006,0x00000058,0x00000046,
+	0x000500ae,0x00000035,0x00000059,0x00000057,0x00000058,0x000300f7,0x0000005b,0x00000000,
+	0x000400fa,0x00000059,0x0000005a,0x0000005b,0x000200f8,0x0000005a,0x000100fd,0x000200f8,
+	0x0000005b,0x0003003e,0x0000005d,0x00000045,0x0004003d,0x00000006,0x0000005e,0x0000004b,
+	0x0004003d,0x00000006,0x0000005f,0x00000044,0x000500ae,0x00000035,0x00000060,0x0000005e,
+	0x0000005f,0x000300f7,0x00000062,0x00000000,0x000400fa,0x00000060,0x00000061,0x00000062,
+	0x000200f8,0x00000061,0x0004003d,0x00000006,0x00000065,0x0000004b,0x0003003e,0x00000064,
+	0x00000065,0x00050039,0x00000006,0x00000066,0x0000000a,0x00000064,0x0003003e,0x00000063,
+	0x00000066,0x0004003d,0x00000006,0x00000068,0x00000063,0x0003003e,0x00000067,0x00000068,
+	0x0003003e,0x00000069,0x00000045,0x0004003d,0x00000006,0x0000006b,0x0000005d,0x0003003e,
+	0x0000006a,0x0000006b,0x00070039,0x00000002,0x0000006c,0x00000010,0x00000067,0x00000069,
+	0x0000006a,0x0004003d,0x00000006,0x0000006d,0x0000006a,0x0003003e,0x0000005d,0x0000006d,
+	0x000200f9,0x00000062,0x000200f8,0x00000062,0x0004003d,0x00000006,0x0000006e,0x0000004b,
+	0x00050080,0x00000006,0x00000070,0x0000006e,0x0000006f,0x0004003d,0x00000006,0x00000071,
+	0x00000046,0x000500b0,0x00000035,0x00000072,0x00000070,0x00000071,0x000300f7,0x00000074,
+	0x00000000,0x000400fa,0x00000072,0x00000073,0x00000074,0x000200f8,0x00000073,0x0004003d,
+	0x00000006,0x00000076,0x0000004b,0x00050080,0x00000006,0x00000077,0x00000076,0x0000006f,
+	0x0003003e,0x00000078,0x00000077,0x00050039,0x00000006,0x00000079,0x0000000a,0x00000078,
+	0x0003003e,0x00000075,0x00000079,0x0004003d,0x00000006,0x0000007b,0x00000075,0x0003003e,
+	0x0000007a,0x0000007b,0x0003003e,0x0000007c,0x0000006f,0x0004003d,0x00000006,0x0000007e,
+	0x0000005d,0x0003003e,0x0000007d,0x0000007e,0x00070039,0x00000002,0x0000007f,0x00000010,
+	0x0000007a,0x0000007c,0x0000007d,0x0004003d,0x00000006,0x00000080,0x0000007d,0x0003003e,
+	0x0000005d,0x00000080,0x000200f9,0x00000074,0x000200f8,0x00000074,0x00050041,0x00000019,
+	0x00000085,0x00000016,0x00000053,0x0004003d,0x00000006,0x00000086,0x00000085,0x00050041,
+	0x0000004f,0x00000087,0x0000004e,0x00000045,0x0004003d,0x00000006,0x00000088,0x00000087,
+	0x00050080,0x00000006,0x00000089,0x00000086,0x00000088,0x0004003d,0x00000006,0x0000008a,
+	0x0000005d,0x00060041,0x00000025,0x0000008b,0x00000084,0x00000018,0x00000089,0x0003003e,
+	0x0000008b,0x0000008a,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000a,0x00000000,
 	0x00000008,0x00030037,0x00000007,0x00000009,0x000200f8,0x0000000b,0x0004003b,0x00000007,
 	0x00000012,0x00000007,0x0004003b,0x00000007,0x0000001d,0x00000007,0x0004003b,0x00000007,
 	0x00000028,0x00000007,0x0004003b,0x00000007,0x0000002c,0x00000007,0x0004003d,0x00000006,
@@ -146,7 +155,9 @@
 //
 // uint PullIndex(uint index)
 // {
+//
 //     uint srcIndex = index + srcOffset;
+//
 //     uint srcBlock = srcData[srcIndex >> 2];
 //     uint srcComponent =(srcIndex & 3);
 //
@@ -167,17 +178,23 @@
 // void main()
 // {
 //
-//     uint index =(gl_GlobalInvocationID . x << 1);
+//     uint firstIndex = 0;
+//     uint endIndex = firstIndex + maxIndex;
 //
-//     if(index >= maxIndex)
+//     uint index =((gl_GlobalInvocationID . x +(firstIndex >> 1))<< 1);
+//
+//     if(index >= endIndex)
 //         return;
 //
 //     uint dstValue = 0;
 //
-//     uint srcValue = PullIndex(index);
-//     PackIndexValue(srcValue, 0, dstValue);
+//     if(index >= firstIndex)
+//     {
+//         uint srcValue = PullIndex(index);
+//         PackIndexValue(srcValue, 0, dstValue);
+//     }
 //
-//     if(index + 1 < maxIndex)
+//     if(index + 1 < endIndex)
 //     {
 //         uint srcValue = PullIndex(index + 1);
 //         PackIndexValue(srcValue, 1, dstValue);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc
index 22bd867..6949cdc 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc
@@ -77,137 +77,138 @@
 	0x00000006,0x0004002b,0x00000006,0x00000076,0x00000020,0x00040020,0x00000078,0x00000007,
 	0x00000028,0x0004002b,0x00000028,0x0000007c,0xffffffff,0x0004002b,0x00000028,0x0000007e,
 	0x00000001,0x00040020,0x0000008e,0x00000007,0x00000052,0x0004002b,0x00000006,0x00000092,
-	0x00000001,0x0004002b,0x00000006,0x00000097,0x00000000,0x0004002b,0x00000011,0x000000aa,
-	0x40000000,0x0004002b,0x00000011,0x000000ae,0x3f800000,0x0003001d,0x000000c0,0x00000006,
-	0x0003001e,0x000000c1,0x000000c0,0x00040020,0x000000c2,0x00000002,0x000000c1,0x0004003b,
-	0x000000c2,0x000000c3,0x00000002,0x00040017,0x000000c4,0x00000006,0x00000003,0x00040020,
-	0x000000c5,0x00000001,0x000000c4,0x0004003b,0x000000c5,0x000000c6,0x00000001,0x00040020,
-	0x000000c7,0x00000001,0x00000006,0x0004002b,0x00000028,0x000000ca,0x00000003,0x0004002b,
-	0x00000006,0x00000103,0x00000040,0x0006002c,0x000000c4,0x00000104,0x00000103,0x00000092,
-	0x00000092,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,
-	0x0004003b,0x00000007,0x000000d9,0x00000007,0x0004003b,0x00000007,0x000000da,0x00000007,
-	0x0004003b,0x00000007,0x000000e2,0x00000007,0x0004003b,0x00000016,0x000000ef,0x00000007,
-	0x0004003b,0x00000007,0x000000f0,0x00000007,0x0004003b,0x00000016,0x000000f3,0x00000007,
-	0x0004003b,0x00000016,0x000000f4,0x00000007,0x0004003b,0x00000007,0x000000f7,0x00000007,
-	0x0004003b,0x00000016,0x000000f9,0x00000007,0x0004003b,0x00000007,0x00000100,0x00000007,
-	0x00050041,0x000000c7,0x000000d1,0x000000c6,0x00000097,0x0004003d,0x00000006,0x000000d2,
-	0x000000d1,0x00050041,0x0000002a,0x000000d3,0x00000027,0x00000063,0x0004003d,0x00000006,
-	0x000000d4,0x000000d3,0x000500ae,0x00000052,0x000000d5,0x000000d2,0x000000d4,0x000300f7,
-	0x000000d7,0x00000000,0x000400fa,0x000000d5,0x000000d6,0x000000d7,0x000200f8,0x000000d6,
-	0x000100fd,0x000200f8,0x000000d7,0x0003003e,0x000000d9,0x00000097,0x0003003e,0x000000da,
-	0x00000097,0x000200f9,0x000000db,0x000200f8,0x000000db,0x000400f6,0x000000dd,0x000000de,
-	0x00000000,0x000200f9,0x000000df,0x000200f8,0x000000df,0x0004003d,0x00000006,0x000000e0,
-	0x000000da,0x000500b0,0x00000052,0x000000e1,0x000000e0,0x00000092,0x000400fa,0x000000e1,
-	0x000000dc,0x000000dd,0x000200f8,0x000000dc,0x00050041,0x000000c7,0x000000e3,0x000000c6,
-	0x00000097,0x0004003d,0x00000006,0x000000e4,0x000000e3,0x00050084,0x00000006,0x000000e5,
-	0x000000e4,0x00000092,0x0004003d,0x00000006,0x000000e6,0x000000da,0x00050080,0x00000006,
-	0x000000e7,0x000000e5,0x000000e6,0x0003003e,0x000000e2,0x000000e7,0x0004003d,0x00000006,
-	0x000000e8,0x000000e2,0x00050041,0x0000002a,0x000000e9,0x00000027,0x0000007e,0x0004003d,
-	0x00000006,0x000000ea,0x000000e9,0x000500ae,0x00000052,0x000000eb,0x000000e8,0x000000ea,
-	0x000300f7,0x000000ed,0x00000000,0x000400fa,0x000000eb,0x000000ec,0x000000ed,0x000200f8,
-	0x000000ec,0x000200f9,0x000000dd,0x000200f8,0x000000ed,0x0004003d,0x00000006,0x000000f1,
-	0x000000e2,0x0003003e,0x000000f0,0x000000f1,0x00050039,0x00000011,0x000000f2,0x00000014,
-	0x000000f0,0x0003003e,0x000000ef,0x000000f2,0x0004003d,0x00000011,0x000000f5,0x000000ef,
-	0x0003003e,0x000000f4,0x000000f5,0x00050039,0x00000011,0x000000f6,0x00000019,0x000000f4,
-	0x0003003e,0x000000f3,0x000000f6,0x0004003d,0x00000006,0x000000f8,0x000000e2,0x0003003e,
-	0x000000f7,0x000000f8,0x0004003d,0x00000011,0x000000fa,0x000000f3,0x0003003e,0x000000f9,
-	0x000000fa,0x00060039,0x00000006,0x000000fb,0x0000001e,0x000000f7,0x000000f9,0x0004003d,
-	0x00000006,0x000000fc,0x000000d9,0x000500c5,0x00000006,0x000000fd,0x000000fc,0x000000fb,
-	0x0003003e,0x000000d9,0x000000fd,0x000200f9,0x000000de,0x000200f8,0x000000de,0x0004003d,
-	0x00000006,0x000000fe,0x000000da,0x00050080,0x00000006,0x000000ff,0x000000fe,0x0000007e,
-	0x0003003e,0x000000da,0x000000ff,0x000200f9,0x000000db,0x000200f8,0x000000dd,0x0004003d,
-	0x00000006,0x00000101,0x000000d9,0x0003003e,0x00000100,0x00000101,0x00050039,0x00000002,
-	0x00000102,0x00000022,0x00000100,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000b,
-	0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,
-	0x000200f8,0x0000000c,0x0004003d,0x00000006,0x00000024,0x00000009,0x00050041,0x0000002a,
-	0x0000002b,0x00000027,0x00000029,0x0004003d,0x00000006,0x0000002c,0x0000002b,0x00050084,
-	0x00000006,0x0000002d,0x00000024,0x0000002c,0x0004003d,0x00000006,0x0000002e,0x0000000a,
-	0x00050041,0x0000002a,0x00000030,0x00000027,0x0000002f,0x0004003d,0x00000006,0x00000031,
-	0x00000030,0x00050084,0x00000006,0x00000032,0x0000002e,0x00000031,0x00050080,0x00000006,
-	0x00000033,0x0000002d,0x00000032,0x00050041,0x0000002a,0x00000035,0x00000027,0x00000034,
-	0x0004003d,0x00000006,0x00000036,0x00000035,0x00050080,0x00000006,0x00000037,0x00000033,
-	0x00000036,0x000200fe,0x00000037,0x00010038,0x00050036,0x00000006,0x0000000f,0x00000000,
-	0x00000008,0x00030037,0x00000007,0x0000000d,0x00030037,0x00000007,0x0000000e,0x000200f8,
-	0x00000010,0x0004003b,0x00000007,0x0000003a,0x00000007,0x0004003d,0x00000006,0x0000003b,
-	0x0000000d,0x00050089,0x00000006,0x0000003d,0x0000003b,0x0000003c,0x00050084,0x00000006,
-	0x0000003f,0x0000003d,0x0000003e,0x0003003e,0x0000003a,0x0000003f,0x0004003d,0x00000006,
-	0x00000040,0x0000003a,0x000200fe,0x00000040,0x00010038,0x00050036,0x00000011,0x00000014,
-	0x00000000,0x00000012,0x00030037,0x00000007,0x00000013,0x000200f8,0x00000015,0x0004003b,
-	0x00000007,0x00000043,0x00000007,0x0004003b,0x00000007,0x00000049,0x00000007,0x0004003b,
-	0x00000007,0x00000058,0x00000007,0x0004003b,0x00000007,0x00000059,0x00000007,0x0004003b,
-	0x00000007,0x0000005b,0x00000007,0x0004003b,0x00000007,0x0000005e,0x00000007,0x0004003b,
-	0x00000007,0x00000069,0x00000007,0x0004003b,0x00000007,0x0000006a,0x00000007,0x0004003b,
-	0x00000007,0x0000006c,0x00000007,0x0004003b,0x00000007,0x00000070,0x00000007,0x0004003b,
-	0x00000007,0x00000074,0x00000007,0x0004003b,0x00000078,0x00000079,0x00000007,0x0004003b,
-	0x00000007,0x00000084,0x00000007,0x0004003b,0x0000008e,0x0000008f,0x00000007,0x0004003b,
-	0x00000007,0x00000099,0x00000007,0x0004003b,0x00000078,0x0000009b,0x00000007,0x0004003b,
-	0x00000078,0x000000a6,0x00000007,0x0004003b,0x00000016,0x000000a9,0x00000007,0x0004003d,
-	0x00000006,0x00000044,0x00000013,0x00050041,0x0000002a,0x00000046,0x00000027,0x00000045,
-	0x0004003d,0x00000006,0x00000047,0x00000046,0x00050086,0x00000006,0x00000048,0x00000044,
-	0x00000047,0x0003003e,0x00000043,0x00000048,0x0004003d,0x00000006,0x0000004a,0x00000013,
-	0x00050041,0x0000002a,0x0000004b,0x00000027,0x00000045,0x0004003d,0x00000006,0x0000004c,
-	0x0000004b,0x00050089,0x00000006,0x0000004d,0x0000004a,0x0000004c,0x0003003e,0x00000049,
-	0x0000004d,0x0004003d,0x00000006,0x0000004e,0x00000049,0x00050041,0x0000002a,0x00000050,
-	0x00000027,0x0000004f,0x0004003d,0x00000006,0x00000051,0x00000050,0x000500ae,0x00000052,
-	0x00000053,0x0000004e,0x00000051,0x000300f7,0x00000055,0x00000000,0x000400fa,0x00000053,
-	0x00000054,0x00000055,0x000200f8,0x00000054,0x000200fe,0x00000056,0x000200f8,0x00000055,
-	0x0004003d,0x00000006,0x0000005a,0x00000043,0x0003003e,0x00000059,0x0000005a,0x0004003d,
-	0x00000006,0x0000005c,0x00000049,0x0003003e,0x0000005b,0x0000005c,0x00060039,0x00000006,
-	0x0000005d,0x0000000b,0x00000059,0x0000005b,0x0003003e,0x00000058,0x0000005d,0x0004003d,
-	0x00000006,0x00000064,0x00000058,0x00050086,0x00000006,0x00000065,0x00000064,0x0000003c,
-	0x00060041,0x00000066,0x00000067,0x00000062,0x00000063,0x00000065,0x0004003d,0x00000006,
-	0x00000068,0x00000067,0x0003003e,0x0000005e,0x00000068,0x0004003d,0x00000006,0x0000006b,
-	0x00000058,0x0003003e,0x0000006a,0x0000006b,0x00050041,0x0000002a,0x0000006d,0x00000027,
-	0x0000002f,0x0004003d,0x00000006,0x0000006e,0x0000006d,0x0003003e,0x0000006c,0x0000006e,
-	0x00060039,0x00000006,0x0000006f,0x0000000f,0x0000006a,0x0000006c,0x0003003e,0x00000069,
-	0x0000006f,0x00050041,0x0000002a,0x00000071,0x00000027,0x0000002f,0x0004003d,0x00000006,
-	0x00000072,0x00000071,0x00050084,0x00000006,0x00000073,0x00000072,0x0000003e,0x0003003e,
-	0x00000070,0x00000073,0x0004003d,0x00000006,0x00000075,0x00000070,0x000500aa,0x00000052,
-	0x00000077,0x00000075,0x00000076,0x000300f7,0x0000007b,0x00000000,0x000400fa,0x00000077,
-	0x0000007a,0x0000007d,0x000200f8,0x0000007a,0x0003003e,0x00000079,0x0000007c,0x000200f9,
-	0x0000007b,0x000200f8,0x0000007d,0x0004003d,0x00000006,0x0000007f,0x00000070,0x000500c4,
-	0x00000028,0x00000080,0x0000007e,0x0000007f,0x00050082,0x00000028,0x00000081,0x00000080,
-	0x0000007e,0x0003003e,0x00000079,0x00000081,0x000200f9,0x0000007b,0x000200f8,0x0000007b,
-	0x0004003d,0x00000028,0x00000082,0x00000079,0x0004007c,0x00000006,0x00000083,0x00000082,
-	0x0003003e,0x00000074,0x00000083,0x0004003d,0x00000006,0x00000085,0x0000005e,0x0004003d,
-	0x00000006,0x00000086,0x00000069,0x000500c2,0x00000006,0x00000087,0x00000085,0x00000086,
-	0x0004003d,0x00000006,0x00000088,0x00000074,0x000500c7,0x00000006,0x00000089,0x00000087,
-	0x00000088,0x0003003e,0x00000084,0x00000089,0x0004003d,0x00000006,0x0000008a,0x00000070,
-	0x000500b0,0x00000052,0x0000008b,0x0000008a,0x00000076,0x000300f7,0x0000008d,0x00000000,
-	0x000400fa,0x0000008b,0x0000008c,0x0000008d,0x000200f8,0x0000008c,0x0004003d,0x00000006,
-	0x00000090,0x00000084,0x0004003d,0x00000006,0x00000091,0x00000070,0x00050082,0x00000006,
-	0x00000093,0x00000091,0x00000092,0x000500c4,0x00000028,0x00000094,0x0000007e,0x00000093,
-	0x0004007c,0x00000006,0x00000095,0x00000094,0x000500c7,0x00000006,0x00000096,0x00000090,
-	0x00000095,0x000500ab,0x00000052,0x00000098,0x00000096,0x00000097,0x0003003e,0x0000008f,
-	0x00000098,0x0004003d,0x00000052,0x0000009a,0x0000008f,0x000300f7,0x0000009d,0x00000000,
-	0x000400fa,0x0000009a,0x0000009c,0x000000a0,0x000200f8,0x0000009c,0x0004003d,0x00000006,
-	0x0000009e,0x00000070,0x000500c4,0x00000028,0x0000009f,0x0000007c,0x0000009e,0x0003003e,
-	0x0000009b,0x0000009f,0x000200f9,0x0000009d,0x000200f8,0x000000a0,0x0003003e,0x0000009b,
-	0x00000063,0x000200f9,0x0000009d,0x000200f8,0x0000009d,0x0004003d,0x00000028,0x000000a1,
-	0x0000009b,0x0004007c,0x00000006,0x000000a2,0x000000a1,0x0003003e,0x00000099,0x000000a2,
-	0x0004003d,0x00000006,0x000000a3,0x00000099,0x0004003d,0x00000006,0x000000a4,0x00000084,
-	0x000500c5,0x00000006,0x000000a5,0x000000a4,0x000000a3,0x0003003e,0x00000084,0x000000a5,
-	0x000200f9,0x0000008d,0x000200f8,0x0000008d,0x0004003d,0x00000006,0x000000a7,0x00000084,
-	0x0004007c,0x00000028,0x000000a8,0x000000a7,0x0003003e,0x000000a6,0x000000a8,0x0004003d,
-	0x00000028,0x000000ab,0x000000a6,0x0004006f,0x00000011,0x000000ac,0x000000ab,0x00050085,
-	0x00000011,0x000000ad,0x000000aa,0x000000ac,0x00050081,0x00000011,0x000000af,0x000000ad,
-	0x000000ae,0x0004003d,0x00000006,0x000000b0,0x00000074,0x00040070,0x00000011,0x000000b1,
-	0x000000b0,0x00050088,0x00000011,0x000000b2,0x000000af,0x000000b1,0x0003003e,0x000000a9,
-	0x000000b2,0x0004003d,0x00000011,0x000000b3,0x000000a9,0x000200fe,0x000000b3,0x00010038,
-	0x00050036,0x00000011,0x00000019,0x00000000,0x00000017,0x00030037,0x00000016,0x00000018,
-	0x000200f8,0x0000001a,0x0004003d,0x00000011,0x000000b6,0x00000018,0x000200fe,0x000000b6,
-	0x00010038,0x00050036,0x00000006,0x0000001e,0x00000000,0x0000001b,0x00030037,0x00000007,
-	0x0000001c,0x00030037,0x00000016,0x0000001d,0x000200f8,0x0000001f,0x0004003b,0x00000007,
-	0x000000b9,0x00000007,0x0004003d,0x00000011,0x000000ba,0x0000001d,0x0004007c,0x00000028,
-	0x000000bb,0x000000ba,0x0004007c,0x00000006,0x000000bc,0x000000bb,0x0003003e,0x000000b9,
-	0x000000bc,0x0004003d,0x00000006,0x000000bd,0x000000b9,0x000200fe,0x000000bd,0x00010038,
-	0x00050036,0x00000002,0x00000022,0x00000000,0x00000020,0x00030037,0x00000007,0x00000021,
-	0x000200f8,0x00000023,0x00050041,0x000000c7,0x000000c8,0x000000c6,0x00000097,0x0004003d,
-	0x00000006,0x000000c9,0x000000c8,0x00050041,0x0000002a,0x000000cb,0x00000027,0x000000ca,
-	0x0004003d,0x00000006,0x000000cc,0x000000cb,0x00050086,0x00000006,0x000000cd,0x000000cc,
-	0x0000003c,0x00050080,0x00000006,0x000000ce,0x000000c9,0x000000cd,0x0004003d,0x00000006,
-	0x000000cf,0x00000021,0x00060041,0x00000066,0x000000d0,0x000000c3,0x00000063,0x000000ce,
-	0x0003003e,0x000000d0,0x000000cf,0x000100fd,0x00010038
+	0x00000001,0x0004002b,0x00000006,0x00000097,0x00000000,0x0004002b,0x00000011,0x000000b1,
+	0xbf800000,0x0003001d,0x000000c0,0x00000006,0x0003001e,0x000000c1,0x000000c0,0x00040020,
+	0x000000c2,0x00000002,0x000000c1,0x0004003b,0x000000c2,0x000000c3,0x00000002,0x00040017,
+	0x000000c4,0x00000006,0x00000003,0x00040020,0x000000c5,0x00000001,0x000000c4,0x0004003b,
+	0x000000c5,0x000000c6,0x00000001,0x00040020,0x000000c7,0x00000001,0x00000006,0x0004002b,
+	0x00000028,0x000000ca,0x00000003,0x0004002b,0x00000006,0x00000103,0x00000040,0x0006002c,
+	0x000000c4,0x00000104,0x00000103,0x00000092,0x00000092,0x00050036,0x00000002,0x00000004,
+	0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x000000d9,0x00000007,
+	0x0004003b,0x00000007,0x000000da,0x00000007,0x0004003b,0x00000007,0x000000e2,0x00000007,
+	0x0004003b,0x00000016,0x000000ef,0x00000007,0x0004003b,0x00000007,0x000000f0,0x00000007,
+	0x0004003b,0x00000016,0x000000f3,0x00000007,0x0004003b,0x00000016,0x000000f4,0x00000007,
+	0x0004003b,0x00000007,0x000000f7,0x00000007,0x0004003b,0x00000016,0x000000f9,0x00000007,
+	0x0004003b,0x00000007,0x00000100,0x00000007,0x00050041,0x000000c7,0x000000d1,0x000000c6,
+	0x00000097,0x0004003d,0x00000006,0x000000d2,0x000000d1,0x00050041,0x0000002a,0x000000d3,
+	0x00000027,0x00000063,0x0004003d,0x00000006,0x000000d4,0x000000d3,0x000500ae,0x00000052,
+	0x000000d5,0x000000d2,0x000000d4,0x000300f7,0x000000d7,0x00000000,0x000400fa,0x000000d5,
+	0x000000d6,0x000000d7,0x000200f8,0x000000d6,0x000100fd,0x000200f8,0x000000d7,0x0003003e,
+	0x000000d9,0x00000097,0x0003003e,0x000000da,0x00000097,0x000200f9,0x000000db,0x000200f8,
+	0x000000db,0x000400f6,0x000000dd,0x000000de,0x00000000,0x000200f9,0x000000df,0x000200f8,
+	0x000000df,0x0004003d,0x00000006,0x000000e0,0x000000da,0x000500b0,0x00000052,0x000000e1,
+	0x000000e0,0x00000092,0x000400fa,0x000000e1,0x000000dc,0x000000dd,0x000200f8,0x000000dc,
+	0x00050041,0x000000c7,0x000000e3,0x000000c6,0x00000097,0x0004003d,0x00000006,0x000000e4,
+	0x000000e3,0x00050084,0x00000006,0x000000e5,0x000000e4,0x00000092,0x0004003d,0x00000006,
+	0x000000e6,0x000000da,0x00050080,0x00000006,0x000000e7,0x000000e5,0x000000e6,0x0003003e,
+	0x000000e2,0x000000e7,0x0004003d,0x00000006,0x000000e8,0x000000e2,0x00050041,0x0000002a,
+	0x000000e9,0x00000027,0x0000007e,0x0004003d,0x00000006,0x000000ea,0x000000e9,0x000500ae,
+	0x00000052,0x000000eb,0x000000e8,0x000000ea,0x000300f7,0x000000ed,0x00000000,0x000400fa,
+	0x000000eb,0x000000ec,0x000000ed,0x000200f8,0x000000ec,0x000200f9,0x000000dd,0x000200f8,
+	0x000000ed,0x0004003d,0x00000006,0x000000f1,0x000000e2,0x0003003e,0x000000f0,0x000000f1,
+	0x00050039,0x00000011,0x000000f2,0x00000014,0x000000f0,0x0003003e,0x000000ef,0x000000f2,
+	0x0004003d,0x00000011,0x000000f5,0x000000ef,0x0003003e,0x000000f4,0x000000f5,0x00050039,
+	0x00000011,0x000000f6,0x00000019,0x000000f4,0x0003003e,0x000000f3,0x000000f6,0x0004003d,
+	0x00000006,0x000000f8,0x000000e2,0x0003003e,0x000000f7,0x000000f8,0x0004003d,0x00000011,
+	0x000000fa,0x000000f3,0x0003003e,0x000000f9,0x000000fa,0x00060039,0x00000006,0x000000fb,
+	0x0000001e,0x000000f7,0x000000f9,0x0004003d,0x00000006,0x000000fc,0x000000d9,0x000500c5,
+	0x00000006,0x000000fd,0x000000fc,0x000000fb,0x0003003e,0x000000d9,0x000000fd,0x000200f9,
+	0x000000de,0x000200f8,0x000000de,0x0004003d,0x00000006,0x000000fe,0x000000da,0x00050080,
+	0x00000006,0x000000ff,0x000000fe,0x0000007e,0x0003003e,0x000000da,0x000000ff,0x000200f9,
+	0x000000db,0x000200f8,0x000000dd,0x0004003d,0x00000006,0x00000101,0x000000d9,0x0003003e,
+	0x00000100,0x00000101,0x00050039,0x00000002,0x00000102,0x00000022,0x00000100,0x000100fd,
+	0x00010038,0x00050036,0x00000006,0x0000000b,0x00000000,0x00000008,0x00030037,0x00000007,
+	0x00000009,0x00030037,0x00000007,0x0000000a,0x000200f8,0x0000000c,0x0004003d,0x00000006,
+	0x00000024,0x00000009,0x00050041,0x0000002a,0x0000002b,0x00000027,0x00000029,0x0004003d,
+	0x00000006,0x0000002c,0x0000002b,0x00050084,0x00000006,0x0000002d,0x00000024,0x0000002c,
+	0x0004003d,0x00000006,0x0000002e,0x0000000a,0x00050041,0x0000002a,0x00000030,0x00000027,
+	0x0000002f,0x0004003d,0x00000006,0x00000031,0x00000030,0x00050084,0x00000006,0x00000032,
+	0x0000002e,0x00000031,0x00050080,0x00000006,0x00000033,0x0000002d,0x00000032,0x00050041,
+	0x0000002a,0x00000035,0x00000027,0x00000034,0x0004003d,0x00000006,0x00000036,0x00000035,
+	0x00050080,0x00000006,0x00000037,0x00000033,0x00000036,0x000200fe,0x00000037,0x00010038,
+	0x00050036,0x00000006,0x0000000f,0x00000000,0x00000008,0x00030037,0x00000007,0x0000000d,
+	0x00030037,0x00000007,0x0000000e,0x000200f8,0x00000010,0x0004003b,0x00000007,0x0000003a,
+	0x00000007,0x0004003d,0x00000006,0x0000003b,0x0000000d,0x00050089,0x00000006,0x0000003d,
+	0x0000003b,0x0000003c,0x00050084,0x00000006,0x0000003f,0x0000003d,0x0000003e,0x0003003e,
+	0x0000003a,0x0000003f,0x0004003d,0x00000006,0x00000040,0x0000003a,0x000200fe,0x00000040,
+	0x00010038,0x00050036,0x00000011,0x00000014,0x00000000,0x00000012,0x00030037,0x00000007,
+	0x00000013,0x000200f8,0x00000015,0x0004003b,0x00000007,0x00000043,0x00000007,0x0004003b,
+	0x00000007,0x00000049,0x00000007,0x0004003b,0x00000007,0x00000058,0x00000007,0x0004003b,
+	0x00000007,0x00000059,0x00000007,0x0004003b,0x00000007,0x0000005b,0x00000007,0x0004003b,
+	0x00000007,0x0000005e,0x00000007,0x0004003b,0x00000007,0x00000069,0x00000007,0x0004003b,
+	0x00000007,0x0000006a,0x00000007,0x0004003b,0x00000007,0x0000006c,0x00000007,0x0004003b,
+	0x00000007,0x00000070,0x00000007,0x0004003b,0x00000007,0x00000074,0x00000007,0x0004003b,
+	0x00000078,0x00000079,0x00000007,0x0004003b,0x00000007,0x00000084,0x00000007,0x0004003b,
+	0x0000008e,0x0000008f,0x00000007,0x0004003b,0x00000007,0x00000099,0x00000007,0x0004003b,
+	0x00000078,0x0000009b,0x00000007,0x0004003b,0x00000078,0x000000a6,0x00000007,0x0004003b,
+	0x00000016,0x000000a9,0x00000007,0x0004003d,0x00000006,0x00000044,0x00000013,0x00050041,
+	0x0000002a,0x00000046,0x00000027,0x00000045,0x0004003d,0x00000006,0x00000047,0x00000046,
+	0x00050086,0x00000006,0x00000048,0x00000044,0x00000047,0x0003003e,0x00000043,0x00000048,
+	0x0004003d,0x00000006,0x0000004a,0x00000013,0x00050041,0x0000002a,0x0000004b,0x00000027,
+	0x00000045,0x0004003d,0x00000006,0x0000004c,0x0000004b,0x00050089,0x00000006,0x0000004d,
+	0x0000004a,0x0000004c,0x0003003e,0x00000049,0x0000004d,0x0004003d,0x00000006,0x0000004e,
+	0x00000049,0x00050041,0x0000002a,0x00000050,0x00000027,0x0000004f,0x0004003d,0x00000006,
+	0x00000051,0x00000050,0x000500ae,0x00000052,0x00000053,0x0000004e,0x00000051,0x000300f7,
+	0x00000055,0x00000000,0x000400fa,0x00000053,0x00000054,0x00000055,0x000200f8,0x00000054,
+	0x000200fe,0x00000056,0x000200f8,0x00000055,0x0004003d,0x00000006,0x0000005a,0x00000043,
+	0x0003003e,0x00000059,0x0000005a,0x0004003d,0x00000006,0x0000005c,0x00000049,0x0003003e,
+	0x0000005b,0x0000005c,0x00060039,0x00000006,0x0000005d,0x0000000b,0x00000059,0x0000005b,
+	0x0003003e,0x00000058,0x0000005d,0x0004003d,0x00000006,0x00000064,0x00000058,0x00050086,
+	0x00000006,0x00000065,0x00000064,0x0000003c,0x00060041,0x00000066,0x00000067,0x00000062,
+	0x00000063,0x00000065,0x0004003d,0x00000006,0x00000068,0x00000067,0x0003003e,0x0000005e,
+	0x00000068,0x0004003d,0x00000006,0x0000006b,0x00000058,0x0003003e,0x0000006a,0x0000006b,
+	0x00050041,0x0000002a,0x0000006d,0x00000027,0x0000002f,0x0004003d,0x00000006,0x0000006e,
+	0x0000006d,0x0003003e,0x0000006c,0x0000006e,0x00060039,0x00000006,0x0000006f,0x0000000f,
+	0x0000006a,0x0000006c,0x0003003e,0x00000069,0x0000006f,0x00050041,0x0000002a,0x00000071,
+	0x00000027,0x0000002f,0x0004003d,0x00000006,0x00000072,0x00000071,0x00050084,0x00000006,
+	0x00000073,0x00000072,0x0000003e,0x0003003e,0x00000070,0x00000073,0x0004003d,0x00000006,
+	0x00000075,0x00000070,0x000500aa,0x00000052,0x00000077,0x00000075,0x00000076,0x000300f7,
+	0x0000007b,0x00000000,0x000400fa,0x00000077,0x0000007a,0x0000007d,0x000200f8,0x0000007a,
+	0x0003003e,0x00000079,0x0000007c,0x000200f9,0x0000007b,0x000200f8,0x0000007d,0x0004003d,
+	0x00000006,0x0000007f,0x00000070,0x000500c4,0x00000028,0x00000080,0x0000007e,0x0000007f,
+	0x00050082,0x00000028,0x00000081,0x00000080,0x0000007e,0x0003003e,0x00000079,0x00000081,
+	0x000200f9,0x0000007b,0x000200f8,0x0000007b,0x0004003d,0x00000028,0x00000082,0x00000079,
+	0x0004007c,0x00000006,0x00000083,0x00000082,0x0003003e,0x00000074,0x00000083,0x0004003d,
+	0x00000006,0x00000085,0x0000005e,0x0004003d,0x00000006,0x00000086,0x00000069,0x000500c2,
+	0x00000006,0x00000087,0x00000085,0x00000086,0x0004003d,0x00000006,0x00000088,0x00000074,
+	0x000500c7,0x00000006,0x00000089,0x00000087,0x00000088,0x0003003e,0x00000084,0x00000089,
+	0x0004003d,0x00000006,0x0000008a,0x00000070,0x000500b0,0x00000052,0x0000008b,0x0000008a,
+	0x00000076,0x000300f7,0x0000008d,0x00000000,0x000400fa,0x0000008b,0x0000008c,0x0000008d,
+	0x000200f8,0x0000008c,0x0004003d,0x00000006,0x00000090,0x00000084,0x0004003d,0x00000006,
+	0x00000091,0x00000070,0x00050082,0x00000006,0x00000093,0x00000091,0x00000092,0x000500c4,
+	0x00000028,0x00000094,0x0000007e,0x00000093,0x0004007c,0x00000006,0x00000095,0x00000094,
+	0x000500c7,0x00000006,0x00000096,0x00000090,0x00000095,0x000500ab,0x00000052,0x00000098,
+	0x00000096,0x00000097,0x0003003e,0x0000008f,0x00000098,0x0004003d,0x00000052,0x0000009a,
+	0x0000008f,0x000300f7,0x0000009d,0x00000000,0x000400fa,0x0000009a,0x0000009c,0x000000a0,
+	0x000200f8,0x0000009c,0x0004003d,0x00000006,0x0000009e,0x00000070,0x000500c4,0x00000028,
+	0x0000009f,0x0000007c,0x0000009e,0x0003003e,0x0000009b,0x0000009f,0x000200f9,0x0000009d,
+	0x000200f8,0x000000a0,0x0003003e,0x0000009b,0x00000063,0x000200f9,0x0000009d,0x000200f8,
+	0x0000009d,0x0004003d,0x00000028,0x000000a1,0x0000009b,0x0004007c,0x00000006,0x000000a2,
+	0x000000a1,0x0003003e,0x00000099,0x000000a2,0x0004003d,0x00000006,0x000000a3,0x00000099,
+	0x0004003d,0x00000006,0x000000a4,0x00000084,0x000500c5,0x00000006,0x000000a5,0x000000a4,
+	0x000000a3,0x0003003e,0x00000084,0x000000a5,0x000200f9,0x0000008d,0x000200f8,0x0000008d,
+	0x0004003d,0x00000006,0x000000a7,0x00000084,0x0004007c,0x00000028,0x000000a8,0x000000a7,
+	0x0003003e,0x000000a6,0x000000a8,0x0004003d,0x00000028,0x000000aa,0x000000a6,0x0004006f,
+	0x00000011,0x000000ab,0x000000aa,0x0004003d,0x00000006,0x000000ac,0x00000074,0x000500c2,
+	0x00000006,0x000000ad,0x000000ac,0x0000007e,0x00040070,0x00000011,0x000000ae,0x000000ad,
+	0x00050088,0x00000011,0x000000af,0x000000ab,0x000000ae,0x0003003e,0x000000a9,0x000000af,
+	0x0004003d,0x00000011,0x000000b0,0x000000a9,0x0007000c,0x00000011,0x000000b2,0x00000001,
+	0x00000028,0x000000b0,0x000000b1,0x0003003e,0x000000a9,0x000000b2,0x0004003d,0x00000011,
+	0x000000b3,0x000000a9,0x000200fe,0x000000b3,0x00010038,0x00050036,0x00000011,0x00000019,
+	0x00000000,0x00000017,0x00030037,0x00000016,0x00000018,0x000200f8,0x0000001a,0x0004003d,
+	0x00000011,0x000000b6,0x00000018,0x000200fe,0x000000b6,0x00010038,0x00050036,0x00000006,
+	0x0000001e,0x00000000,0x0000001b,0x00030037,0x00000007,0x0000001c,0x00030037,0x00000016,
+	0x0000001d,0x000200f8,0x0000001f,0x0004003b,0x00000007,0x000000b9,0x00000007,0x0004003d,
+	0x00000011,0x000000ba,0x0000001d,0x0004007c,0x00000028,0x000000bb,0x000000ba,0x0004007c,
+	0x00000006,0x000000bc,0x000000bb,0x0003003e,0x000000b9,0x000000bc,0x0004003d,0x00000006,
+	0x000000bd,0x000000b9,0x000200fe,0x000000bd,0x00010038,0x00050036,0x00000002,0x00000022,
+	0x00000000,0x00000020,0x00030037,0x00000007,0x00000021,0x000200f8,0x00000023,0x00050041,
+	0x000000c7,0x000000c8,0x000000c6,0x00000097,0x0004003d,0x00000006,0x000000c9,0x000000c8,
+	0x00050041,0x0000002a,0x000000cb,0x00000027,0x000000ca,0x0004003d,0x00000006,0x000000cc,
+	0x000000cb,0x00050086,0x00000006,0x000000cd,0x000000cc,0x0000003c,0x00050080,0x00000006,
+	0x000000ce,0x000000c9,0x000000cd,0x0004003d,0x00000006,0x000000cf,0x00000021,0x00060041,
+	0x00000066,0x000000d0,0x000000c3,0x00000063,0x000000ce,0x0003003e,0x000000d0,0x000000cf,
+	0x000100fd,0x00010038
 };
 
 // Generated from:
@@ -292,7 +293,8 @@
 //         valueAsUint |= signExtension;
 //     }
 //     int valueAsInt = int(valueAsUint);
-//           float value =(2 * float(valueAsInt)+ 1)/ valueMask;
+//           float value = float(valueAsInt)/(valueMask >> 1);
+//     value = max(value, float(- 1));
 //
 //     return value;
 // }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc
index 8d6d525..2266f31 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc
@@ -77,129 +77,129 @@
 	0x00000006,0x0004002b,0x00000006,0x00000076,0x00000020,0x00040020,0x00000078,0x00000007,
 	0x00000028,0x0004002b,0x00000028,0x0000007c,0xffffffff,0x0004002b,0x00000028,0x0000007e,
 	0x00000001,0x00040020,0x0000008e,0x00000007,0x00000052,0x0004002b,0x00000006,0x00000092,
-	0x00000001,0x0004002b,0x00000006,0x00000097,0x00000000,0x0004002b,0x00000011,0x000000aa,
-	0x40000000,0x0004002b,0x00000011,0x000000ae,0x3f800000,0x0003001d,0x000000c0,0x00000006,
-	0x0003001e,0x000000c1,0x000000c0,0x00040020,0x000000c2,0x00000002,0x000000c1,0x0004003b,
-	0x000000c2,0x000000c3,0x00000002,0x00040017,0x000000c4,0x00000006,0x00000003,0x00040020,
-	0x000000c5,0x00000001,0x000000c4,0x0004003b,0x000000c5,0x000000c6,0x00000001,0x00040020,
-	0x000000c7,0x00000001,0x00000006,0x0004002b,0x00000028,0x000000ca,0x00000003,0x0004002b,
-	0x00000006,0x000000f4,0x00000040,0x0006002c,0x000000c4,0x000000f5,0x000000f4,0x00000092,
-	0x00000092,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,
-	0x0004003b,0x00000007,0x000000d1,0x00000007,0x0004003b,0x00000007,0x000000d2,0x00000007,
-	0x0004003b,0x00000007,0x000000da,0x00000007,0x0004003b,0x00000016,0x000000e0,0x00000007,
-	0x0004003b,0x00000007,0x000000e1,0x00000007,0x0004003b,0x00000016,0x000000e4,0x00000007,
-	0x0004003b,0x00000016,0x000000e5,0x00000007,0x0004003b,0x00000007,0x000000e8,0x00000007,
-	0x0004003b,0x00000016,0x000000ea,0x00000007,0x0004003b,0x00000007,0x000000f1,0x00000007,
-	0x0003003e,0x000000d1,0x00000097,0x0003003e,0x000000d2,0x00000097,0x000200f9,0x000000d3,
-	0x000200f8,0x000000d3,0x000400f6,0x000000d5,0x000000d6,0x00000000,0x000200f9,0x000000d7,
-	0x000200f8,0x000000d7,0x0004003d,0x00000006,0x000000d8,0x000000d2,0x000500b0,0x00000052,
-	0x000000d9,0x000000d8,0x00000092,0x000400fa,0x000000d9,0x000000d4,0x000000d5,0x000200f8,
-	0x000000d4,0x00050041,0x000000c7,0x000000db,0x000000c6,0x00000097,0x0004003d,0x00000006,
-	0x000000dc,0x000000db,0x00050084,0x00000006,0x000000dd,0x000000dc,0x00000092,0x0004003d,
-	0x00000006,0x000000de,0x000000d2,0x00050080,0x00000006,0x000000df,0x000000dd,0x000000de,
-	0x0003003e,0x000000da,0x000000df,0x0004003d,0x00000006,0x000000e2,0x000000da,0x0003003e,
-	0x000000e1,0x000000e2,0x00050039,0x00000011,0x000000e3,0x00000014,0x000000e1,0x0003003e,
-	0x000000e0,0x000000e3,0x0004003d,0x00000011,0x000000e6,0x000000e0,0x0003003e,0x000000e5,
-	0x000000e6,0x00050039,0x00000011,0x000000e7,0x00000019,0x000000e5,0x0003003e,0x000000e4,
-	0x000000e7,0x0004003d,0x00000006,0x000000e9,0x000000da,0x0003003e,0x000000e8,0x000000e9,
-	0x0004003d,0x00000011,0x000000eb,0x000000e4,0x0003003e,0x000000ea,0x000000eb,0x00060039,
-	0x00000006,0x000000ec,0x0000001e,0x000000e8,0x000000ea,0x0004003d,0x00000006,0x000000ed,
-	0x000000d1,0x000500c5,0x00000006,0x000000ee,0x000000ed,0x000000ec,0x0003003e,0x000000d1,
-	0x000000ee,0x000200f9,0x000000d6,0x000200f8,0x000000d6,0x0004003d,0x00000006,0x000000ef,
-	0x000000d2,0x00050080,0x00000006,0x000000f0,0x000000ef,0x0000007e,0x0003003e,0x000000d2,
-	0x000000f0,0x000200f9,0x000000d3,0x000200f8,0x000000d5,0x0004003d,0x00000006,0x000000f2,
-	0x000000d1,0x0003003e,0x000000f1,0x000000f2,0x00050039,0x00000002,0x000000f3,0x00000022,
-	0x000000f1,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000b,0x00000000,0x00000008,
-	0x00030037,0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,0x000200f8,0x0000000c,
-	0x0004003d,0x00000006,0x00000024,0x00000009,0x00050041,0x0000002a,0x0000002b,0x00000027,
-	0x00000029,0x0004003d,0x00000006,0x0000002c,0x0000002b,0x00050084,0x00000006,0x0000002d,
-	0x00000024,0x0000002c,0x0004003d,0x00000006,0x0000002e,0x0000000a,0x00050041,0x0000002a,
-	0x00000030,0x00000027,0x0000002f,0x0004003d,0x00000006,0x00000031,0x00000030,0x00050084,
-	0x00000006,0x00000032,0x0000002e,0x00000031,0x00050080,0x00000006,0x00000033,0x0000002d,
-	0x00000032,0x00050041,0x0000002a,0x00000035,0x00000027,0x00000034,0x0004003d,0x00000006,
-	0x00000036,0x00000035,0x00050080,0x00000006,0x00000037,0x00000033,0x00000036,0x000200fe,
-	0x00000037,0x00010038,0x00050036,0x00000006,0x0000000f,0x00000000,0x00000008,0x00030037,
-	0x00000007,0x0000000d,0x00030037,0x00000007,0x0000000e,0x000200f8,0x00000010,0x0004003b,
-	0x00000007,0x0000003a,0x00000007,0x0004003d,0x00000006,0x0000003b,0x0000000d,0x00050089,
-	0x00000006,0x0000003d,0x0000003b,0x0000003c,0x00050084,0x00000006,0x0000003f,0x0000003d,
-	0x0000003e,0x0003003e,0x0000003a,0x0000003f,0x0004003d,0x00000006,0x00000040,0x0000003a,
-	0x000200fe,0x00000040,0x00010038,0x00050036,0x00000011,0x00000014,0x00000000,0x00000012,
-	0x00030037,0x00000007,0x00000013,0x000200f8,0x00000015,0x0004003b,0x00000007,0x00000043,
-	0x00000007,0x0004003b,0x00000007,0x00000049,0x00000007,0x0004003b,0x00000007,0x00000058,
-	0x00000007,0x0004003b,0x00000007,0x00000059,0x00000007,0x0004003b,0x00000007,0x0000005b,
-	0x00000007,0x0004003b,0x00000007,0x0000005e,0x00000007,0x0004003b,0x00000007,0x00000069,
-	0x00000007,0x0004003b,0x00000007,0x0000006a,0x00000007,0x0004003b,0x00000007,0x0000006c,
-	0x00000007,0x0004003b,0x00000007,0x00000070,0x00000007,0x0004003b,0x00000007,0x00000074,
-	0x00000007,0x0004003b,0x00000078,0x00000079,0x00000007,0x0004003b,0x00000007,0x00000084,
-	0x00000007,0x0004003b,0x0000008e,0x0000008f,0x00000007,0x0004003b,0x00000007,0x00000099,
-	0x00000007,0x0004003b,0x00000078,0x0000009b,0x00000007,0x0004003b,0x00000078,0x000000a6,
-	0x00000007,0x0004003b,0x00000016,0x000000a9,0x00000007,0x0004003d,0x00000006,0x00000044,
-	0x00000013,0x00050041,0x0000002a,0x00000046,0x00000027,0x00000045,0x0004003d,0x00000006,
-	0x00000047,0x00000046,0x00050086,0x00000006,0x00000048,0x00000044,0x00000047,0x0003003e,
-	0x00000043,0x00000048,0x0004003d,0x00000006,0x0000004a,0x00000013,0x00050041,0x0000002a,
-	0x0000004b,0x00000027,0x00000045,0x0004003d,0x00000006,0x0000004c,0x0000004b,0x00050089,
-	0x00000006,0x0000004d,0x0000004a,0x0000004c,0x0003003e,0x00000049,0x0000004d,0x0004003d,
-	0x00000006,0x0000004e,0x00000049,0x00050041,0x0000002a,0x00000050,0x00000027,0x0000004f,
-	0x0004003d,0x00000006,0x00000051,0x00000050,0x000500ae,0x00000052,0x00000053,0x0000004e,
-	0x00000051,0x000300f7,0x00000055,0x00000000,0x000400fa,0x00000053,0x00000054,0x00000055,
-	0x000200f8,0x00000054,0x000200fe,0x00000056,0x000200f8,0x00000055,0x0004003d,0x00000006,
-	0x0000005a,0x00000043,0x0003003e,0x00000059,0x0000005a,0x0004003d,0x00000006,0x0000005c,
-	0x00000049,0x0003003e,0x0000005b,0x0000005c,0x00060039,0x00000006,0x0000005d,0x0000000b,
-	0x00000059,0x0000005b,0x0003003e,0x00000058,0x0000005d,0x0004003d,0x00000006,0x00000064,
-	0x00000058,0x00050086,0x00000006,0x00000065,0x00000064,0x0000003c,0x00060041,0x00000066,
-	0x00000067,0x00000062,0x00000063,0x00000065,0x0004003d,0x00000006,0x00000068,0x00000067,
-	0x0003003e,0x0000005e,0x00000068,0x0004003d,0x00000006,0x0000006b,0x00000058,0x0003003e,
-	0x0000006a,0x0000006b,0x00050041,0x0000002a,0x0000006d,0x00000027,0x0000002f,0x0004003d,
-	0x00000006,0x0000006e,0x0000006d,0x0003003e,0x0000006c,0x0000006e,0x00060039,0x00000006,
-	0x0000006f,0x0000000f,0x0000006a,0x0000006c,0x0003003e,0x00000069,0x0000006f,0x00050041,
-	0x0000002a,0x00000071,0x00000027,0x0000002f,0x0004003d,0x00000006,0x00000072,0x00000071,
-	0x00050084,0x00000006,0x00000073,0x00000072,0x0000003e,0x0003003e,0x00000070,0x00000073,
-	0x0004003d,0x00000006,0x00000075,0x00000070,0x000500aa,0x00000052,0x00000077,0x00000075,
-	0x00000076,0x000300f7,0x0000007b,0x00000000,0x000400fa,0x00000077,0x0000007a,0x0000007d,
-	0x000200f8,0x0000007a,0x0003003e,0x00000079,0x0000007c,0x000200f9,0x0000007b,0x000200f8,
-	0x0000007d,0x0004003d,0x00000006,0x0000007f,0x00000070,0x000500c4,0x00000028,0x00000080,
-	0x0000007e,0x0000007f,0x00050082,0x00000028,0x00000081,0x00000080,0x0000007e,0x0003003e,
-	0x00000079,0x00000081,0x000200f9,0x0000007b,0x000200f8,0x0000007b,0x0004003d,0x00000028,
-	0x00000082,0x00000079,0x0004007c,0x00000006,0x00000083,0x00000082,0x0003003e,0x00000074,
-	0x00000083,0x0004003d,0x00000006,0x00000085,0x0000005e,0x0004003d,0x00000006,0x00000086,
-	0x00000069,0x000500c2,0x00000006,0x00000087,0x00000085,0x00000086,0x0004003d,0x00000006,
-	0x00000088,0x00000074,0x000500c7,0x00000006,0x00000089,0x00000087,0x00000088,0x0003003e,
-	0x00000084,0x00000089,0x0004003d,0x00000006,0x0000008a,0x00000070,0x000500b0,0x00000052,
-	0x0000008b,0x0000008a,0x00000076,0x000300f7,0x0000008d,0x00000000,0x000400fa,0x0000008b,
-	0x0000008c,0x0000008d,0x000200f8,0x0000008c,0x0004003d,0x00000006,0x00000090,0x00000084,
-	0x0004003d,0x00000006,0x00000091,0x00000070,0x00050082,0x00000006,0x00000093,0x00000091,
-	0x00000092,0x000500c4,0x00000028,0x00000094,0x0000007e,0x00000093,0x0004007c,0x00000006,
-	0x00000095,0x00000094,0x000500c7,0x00000006,0x00000096,0x00000090,0x00000095,0x000500ab,
-	0x00000052,0x00000098,0x00000096,0x00000097,0x0003003e,0x0000008f,0x00000098,0x0004003d,
-	0x00000052,0x0000009a,0x0000008f,0x000300f7,0x0000009d,0x00000000,0x000400fa,0x0000009a,
-	0x0000009c,0x000000a0,0x000200f8,0x0000009c,0x0004003d,0x00000006,0x0000009e,0x00000070,
-	0x000500c4,0x00000028,0x0000009f,0x0000007c,0x0000009e,0x0003003e,0x0000009b,0x0000009f,
-	0x000200f9,0x0000009d,0x000200f8,0x000000a0,0x0003003e,0x0000009b,0x00000063,0x000200f9,
-	0x0000009d,0x000200f8,0x0000009d,0x0004003d,0x00000028,0x000000a1,0x0000009b,0x0004007c,
-	0x00000006,0x000000a2,0x000000a1,0x0003003e,0x00000099,0x000000a2,0x0004003d,0x00000006,
-	0x000000a3,0x00000099,0x0004003d,0x00000006,0x000000a4,0x00000084,0x000500c5,0x00000006,
-	0x000000a5,0x000000a4,0x000000a3,0x0003003e,0x00000084,0x000000a5,0x000200f9,0x0000008d,
-	0x000200f8,0x0000008d,0x0004003d,0x00000006,0x000000a7,0x00000084,0x0004007c,0x00000028,
-	0x000000a8,0x000000a7,0x0003003e,0x000000a6,0x000000a8,0x0004003d,0x00000028,0x000000ab,
-	0x000000a6,0x0004006f,0x00000011,0x000000ac,0x000000ab,0x00050085,0x00000011,0x000000ad,
-	0x000000aa,0x000000ac,0x00050081,0x00000011,0x000000af,0x000000ad,0x000000ae,0x0004003d,
-	0x00000006,0x000000b0,0x00000074,0x00040070,0x00000011,0x000000b1,0x000000b0,0x00050088,
-	0x00000011,0x000000b2,0x000000af,0x000000b1,0x0003003e,0x000000a9,0x000000b2,0x0004003d,
-	0x00000011,0x000000b3,0x000000a9,0x000200fe,0x000000b3,0x00010038,0x00050036,0x00000011,
-	0x00000019,0x00000000,0x00000017,0x00030037,0x00000016,0x00000018,0x000200f8,0x0000001a,
-	0x0004003d,0x00000011,0x000000b6,0x00000018,0x000200fe,0x000000b6,0x00010038,0x00050036,
-	0x00000006,0x0000001e,0x00000000,0x0000001b,0x00030037,0x00000007,0x0000001c,0x00030037,
-	0x00000016,0x0000001d,0x000200f8,0x0000001f,0x0004003b,0x00000007,0x000000b9,0x00000007,
-	0x0004003d,0x00000011,0x000000ba,0x0000001d,0x0004007c,0x00000028,0x000000bb,0x000000ba,
-	0x0004007c,0x00000006,0x000000bc,0x000000bb,0x0003003e,0x000000b9,0x000000bc,0x0004003d,
-	0x00000006,0x000000bd,0x000000b9,0x000200fe,0x000000bd,0x00010038,0x00050036,0x00000002,
-	0x00000022,0x00000000,0x00000020,0x00030037,0x00000007,0x00000021,0x000200f8,0x00000023,
-	0x00050041,0x000000c7,0x000000c8,0x000000c6,0x00000097,0x0004003d,0x00000006,0x000000c9,
-	0x000000c8,0x00050041,0x0000002a,0x000000cb,0x00000027,0x000000ca,0x0004003d,0x00000006,
-	0x000000cc,0x000000cb,0x00050086,0x00000006,0x000000cd,0x000000cc,0x0000003c,0x00050080,
-	0x00000006,0x000000ce,0x000000c9,0x000000cd,0x0004003d,0x00000006,0x000000cf,0x00000021,
-	0x00060041,0x00000066,0x000000d0,0x000000c3,0x00000063,0x000000ce,0x0003003e,0x000000d0,
-	0x000000cf,0x000100fd,0x00010038
+	0x00000001,0x0004002b,0x00000006,0x00000097,0x00000000,0x0004002b,0x00000011,0x000000b1,
+	0xbf800000,0x0003001d,0x000000c0,0x00000006,0x0003001e,0x000000c1,0x000000c0,0x00040020,
+	0x000000c2,0x00000002,0x000000c1,0x0004003b,0x000000c2,0x000000c3,0x00000002,0x00040017,
+	0x000000c4,0x00000006,0x00000003,0x00040020,0x000000c5,0x00000001,0x000000c4,0x0004003b,
+	0x000000c5,0x000000c6,0x00000001,0x00040020,0x000000c7,0x00000001,0x00000006,0x0004002b,
+	0x00000028,0x000000ca,0x00000003,0x0004002b,0x00000006,0x000000f4,0x00000040,0x0006002c,
+	0x000000c4,0x000000f5,0x000000f4,0x00000092,0x00000092,0x00050036,0x00000002,0x00000004,
+	0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x000000d1,0x00000007,
+	0x0004003b,0x00000007,0x000000d2,0x00000007,0x0004003b,0x00000007,0x000000da,0x00000007,
+	0x0004003b,0x00000016,0x000000e0,0x00000007,0x0004003b,0x00000007,0x000000e1,0x00000007,
+	0x0004003b,0x00000016,0x000000e4,0x00000007,0x0004003b,0x00000016,0x000000e5,0x00000007,
+	0x0004003b,0x00000007,0x000000e8,0x00000007,0x0004003b,0x00000016,0x000000ea,0x00000007,
+	0x0004003b,0x00000007,0x000000f1,0x00000007,0x0003003e,0x000000d1,0x00000097,0x0003003e,
+	0x000000d2,0x00000097,0x000200f9,0x000000d3,0x000200f8,0x000000d3,0x000400f6,0x000000d5,
+	0x000000d6,0x00000000,0x000200f9,0x000000d7,0x000200f8,0x000000d7,0x0004003d,0x00000006,
+	0x000000d8,0x000000d2,0x000500b0,0x00000052,0x000000d9,0x000000d8,0x00000092,0x000400fa,
+	0x000000d9,0x000000d4,0x000000d5,0x000200f8,0x000000d4,0x00050041,0x000000c7,0x000000db,
+	0x000000c6,0x00000097,0x0004003d,0x00000006,0x000000dc,0x000000db,0x00050084,0x00000006,
+	0x000000dd,0x000000dc,0x00000092,0x0004003d,0x00000006,0x000000de,0x000000d2,0x00050080,
+	0x00000006,0x000000df,0x000000dd,0x000000de,0x0003003e,0x000000da,0x000000df,0x0004003d,
+	0x00000006,0x000000e2,0x000000da,0x0003003e,0x000000e1,0x000000e2,0x00050039,0x00000011,
+	0x000000e3,0x00000014,0x000000e1,0x0003003e,0x000000e0,0x000000e3,0x0004003d,0x00000011,
+	0x000000e6,0x000000e0,0x0003003e,0x000000e5,0x000000e6,0x00050039,0x00000011,0x000000e7,
+	0x00000019,0x000000e5,0x0003003e,0x000000e4,0x000000e7,0x0004003d,0x00000006,0x000000e9,
+	0x000000da,0x0003003e,0x000000e8,0x000000e9,0x0004003d,0x00000011,0x000000eb,0x000000e4,
+	0x0003003e,0x000000ea,0x000000eb,0x00060039,0x00000006,0x000000ec,0x0000001e,0x000000e8,
+	0x000000ea,0x0004003d,0x00000006,0x000000ed,0x000000d1,0x000500c5,0x00000006,0x000000ee,
+	0x000000ed,0x000000ec,0x0003003e,0x000000d1,0x000000ee,0x000200f9,0x000000d6,0x000200f8,
+	0x000000d6,0x0004003d,0x00000006,0x000000ef,0x000000d2,0x00050080,0x00000006,0x000000f0,
+	0x000000ef,0x0000007e,0x0003003e,0x000000d2,0x000000f0,0x000200f9,0x000000d3,0x000200f8,
+	0x000000d5,0x0004003d,0x00000006,0x000000f2,0x000000d1,0x0003003e,0x000000f1,0x000000f2,
+	0x00050039,0x00000002,0x000000f3,0x00000022,0x000000f1,0x000100fd,0x00010038,0x00050036,
+	0x00000006,0x0000000b,0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,0x00030037,
+	0x00000007,0x0000000a,0x000200f8,0x0000000c,0x0004003d,0x00000006,0x00000024,0x00000009,
+	0x00050041,0x0000002a,0x0000002b,0x00000027,0x00000029,0x0004003d,0x00000006,0x0000002c,
+	0x0000002b,0x00050084,0x00000006,0x0000002d,0x00000024,0x0000002c,0x0004003d,0x00000006,
+	0x0000002e,0x0000000a,0x00050041,0x0000002a,0x00000030,0x00000027,0x0000002f,0x0004003d,
+	0x00000006,0x00000031,0x00000030,0x00050084,0x00000006,0x00000032,0x0000002e,0x00000031,
+	0x00050080,0x00000006,0x00000033,0x0000002d,0x00000032,0x00050041,0x0000002a,0x00000035,
+	0x00000027,0x00000034,0x0004003d,0x00000006,0x00000036,0x00000035,0x00050080,0x00000006,
+	0x00000037,0x00000033,0x00000036,0x000200fe,0x00000037,0x00010038,0x00050036,0x00000006,
+	0x0000000f,0x00000000,0x00000008,0x00030037,0x00000007,0x0000000d,0x00030037,0x00000007,
+	0x0000000e,0x000200f8,0x00000010,0x0004003b,0x00000007,0x0000003a,0x00000007,0x0004003d,
+	0x00000006,0x0000003b,0x0000000d,0x00050089,0x00000006,0x0000003d,0x0000003b,0x0000003c,
+	0x00050084,0x00000006,0x0000003f,0x0000003d,0x0000003e,0x0003003e,0x0000003a,0x0000003f,
+	0x0004003d,0x00000006,0x00000040,0x0000003a,0x000200fe,0x00000040,0x00010038,0x00050036,
+	0x00000011,0x00000014,0x00000000,0x00000012,0x00030037,0x00000007,0x00000013,0x000200f8,
+	0x00000015,0x0004003b,0x00000007,0x00000043,0x00000007,0x0004003b,0x00000007,0x00000049,
+	0x00000007,0x0004003b,0x00000007,0x00000058,0x00000007,0x0004003b,0x00000007,0x00000059,
+	0x00000007,0x0004003b,0x00000007,0x0000005b,0x00000007,0x0004003b,0x00000007,0x0000005e,
+	0x00000007,0x0004003b,0x00000007,0x00000069,0x00000007,0x0004003b,0x00000007,0x0000006a,
+	0x00000007,0x0004003b,0x00000007,0x0000006c,0x00000007,0x0004003b,0x00000007,0x00000070,
+	0x00000007,0x0004003b,0x00000007,0x00000074,0x00000007,0x0004003b,0x00000078,0x00000079,
+	0x00000007,0x0004003b,0x00000007,0x00000084,0x00000007,0x0004003b,0x0000008e,0x0000008f,
+	0x00000007,0x0004003b,0x00000007,0x00000099,0x00000007,0x0004003b,0x00000078,0x0000009b,
+	0x00000007,0x0004003b,0x00000078,0x000000a6,0x00000007,0x0004003b,0x00000016,0x000000a9,
+	0x00000007,0x0004003d,0x00000006,0x00000044,0x00000013,0x00050041,0x0000002a,0x00000046,
+	0x00000027,0x00000045,0x0004003d,0x00000006,0x00000047,0x00000046,0x00050086,0x00000006,
+	0x00000048,0x00000044,0x00000047,0x0003003e,0x00000043,0x00000048,0x0004003d,0x00000006,
+	0x0000004a,0x00000013,0x00050041,0x0000002a,0x0000004b,0x00000027,0x00000045,0x0004003d,
+	0x00000006,0x0000004c,0x0000004b,0x00050089,0x00000006,0x0000004d,0x0000004a,0x0000004c,
+	0x0003003e,0x00000049,0x0000004d,0x0004003d,0x00000006,0x0000004e,0x00000049,0x00050041,
+	0x0000002a,0x00000050,0x00000027,0x0000004f,0x0004003d,0x00000006,0x00000051,0x00000050,
+	0x000500ae,0x00000052,0x00000053,0x0000004e,0x00000051,0x000300f7,0x00000055,0x00000000,
+	0x000400fa,0x00000053,0x00000054,0x00000055,0x000200f8,0x00000054,0x000200fe,0x00000056,
+	0x000200f8,0x00000055,0x0004003d,0x00000006,0x0000005a,0x00000043,0x0003003e,0x00000059,
+	0x0000005a,0x0004003d,0x00000006,0x0000005c,0x00000049,0x0003003e,0x0000005b,0x0000005c,
+	0x00060039,0x00000006,0x0000005d,0x0000000b,0x00000059,0x0000005b,0x0003003e,0x00000058,
+	0x0000005d,0x0004003d,0x00000006,0x00000064,0x00000058,0x00050086,0x00000006,0x00000065,
+	0x00000064,0x0000003c,0x00060041,0x00000066,0x00000067,0x00000062,0x00000063,0x00000065,
+	0x0004003d,0x00000006,0x00000068,0x00000067,0x0003003e,0x0000005e,0x00000068,0x0004003d,
+	0x00000006,0x0000006b,0x00000058,0x0003003e,0x0000006a,0x0000006b,0x00050041,0x0000002a,
+	0x0000006d,0x00000027,0x0000002f,0x0004003d,0x00000006,0x0000006e,0x0000006d,0x0003003e,
+	0x0000006c,0x0000006e,0x00060039,0x00000006,0x0000006f,0x0000000f,0x0000006a,0x0000006c,
+	0x0003003e,0x00000069,0x0000006f,0x00050041,0x0000002a,0x00000071,0x00000027,0x0000002f,
+	0x0004003d,0x00000006,0x00000072,0x00000071,0x00050084,0x00000006,0x00000073,0x00000072,
+	0x0000003e,0x0003003e,0x00000070,0x00000073,0x0004003d,0x00000006,0x00000075,0x00000070,
+	0x000500aa,0x00000052,0x00000077,0x00000075,0x00000076,0x000300f7,0x0000007b,0x00000000,
+	0x000400fa,0x00000077,0x0000007a,0x0000007d,0x000200f8,0x0000007a,0x0003003e,0x00000079,
+	0x0000007c,0x000200f9,0x0000007b,0x000200f8,0x0000007d,0x0004003d,0x00000006,0x0000007f,
+	0x00000070,0x000500c4,0x00000028,0x00000080,0x0000007e,0x0000007f,0x00050082,0x00000028,
+	0x00000081,0x00000080,0x0000007e,0x0003003e,0x00000079,0x00000081,0x000200f9,0x0000007b,
+	0x000200f8,0x0000007b,0x0004003d,0x00000028,0x00000082,0x00000079,0x0004007c,0x00000006,
+	0x00000083,0x00000082,0x0003003e,0x00000074,0x00000083,0x0004003d,0x00000006,0x00000085,
+	0x0000005e,0x0004003d,0x00000006,0x00000086,0x00000069,0x000500c2,0x00000006,0x00000087,
+	0x00000085,0x00000086,0x0004003d,0x00000006,0x00000088,0x00000074,0x000500c7,0x00000006,
+	0x00000089,0x00000087,0x00000088,0x0003003e,0x00000084,0x00000089,0x0004003d,0x00000006,
+	0x0000008a,0x00000070,0x000500b0,0x00000052,0x0000008b,0x0000008a,0x00000076,0x000300f7,
+	0x0000008d,0x00000000,0x000400fa,0x0000008b,0x0000008c,0x0000008d,0x000200f8,0x0000008c,
+	0x0004003d,0x00000006,0x00000090,0x00000084,0x0004003d,0x00000006,0x00000091,0x00000070,
+	0x00050082,0x00000006,0x00000093,0x00000091,0x00000092,0x000500c4,0x00000028,0x00000094,
+	0x0000007e,0x00000093,0x0004007c,0x00000006,0x00000095,0x00000094,0x000500c7,0x00000006,
+	0x00000096,0x00000090,0x00000095,0x000500ab,0x00000052,0x00000098,0x00000096,0x00000097,
+	0x0003003e,0x0000008f,0x00000098,0x0004003d,0x00000052,0x0000009a,0x0000008f,0x000300f7,
+	0x0000009d,0x00000000,0x000400fa,0x0000009a,0x0000009c,0x000000a0,0x000200f8,0x0000009c,
+	0x0004003d,0x00000006,0x0000009e,0x00000070,0x000500c4,0x00000028,0x0000009f,0x0000007c,
+	0x0000009e,0x0003003e,0x0000009b,0x0000009f,0x000200f9,0x0000009d,0x000200f8,0x000000a0,
+	0x0003003e,0x0000009b,0x00000063,0x000200f9,0x0000009d,0x000200f8,0x0000009d,0x0004003d,
+	0x00000028,0x000000a1,0x0000009b,0x0004007c,0x00000006,0x000000a2,0x000000a1,0x0003003e,
+	0x00000099,0x000000a2,0x0004003d,0x00000006,0x000000a3,0x00000099,0x0004003d,0x00000006,
+	0x000000a4,0x00000084,0x000500c5,0x00000006,0x000000a5,0x000000a4,0x000000a3,0x0003003e,
+	0x00000084,0x000000a5,0x000200f9,0x0000008d,0x000200f8,0x0000008d,0x0004003d,0x00000006,
+	0x000000a7,0x00000084,0x0004007c,0x00000028,0x000000a8,0x000000a7,0x0003003e,0x000000a6,
+	0x000000a8,0x0004003d,0x00000028,0x000000aa,0x000000a6,0x0004006f,0x00000011,0x000000ab,
+	0x000000aa,0x0004003d,0x00000006,0x000000ac,0x00000074,0x000500c2,0x00000006,0x000000ad,
+	0x000000ac,0x0000007e,0x00040070,0x00000011,0x000000ae,0x000000ad,0x00050088,0x00000011,
+	0x000000af,0x000000ab,0x000000ae,0x0003003e,0x000000a9,0x000000af,0x0004003d,0x00000011,
+	0x000000b0,0x000000a9,0x0007000c,0x00000011,0x000000b2,0x00000001,0x00000028,0x000000b0,
+	0x000000b1,0x0003003e,0x000000a9,0x000000b2,0x0004003d,0x00000011,0x000000b3,0x000000a9,
+	0x000200fe,0x000000b3,0x00010038,0x00050036,0x00000011,0x00000019,0x00000000,0x00000017,
+	0x00030037,0x00000016,0x00000018,0x000200f8,0x0000001a,0x0004003d,0x00000011,0x000000b6,
+	0x00000018,0x000200fe,0x000000b6,0x00010038,0x00050036,0x00000006,0x0000001e,0x00000000,
+	0x0000001b,0x00030037,0x00000007,0x0000001c,0x00030037,0x00000016,0x0000001d,0x000200f8,
+	0x0000001f,0x0004003b,0x00000007,0x000000b9,0x00000007,0x0004003d,0x00000011,0x000000ba,
+	0x0000001d,0x0004007c,0x00000028,0x000000bb,0x000000ba,0x0004007c,0x00000006,0x000000bc,
+	0x000000bb,0x0003003e,0x000000b9,0x000000bc,0x0004003d,0x00000006,0x000000bd,0x000000b9,
+	0x000200fe,0x000000bd,0x00010038,0x00050036,0x00000002,0x00000022,0x00000000,0x00000020,
+	0x00030037,0x00000007,0x00000021,0x000200f8,0x00000023,0x00050041,0x000000c7,0x000000c8,
+	0x000000c6,0x00000097,0x0004003d,0x00000006,0x000000c9,0x000000c8,0x00050041,0x0000002a,
+	0x000000cb,0x00000027,0x000000ca,0x0004003d,0x00000006,0x000000cc,0x000000cb,0x00050086,
+	0x00000006,0x000000cd,0x000000cc,0x0000003c,0x00050080,0x00000006,0x000000ce,0x000000c9,
+	0x000000cd,0x0004003d,0x00000006,0x000000cf,0x00000021,0x00060041,0x00000066,0x000000d0,
+	0x000000c3,0x00000063,0x000000ce,0x0003003e,0x000000d0,0x000000cf,0x000100fd,0x00010038
 };
 
 // Generated from:
@@ -284,7 +284,8 @@
 //         valueAsUint |= signExtension;
 //     }
 //     int valueAsInt = int(valueAsUint);
-//           float value =(2 * float(valueAsInt)+ 1)/ valueMask;
+//           float value = float(valueAsInt)/(valueMask >> 1);
+//     value = max(value, float(- 1));
 //
 //     return value;
 // }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc
index 3648003..d9f008b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc
@@ -76,124 +76,125 @@
 	0x00000006,0x00000076,0x00000020,0x00040020,0x0000007a,0x00000007,0x00000045,0x0004002b,
 	0x00000024,0x0000007d,0x00000001,0x0004002b,0x00000006,0x0000007f,0x00000001,0x0004002b,
 	0x00000006,0x00000084,0x00000000,0x00040020,0x00000088,0x00000007,0x00000024,0x0004002b,
-	0x00000024,0x0000008c,0xffffffff,0x0004002b,0x0000000d,0x00000099,0x40000000,0x0004002b,
-	0x0000000d,0x0000009d,0x3f800000,0x0003001d,0x000000af,0x00000006,0x0003001e,0x000000b0,
-	0x000000af,0x00040020,0x000000b1,0x00000002,0x000000b0,0x0004003b,0x000000b1,0x000000b2,
-	0x00000002,0x00040017,0x000000b3,0x00000006,0x00000003,0x00040020,0x000000b4,0x00000001,
-	0x000000b3,0x0004003b,0x000000b4,0x000000b5,0x00000001,0x00040020,0x000000b6,0x00000001,
-	0x00000006,0x0004002b,0x00000006,0x000000f1,0x00000040,0x0006002c,0x000000b3,0x000000f2,
-	0x000000f1,0x0000007f,0x0000007f,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
-	0x000200f8,0x00000005,0x0004003b,0x00000007,0x000000c7,0x00000007,0x0004003b,0x00000007,
-	0x000000c8,0x00000007,0x0004003b,0x00000007,0x000000d0,0x00000007,0x0004003b,0x00000012,
-	0x000000dd,0x00000007,0x0004003b,0x00000007,0x000000de,0x00000007,0x0004003b,0x00000012,
-	0x000000e1,0x00000007,0x0004003b,0x00000012,0x000000e2,0x00000007,0x0004003b,0x00000007,
-	0x000000e5,0x00000007,0x0004003b,0x00000012,0x000000e7,0x00000007,0x0004003b,0x00000007,
-	0x000000ee,0x00000007,0x00050041,0x000000b6,0x000000bf,0x000000b5,0x00000084,0x0004003d,
-	0x00000006,0x000000c0,0x000000bf,0x00050041,0x00000026,0x000000c1,0x00000023,0x00000056,
-	0x0004003d,0x00000006,0x000000c2,0x000000c1,0x000500ae,0x00000045,0x000000c3,0x000000c0,
-	0x000000c2,0x000300f7,0x000000c5,0x00000000,0x000400fa,0x000000c3,0x000000c4,0x000000c5,
-	0x000200f8,0x000000c4,0x000100fd,0x000200f8,0x000000c5,0x0003003e,0x000000c7,0x00000084,
-	0x0003003e,0x000000c8,0x00000084,0x000200f9,0x000000c9,0x000200f8,0x000000c9,0x000400f6,
-	0x000000cb,0x000000cc,0x00000000,0x000200f9,0x000000cd,0x000200f8,0x000000cd,0x0004003d,
-	0x00000006,0x000000ce,0x000000c8,0x000500b0,0x00000045,0x000000cf,0x000000ce,0x0000007f,
-	0x000400fa,0x000000cf,0x000000ca,0x000000cb,0x000200f8,0x000000ca,0x00050041,0x000000b6,
-	0x000000d1,0x000000b5,0x00000084,0x0004003d,0x00000006,0x000000d2,0x000000d1,0x00050084,
-	0x00000006,0x000000d3,0x000000d2,0x0000007f,0x0004003d,0x00000006,0x000000d4,0x000000c8,
-	0x00050080,0x00000006,0x000000d5,0x000000d3,0x000000d4,0x0003003e,0x000000d0,0x000000d5,
-	0x0004003d,0x00000006,0x000000d6,0x000000d0,0x00050041,0x00000026,0x000000d7,0x00000023,
-	0x0000007d,0x0004003d,0x00000006,0x000000d8,0x000000d7,0x000500ae,0x00000045,0x000000d9,
-	0x000000d6,0x000000d8,0x000300f7,0x000000db,0x00000000,0x000400fa,0x000000d9,0x000000da,
-	0x000000db,0x000200f8,0x000000da,0x000200f9,0x000000cb,0x000200f8,0x000000db,0x0004003d,
-	0x00000006,0x000000df,0x000000d0,0x0003003e,0x000000de,0x000000df,0x00050039,0x0000000d,
-	0x000000e0,0x00000010,0x000000de,0x0003003e,0x000000dd,0x000000e0,0x0004003d,0x0000000d,
-	0x000000e3,0x000000dd,0x0003003e,0x000000e2,0x000000e3,0x00050039,0x0000000d,0x000000e4,
-	0x00000015,0x000000e2,0x0003003e,0x000000e1,0x000000e4,0x0004003d,0x00000006,0x000000e6,
-	0x000000d0,0x0003003e,0x000000e5,0x000000e6,0x0004003d,0x0000000d,0x000000e8,0x000000e1,
-	0x0003003e,0x000000e7,0x000000e8,0x00060039,0x00000006,0x000000e9,0x0000001a,0x000000e5,
-	0x000000e7,0x0004003d,0x00000006,0x000000ea,0x000000c7,0x000500c5,0x00000006,0x000000eb,
-	0x000000ea,0x000000e9,0x0003003e,0x000000c7,0x000000eb,0x000200f9,0x000000cc,0x000200f8,
-	0x000000cc,0x0004003d,0x00000006,0x000000ec,0x000000c8,0x00050080,0x00000006,0x000000ed,
-	0x000000ec,0x0000007d,0x0003003e,0x000000c8,0x000000ed,0x000200f9,0x000000c9,0x000200f8,
-	0x000000cb,0x0004003d,0x00000006,0x000000ef,0x000000c7,0x0003003e,0x000000ee,0x000000ef,
-	0x00050039,0x00000002,0x000000f0,0x0000001e,0x000000ee,0x000100fd,0x00010038,0x00050036,
-	0x00000006,0x0000000b,0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,0x00030037,
-	0x00000007,0x0000000a,0x000200f8,0x0000000c,0x0004003d,0x00000006,0x00000020,0x00000009,
-	0x00050041,0x00000026,0x00000027,0x00000023,0x00000025,0x0004003d,0x00000006,0x00000028,
-	0x00000027,0x00050084,0x00000006,0x00000029,0x00000020,0x00000028,0x0004003d,0x00000006,
-	0x0000002a,0x0000000a,0x00050041,0x00000026,0x0000002c,0x00000023,0x0000002b,0x0004003d,
-	0x00000006,0x0000002d,0x0000002c,0x00050084,0x00000006,0x0000002e,0x0000002a,0x0000002d,
-	0x00050080,0x00000006,0x0000002f,0x00000029,0x0000002e,0x00050041,0x00000026,0x00000031,
-	0x00000023,0x00000030,0x0004003d,0x00000006,0x00000032,0x00000031,0x00050080,0x00000006,
-	0x00000033,0x0000002f,0x00000032,0x000200fe,0x00000033,0x00010038,0x00050036,0x0000000d,
-	0x00000010,0x00000000,0x0000000e,0x00030037,0x00000007,0x0000000f,0x000200f8,0x00000011,
-	0x0004003b,0x00000007,0x00000036,0x00000007,0x0004003b,0x00000007,0x0000003c,0x00000007,
-	0x0004003b,0x00000007,0x0000004b,0x00000007,0x0004003b,0x00000007,0x0000004c,0x00000007,
-	0x0004003b,0x00000007,0x0000004e,0x00000007,0x0004003b,0x00000007,0x00000051,0x00000007,
-	0x0004003b,0x00000007,0x0000005d,0x00000007,0x0004003b,0x00000007,0x00000064,0x00000007,
-	0x0004003b,0x00000007,0x00000068,0x00000007,0x0004003b,0x00000007,0x0000006f,0x00000007,
-	0x0004003b,0x0000007a,0x0000007b,0x00000007,0x0004003b,0x00000007,0x00000086,0x00000007,
-	0x0004003b,0x00000088,0x00000089,0x00000007,0x0004003b,0x00000088,0x00000095,0x00000007,
-	0x0004003b,0x00000012,0x00000098,0x00000007,0x0004003d,0x00000006,0x00000037,0x0000000f,
-	0x00050041,0x00000026,0x00000039,0x00000023,0x00000038,0x0004003d,0x00000006,0x0000003a,
-	0x00000039,0x00050086,0x00000006,0x0000003b,0x00000037,0x0000003a,0x0003003e,0x00000036,
-	0x0000003b,0x0004003d,0x00000006,0x0000003d,0x0000000f,0x00050041,0x00000026,0x0000003e,
-	0x00000023,0x00000038,0x0004003d,0x00000006,0x0000003f,0x0000003e,0x00050089,0x00000006,
-	0x00000040,0x0000003d,0x0000003f,0x0003003e,0x0000003c,0x00000040,0x0004003d,0x00000006,
-	0x00000041,0x0000003c,0x00050041,0x00000026,0x00000043,0x00000023,0x00000042,0x0004003d,
-	0x00000006,0x00000044,0x00000043,0x000500ae,0x00000045,0x00000046,0x00000041,0x00000044,
-	0x000300f7,0x00000048,0x00000000,0x000400fa,0x00000046,0x00000047,0x00000048,0x000200f8,
-	0x00000047,0x000200fe,0x00000049,0x000200f8,0x00000048,0x0004003d,0x00000006,0x0000004d,
-	0x00000036,0x0003003e,0x0000004c,0x0000004d,0x0004003d,0x00000006,0x0000004f,0x0000003c,
-	0x0003003e,0x0000004e,0x0000004f,0x00060039,0x00000006,0x00000050,0x0000000b,0x0000004c,
-	0x0000004e,0x0003003e,0x0000004b,0x00000050,0x0004003d,0x00000006,0x00000057,0x0000004b,
-	0x00050086,0x00000006,0x00000059,0x00000057,0x00000058,0x00060041,0x0000005a,0x0000005b,
-	0x00000055,0x00000056,0x00000059,0x0004003d,0x00000006,0x0000005c,0x0000005b,0x0003003e,
-	0x00000051,0x0000005c,0x0004003d,0x00000006,0x0000005e,0x0000003c,0x000500aa,0x00000045,
-	0x00000060,0x0000005e,0x0000005f,0x000600a9,0x00000024,0x00000062,0x00000060,0x00000030,
-	0x00000061,0x0004007c,0x00000006,0x00000063,0x00000062,0x0003003e,0x0000005d,0x00000063,
-	0x0004003d,0x00000006,0x00000066,0x0000003c,0x00050084,0x00000006,0x00000067,0x00000065,
-	0x00000066,0x0003003e,0x00000064,0x00000067,0x0004003d,0x00000006,0x00000069,0x0000003c,
-	0x000500aa,0x00000045,0x0000006a,0x00000069,0x0000005f,0x000600a9,0x00000024,0x0000006d,
-	0x0000006a,0x0000006b,0x0000006c,0x0004007c,0x00000006,0x0000006e,0x0000006d,0x0003003e,
-	0x00000068,0x0000006e,0x0004003d,0x00000006,0x00000070,0x00000051,0x0004003d,0x00000006,
-	0x00000071,0x00000064,0x000500c2,0x00000006,0x00000072,0x00000070,0x00000071,0x0004003d,
-	0x00000006,0x00000073,0x00000068,0x000500c7,0x00000006,0x00000074,0x00000072,0x00000073,
-	0x0003003e,0x0000006f,0x00000074,0x0004003d,0x00000006,0x00000075,0x0000005d,0x000500b0,
-	0x00000045,0x00000077,0x00000075,0x00000076,0x000300f7,0x00000079,0x00000000,0x000400fa,
-	0x00000077,0x00000078,0x00000079,0x000200f8,0x00000078,0x0004003d,0x00000006,0x0000007c,
-	0x0000006f,0x0004003d,0x00000006,0x0000007e,0x0000005d,0x00050082,0x00000006,0x00000080,
-	0x0000007e,0x0000007f,0x000500c4,0x00000024,0x00000081,0x0000007d,0x00000080,0x0004007c,
-	0x00000006,0x00000082,0x00000081,0x000500c7,0x00000006,0x00000083,0x0000007c,0x00000082,
-	0x000500ab,0x00000045,0x00000085,0x00000083,0x00000084,0x0003003e,0x0000007b,0x00000085,
-	0x0004003d,0x00000045,0x00000087,0x0000007b,0x000300f7,0x0000008b,0x00000000,0x000400fa,
-	0x00000087,0x0000008a,0x0000008f,0x000200f8,0x0000008a,0x0004003d,0x00000006,0x0000008d,
-	0x0000005d,0x000500c4,0x00000024,0x0000008e,0x0000008c,0x0000008d,0x0003003e,0x00000089,
-	0x0000008e,0x000200f9,0x0000008b,0x000200f8,0x0000008f,0x0003003e,0x00000089,0x00000056,
-	0x000200f9,0x0000008b,0x000200f8,0x0000008b,0x0004003d,0x00000024,0x00000090,0x00000089,
-	0x0004007c,0x00000006,0x00000091,0x00000090,0x0003003e,0x00000086,0x00000091,0x0004003d,
-	0x00000006,0x00000092,0x00000086,0x0004003d,0x00000006,0x00000093,0x0000006f,0x000500c5,
-	0x00000006,0x00000094,0x00000093,0x00000092,0x0003003e,0x0000006f,0x00000094,0x000200f9,
-	0x00000079,0x000200f8,0x00000079,0x0004003d,0x00000006,0x00000096,0x0000006f,0x0004007c,
-	0x00000024,0x00000097,0x00000096,0x0003003e,0x00000095,0x00000097,0x0004003d,0x00000024,
-	0x0000009a,0x00000095,0x0004006f,0x0000000d,0x0000009b,0x0000009a,0x00050085,0x0000000d,
-	0x0000009c,0x00000099,0x0000009b,0x00050081,0x0000000d,0x0000009e,0x0000009c,0x0000009d,
-	0x0004003d,0x00000006,0x0000009f,0x00000068,0x00040070,0x0000000d,0x000000a0,0x0000009f,
-	0x00050088,0x0000000d,0x000000a1,0x0000009e,0x000000a0,0x0003003e,0x00000098,0x000000a1,
-	0x0004003d,0x0000000d,0x000000a2,0x00000098,0x000200fe,0x000000a2,0x00010038,0x00050036,
-	0x0000000d,0x00000015,0x00000000,0x00000013,0x00030037,0x00000012,0x00000014,0x000200f8,
-	0x00000016,0x0004003d,0x0000000d,0x000000a5,0x00000014,0x000200fe,0x000000a5,0x00010038,
-	0x00050036,0x00000006,0x0000001a,0x00000000,0x00000017,0x00030037,0x00000007,0x00000018,
-	0x00030037,0x00000012,0x00000019,0x000200f8,0x0000001b,0x0004003b,0x00000007,0x000000a8,
-	0x00000007,0x0004003d,0x0000000d,0x000000a9,0x00000019,0x0004007c,0x00000024,0x000000aa,
-	0x000000a9,0x0004007c,0x00000006,0x000000ab,0x000000aa,0x0003003e,0x000000a8,0x000000ab,
-	0x0004003d,0x00000006,0x000000ac,0x000000a8,0x000200fe,0x000000ac,0x00010038,0x00050036,
-	0x00000002,0x0000001e,0x00000000,0x0000001c,0x00030037,0x00000007,0x0000001d,0x000200f8,
-	0x0000001f,0x00050041,0x000000b6,0x000000b7,0x000000b5,0x00000084,0x0004003d,0x00000006,
-	0x000000b8,0x000000b7,0x00050041,0x00000026,0x000000b9,0x00000023,0x0000006b,0x0004003d,
-	0x00000006,0x000000ba,0x000000b9,0x00050086,0x00000006,0x000000bb,0x000000ba,0x00000058,
-	0x00050080,0x00000006,0x000000bc,0x000000b8,0x000000bb,0x0004003d,0x00000006,0x000000bd,
-	0x0000001d,0x00060041,0x0000005a,0x000000be,0x000000b2,0x00000056,0x000000bc,0x0003003e,
-	0x000000be,0x000000bd,0x000100fd,0x00010038
+	0x00000024,0x0000008c,0xffffffff,0x0004002b,0x0000000d,0x000000a0,0xbf800000,0x0003001d,
+	0x000000af,0x00000006,0x0003001e,0x000000b0,0x000000af,0x00040020,0x000000b1,0x00000002,
+	0x000000b0,0x0004003b,0x000000b1,0x000000b2,0x00000002,0x00040017,0x000000b3,0x00000006,
+	0x00000003,0x00040020,0x000000b4,0x00000001,0x000000b3,0x0004003b,0x000000b4,0x000000b5,
+	0x00000001,0x00040020,0x000000b6,0x00000001,0x00000006,0x0004002b,0x00000006,0x000000f1,
+	0x00000040,0x0006002c,0x000000b3,0x000000f2,0x000000f1,0x0000007f,0x0000007f,0x00050036,
+	0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,
+	0x000000c7,0x00000007,0x0004003b,0x00000007,0x000000c8,0x00000007,0x0004003b,0x00000007,
+	0x000000d0,0x00000007,0x0004003b,0x00000012,0x000000dd,0x00000007,0x0004003b,0x00000007,
+	0x000000de,0x00000007,0x0004003b,0x00000012,0x000000e1,0x00000007,0x0004003b,0x00000012,
+	0x000000e2,0x00000007,0x0004003b,0x00000007,0x000000e5,0x00000007,0x0004003b,0x00000012,
+	0x000000e7,0x00000007,0x0004003b,0x00000007,0x000000ee,0x00000007,0x00050041,0x000000b6,
+	0x000000bf,0x000000b5,0x00000084,0x0004003d,0x00000006,0x000000c0,0x000000bf,0x00050041,
+	0x00000026,0x000000c1,0x00000023,0x00000056,0x0004003d,0x00000006,0x000000c2,0x000000c1,
+	0x000500ae,0x00000045,0x000000c3,0x000000c0,0x000000c2,0x000300f7,0x000000c5,0x00000000,
+	0x000400fa,0x000000c3,0x000000c4,0x000000c5,0x000200f8,0x000000c4,0x000100fd,0x000200f8,
+	0x000000c5,0x0003003e,0x000000c7,0x00000084,0x0003003e,0x000000c8,0x00000084,0x000200f9,
+	0x000000c9,0x000200f8,0x000000c9,0x000400f6,0x000000cb,0x000000cc,0x00000000,0x000200f9,
+	0x000000cd,0x000200f8,0x000000cd,0x0004003d,0x00000006,0x000000ce,0x000000c8,0x000500b0,
+	0x00000045,0x000000cf,0x000000ce,0x0000007f,0x000400fa,0x000000cf,0x000000ca,0x000000cb,
+	0x000200f8,0x000000ca,0x00050041,0x000000b6,0x000000d1,0x000000b5,0x00000084,0x0004003d,
+	0x00000006,0x000000d2,0x000000d1,0x00050084,0x00000006,0x000000d3,0x000000d2,0x0000007f,
+	0x0004003d,0x00000006,0x000000d4,0x000000c8,0x00050080,0x00000006,0x000000d5,0x000000d3,
+	0x000000d4,0x0003003e,0x000000d0,0x000000d5,0x0004003d,0x00000006,0x000000d6,0x000000d0,
+	0x00050041,0x00000026,0x000000d7,0x00000023,0x0000007d,0x0004003d,0x00000006,0x000000d8,
+	0x000000d7,0x000500ae,0x00000045,0x000000d9,0x000000d6,0x000000d8,0x000300f7,0x000000db,
+	0x00000000,0x000400fa,0x000000d9,0x000000da,0x000000db,0x000200f8,0x000000da,0x000200f9,
+	0x000000cb,0x000200f8,0x000000db,0x0004003d,0x00000006,0x000000df,0x000000d0,0x0003003e,
+	0x000000de,0x000000df,0x00050039,0x0000000d,0x000000e0,0x00000010,0x000000de,0x0003003e,
+	0x000000dd,0x000000e0,0x0004003d,0x0000000d,0x000000e3,0x000000dd,0x0003003e,0x000000e2,
+	0x000000e3,0x00050039,0x0000000d,0x000000e4,0x00000015,0x000000e2,0x0003003e,0x000000e1,
+	0x000000e4,0x0004003d,0x00000006,0x000000e6,0x000000d0,0x0003003e,0x000000e5,0x000000e6,
+	0x0004003d,0x0000000d,0x000000e8,0x000000e1,0x0003003e,0x000000e7,0x000000e8,0x00060039,
+	0x00000006,0x000000e9,0x0000001a,0x000000e5,0x000000e7,0x0004003d,0x00000006,0x000000ea,
+	0x000000c7,0x000500c5,0x00000006,0x000000eb,0x000000ea,0x000000e9,0x0003003e,0x000000c7,
+	0x000000eb,0x000200f9,0x000000cc,0x000200f8,0x000000cc,0x0004003d,0x00000006,0x000000ec,
+	0x000000c8,0x00050080,0x00000006,0x000000ed,0x000000ec,0x0000007d,0x0003003e,0x000000c8,
+	0x000000ed,0x000200f9,0x000000c9,0x000200f8,0x000000cb,0x0004003d,0x00000006,0x000000ef,
+	0x000000c7,0x0003003e,0x000000ee,0x000000ef,0x00050039,0x00000002,0x000000f0,0x0000001e,
+	0x000000ee,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000b,0x00000000,0x00000008,
+	0x00030037,0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,0x000200f8,0x0000000c,
+	0x0004003d,0x00000006,0x00000020,0x00000009,0x00050041,0x00000026,0x00000027,0x00000023,
+	0x00000025,0x0004003d,0x00000006,0x00000028,0x00000027,0x00050084,0x00000006,0x00000029,
+	0x00000020,0x00000028,0x0004003d,0x00000006,0x0000002a,0x0000000a,0x00050041,0x00000026,
+	0x0000002c,0x00000023,0x0000002b,0x0004003d,0x00000006,0x0000002d,0x0000002c,0x00050084,
+	0x00000006,0x0000002e,0x0000002a,0x0000002d,0x00050080,0x00000006,0x0000002f,0x00000029,
+	0x0000002e,0x00050041,0x00000026,0x00000031,0x00000023,0x00000030,0x0004003d,0x00000006,
+	0x00000032,0x00000031,0x00050080,0x00000006,0x00000033,0x0000002f,0x00000032,0x000200fe,
+	0x00000033,0x00010038,0x00050036,0x0000000d,0x00000010,0x00000000,0x0000000e,0x00030037,
+	0x00000007,0x0000000f,0x000200f8,0x00000011,0x0004003b,0x00000007,0x00000036,0x00000007,
+	0x0004003b,0x00000007,0x0000003c,0x00000007,0x0004003b,0x00000007,0x0000004b,0x00000007,
+	0x0004003b,0x00000007,0x0000004c,0x00000007,0x0004003b,0x00000007,0x0000004e,0x00000007,
+	0x0004003b,0x00000007,0x00000051,0x00000007,0x0004003b,0x00000007,0x0000005d,0x00000007,
+	0x0004003b,0x00000007,0x00000064,0x00000007,0x0004003b,0x00000007,0x00000068,0x00000007,
+	0x0004003b,0x00000007,0x0000006f,0x00000007,0x0004003b,0x0000007a,0x0000007b,0x00000007,
+	0x0004003b,0x00000007,0x00000086,0x00000007,0x0004003b,0x00000088,0x00000089,0x00000007,
+	0x0004003b,0x00000088,0x00000095,0x00000007,0x0004003b,0x00000012,0x00000098,0x00000007,
+	0x0004003d,0x00000006,0x00000037,0x0000000f,0x00050041,0x00000026,0x00000039,0x00000023,
+	0x00000038,0x0004003d,0x00000006,0x0000003a,0x00000039,0x00050086,0x00000006,0x0000003b,
+	0x00000037,0x0000003a,0x0003003e,0x00000036,0x0000003b,0x0004003d,0x00000006,0x0000003d,
+	0x0000000f,0x00050041,0x00000026,0x0000003e,0x00000023,0x00000038,0x0004003d,0x00000006,
+	0x0000003f,0x0000003e,0x00050089,0x00000006,0x00000040,0x0000003d,0x0000003f,0x0003003e,
+	0x0000003c,0x00000040,0x0004003d,0x00000006,0x00000041,0x0000003c,0x00050041,0x00000026,
+	0x00000043,0x00000023,0x00000042,0x0004003d,0x00000006,0x00000044,0x00000043,0x000500ae,
+	0x00000045,0x00000046,0x00000041,0x00000044,0x000300f7,0x00000048,0x00000000,0x000400fa,
+	0x00000046,0x00000047,0x00000048,0x000200f8,0x00000047,0x000200fe,0x00000049,0x000200f8,
+	0x00000048,0x0004003d,0x00000006,0x0000004d,0x00000036,0x0003003e,0x0000004c,0x0000004d,
+	0x0004003d,0x00000006,0x0000004f,0x0000003c,0x0003003e,0x0000004e,0x0000004f,0x00060039,
+	0x00000006,0x00000050,0x0000000b,0x0000004c,0x0000004e,0x0003003e,0x0000004b,0x00000050,
+	0x0004003d,0x00000006,0x00000057,0x0000004b,0x00050086,0x00000006,0x00000059,0x00000057,
+	0x00000058,0x00060041,0x0000005a,0x0000005b,0x00000055,0x00000056,0x00000059,0x0004003d,
+	0x00000006,0x0000005c,0x0000005b,0x0003003e,0x00000051,0x0000005c,0x0004003d,0x00000006,
+	0x0000005e,0x0000003c,0x000500aa,0x00000045,0x00000060,0x0000005e,0x0000005f,0x000600a9,
+	0x00000024,0x00000062,0x00000060,0x00000030,0x00000061,0x0004007c,0x00000006,0x00000063,
+	0x00000062,0x0003003e,0x0000005d,0x00000063,0x0004003d,0x00000006,0x00000066,0x0000003c,
+	0x00050084,0x00000006,0x00000067,0x00000065,0x00000066,0x0003003e,0x00000064,0x00000067,
+	0x0004003d,0x00000006,0x00000069,0x0000003c,0x000500aa,0x00000045,0x0000006a,0x00000069,
+	0x0000005f,0x000600a9,0x00000024,0x0000006d,0x0000006a,0x0000006b,0x0000006c,0x0004007c,
+	0x00000006,0x0000006e,0x0000006d,0x0003003e,0x00000068,0x0000006e,0x0004003d,0x00000006,
+	0x00000070,0x00000051,0x0004003d,0x00000006,0x00000071,0x00000064,0x000500c2,0x00000006,
+	0x00000072,0x00000070,0x00000071,0x0004003d,0x00000006,0x00000073,0x00000068,0x000500c7,
+	0x00000006,0x00000074,0x00000072,0x00000073,0x0003003e,0x0000006f,0x00000074,0x0004003d,
+	0x00000006,0x00000075,0x0000005d,0x000500b0,0x00000045,0x00000077,0x00000075,0x00000076,
+	0x000300f7,0x00000079,0x00000000,0x000400fa,0x00000077,0x00000078,0x00000079,0x000200f8,
+	0x00000078,0x0004003d,0x00000006,0x0000007c,0x0000006f,0x0004003d,0x00000006,0x0000007e,
+	0x0000005d,0x00050082,0x00000006,0x00000080,0x0000007e,0x0000007f,0x000500c4,0x00000024,
+	0x00000081,0x0000007d,0x00000080,0x0004007c,0x00000006,0x00000082,0x00000081,0x000500c7,
+	0x00000006,0x00000083,0x0000007c,0x00000082,0x000500ab,0x00000045,0x00000085,0x00000083,
+	0x00000084,0x0003003e,0x0000007b,0x00000085,0x0004003d,0x00000045,0x00000087,0x0000007b,
+	0x000300f7,0x0000008b,0x00000000,0x000400fa,0x00000087,0x0000008a,0x0000008f,0x000200f8,
+	0x0000008a,0x0004003d,0x00000006,0x0000008d,0x0000005d,0x000500c4,0x00000024,0x0000008e,
+	0x0000008c,0x0000008d,0x0003003e,0x00000089,0x0000008e,0x000200f9,0x0000008b,0x000200f8,
+	0x0000008f,0x0003003e,0x00000089,0x00000056,0x000200f9,0x0000008b,0x000200f8,0x0000008b,
+	0x0004003d,0x00000024,0x00000090,0x00000089,0x0004007c,0x00000006,0x00000091,0x00000090,
+	0x0003003e,0x00000086,0x00000091,0x0004003d,0x00000006,0x00000092,0x00000086,0x0004003d,
+	0x00000006,0x00000093,0x0000006f,0x000500c5,0x00000006,0x00000094,0x00000093,0x00000092,
+	0x0003003e,0x0000006f,0x00000094,0x000200f9,0x00000079,0x000200f8,0x00000079,0x0004003d,
+	0x00000006,0x00000096,0x0000006f,0x0004007c,0x00000024,0x00000097,0x00000096,0x0003003e,
+	0x00000095,0x00000097,0x0004003d,0x00000024,0x00000099,0x00000095,0x0004006f,0x0000000d,
+	0x0000009a,0x00000099,0x0004003d,0x00000006,0x0000009b,0x00000068,0x000500c2,0x00000006,
+	0x0000009c,0x0000009b,0x0000007d,0x00040070,0x0000000d,0x0000009d,0x0000009c,0x00050088,
+	0x0000000d,0x0000009e,0x0000009a,0x0000009d,0x0003003e,0x00000098,0x0000009e,0x0004003d,
+	0x0000000d,0x0000009f,0x00000098,0x0007000c,0x0000000d,0x000000a1,0x00000001,0x00000028,
+	0x0000009f,0x000000a0,0x0003003e,0x00000098,0x000000a1,0x0004003d,0x0000000d,0x000000a2,
+	0x00000098,0x000200fe,0x000000a2,0x00010038,0x00050036,0x0000000d,0x00000015,0x00000000,
+	0x00000013,0x00030037,0x00000012,0x00000014,0x000200f8,0x00000016,0x0004003d,0x0000000d,
+	0x000000a5,0x00000014,0x000200fe,0x000000a5,0x00010038,0x00050036,0x00000006,0x0000001a,
+	0x00000000,0x00000017,0x00030037,0x00000007,0x00000018,0x00030037,0x00000012,0x00000019,
+	0x000200f8,0x0000001b,0x0004003b,0x00000007,0x000000a8,0x00000007,0x0004003d,0x0000000d,
+	0x000000a9,0x00000019,0x0004007c,0x00000024,0x000000aa,0x000000a9,0x0004007c,0x00000006,
+	0x000000ab,0x000000aa,0x0003003e,0x000000a8,0x000000ab,0x0004003d,0x00000006,0x000000ac,
+	0x000000a8,0x000200fe,0x000000ac,0x00010038,0x00050036,0x00000002,0x0000001e,0x00000000,
+	0x0000001c,0x00030037,0x00000007,0x0000001d,0x000200f8,0x0000001f,0x00050041,0x000000b6,
+	0x000000b7,0x000000b5,0x00000084,0x0004003d,0x00000006,0x000000b8,0x000000b7,0x00050041,
+	0x00000026,0x000000b9,0x00000023,0x0000006b,0x0004003d,0x00000006,0x000000ba,0x000000b9,
+	0x00050086,0x00000006,0x000000bb,0x000000ba,0x00000058,0x00050080,0x00000006,0x000000bc,
+	0x000000b8,0x000000bb,0x0004003d,0x00000006,0x000000bd,0x0000001d,0x00060041,0x0000005a,
+	0x000000be,0x000000b2,0x00000056,0x000000bc,0x0003003e,0x000000be,0x000000bd,0x000100fd,
+	0x00010038
 };
 
 // Generated from:
@@ -278,7 +279,8 @@
 //         valueAsUint |= signExtension;
 //     }
 //     int valueAsInt = int(valueAsUint);
-//           float value =(2 * float(valueAsInt)+ 1)/ valueMask;
+//           float value = float(valueAsInt)/(valueMask >> 1);
+//     value = max(value, float(- 1));
 //
 //     return value;
 // }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc
index c6c514a..ac22c57 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc
@@ -76,116 +76,116 @@
 	0x00000006,0x00000076,0x00000020,0x00040020,0x0000007a,0x00000007,0x00000045,0x0004002b,
 	0x00000024,0x0000007d,0x00000001,0x0004002b,0x00000006,0x0000007f,0x00000001,0x0004002b,
 	0x00000006,0x00000084,0x00000000,0x00040020,0x00000088,0x00000007,0x00000024,0x0004002b,
-	0x00000024,0x0000008c,0xffffffff,0x0004002b,0x0000000d,0x00000099,0x40000000,0x0004002b,
-	0x0000000d,0x0000009d,0x3f800000,0x0003001d,0x000000af,0x00000006,0x0003001e,0x000000b0,
-	0x000000af,0x00040020,0x000000b1,0x00000002,0x000000b0,0x0004003b,0x000000b1,0x000000b2,
-	0x00000002,0x00040017,0x000000b3,0x00000006,0x00000003,0x00040020,0x000000b4,0x00000001,
-	0x000000b3,0x0004003b,0x000000b4,0x000000b5,0x00000001,0x00040020,0x000000b6,0x00000001,
-	0x00000006,0x0004002b,0x00000006,0x000000e2,0x00000040,0x0006002c,0x000000b3,0x000000e3,
-	0x000000e2,0x0000007f,0x0000007f,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
-	0x000200f8,0x00000005,0x0004003b,0x00000007,0x000000bf,0x00000007,0x0004003b,0x00000007,
-	0x000000c0,0x00000007,0x0004003b,0x00000007,0x000000c8,0x00000007,0x0004003b,0x00000012,
-	0x000000ce,0x00000007,0x0004003b,0x00000007,0x000000cf,0x00000007,0x0004003b,0x00000012,
-	0x000000d2,0x00000007,0x0004003b,0x00000012,0x000000d3,0x00000007,0x0004003b,0x00000007,
-	0x000000d6,0x00000007,0x0004003b,0x00000012,0x000000d8,0x00000007,0x0004003b,0x00000007,
-	0x000000df,0x00000007,0x0003003e,0x000000bf,0x00000084,0x0003003e,0x000000c0,0x00000084,
-	0x000200f9,0x000000c1,0x000200f8,0x000000c1,0x000400f6,0x000000c3,0x000000c4,0x00000000,
-	0x000200f9,0x000000c5,0x000200f8,0x000000c5,0x0004003d,0x00000006,0x000000c6,0x000000c0,
-	0x000500b0,0x00000045,0x000000c7,0x000000c6,0x0000007f,0x000400fa,0x000000c7,0x000000c2,
-	0x000000c3,0x000200f8,0x000000c2,0x00050041,0x000000b6,0x000000c9,0x000000b5,0x00000084,
-	0x0004003d,0x00000006,0x000000ca,0x000000c9,0x00050084,0x00000006,0x000000cb,0x000000ca,
-	0x0000007f,0x0004003d,0x00000006,0x000000cc,0x000000c0,0x00050080,0x00000006,0x000000cd,
-	0x000000cb,0x000000cc,0x0003003e,0x000000c8,0x000000cd,0x0004003d,0x00000006,0x000000d0,
-	0x000000c8,0x0003003e,0x000000cf,0x000000d0,0x00050039,0x0000000d,0x000000d1,0x00000010,
-	0x000000cf,0x0003003e,0x000000ce,0x000000d1,0x0004003d,0x0000000d,0x000000d4,0x000000ce,
-	0x0003003e,0x000000d3,0x000000d4,0x00050039,0x0000000d,0x000000d5,0x00000015,0x000000d3,
-	0x0003003e,0x000000d2,0x000000d5,0x0004003d,0x00000006,0x000000d7,0x000000c8,0x0003003e,
-	0x000000d6,0x000000d7,0x0004003d,0x0000000d,0x000000d9,0x000000d2,0x0003003e,0x000000d8,
-	0x000000d9,0x00060039,0x00000006,0x000000da,0x0000001a,0x000000d6,0x000000d8,0x0004003d,
-	0x00000006,0x000000db,0x000000bf,0x000500c5,0x00000006,0x000000dc,0x000000db,0x000000da,
-	0x0003003e,0x000000bf,0x000000dc,0x000200f9,0x000000c4,0x000200f8,0x000000c4,0x0004003d,
-	0x00000006,0x000000dd,0x000000c0,0x00050080,0x00000006,0x000000de,0x000000dd,0x0000007d,
-	0x0003003e,0x000000c0,0x000000de,0x000200f9,0x000000c1,0x000200f8,0x000000c3,0x0004003d,
-	0x00000006,0x000000e0,0x000000bf,0x0003003e,0x000000df,0x000000e0,0x00050039,0x00000002,
-	0x000000e1,0x0000001e,0x000000df,0x000100fd,0x00010038,0x00050036,0x00000006,0x0000000b,
-	0x00000000,0x00000008,0x00030037,0x00000007,0x00000009,0x00030037,0x00000007,0x0000000a,
-	0x000200f8,0x0000000c,0x0004003d,0x00000006,0x00000020,0x00000009,0x00050041,0x00000026,
-	0x00000027,0x00000023,0x00000025,0x0004003d,0x00000006,0x00000028,0x00000027,0x00050084,
-	0x00000006,0x00000029,0x00000020,0x00000028,0x0004003d,0x00000006,0x0000002a,0x0000000a,
-	0x00050041,0x00000026,0x0000002c,0x00000023,0x0000002b,0x0004003d,0x00000006,0x0000002d,
-	0x0000002c,0x00050084,0x00000006,0x0000002e,0x0000002a,0x0000002d,0x00050080,0x00000006,
-	0x0000002f,0x00000029,0x0000002e,0x00050041,0x00000026,0x00000031,0x00000023,0x00000030,
-	0x0004003d,0x00000006,0x00000032,0x00000031,0x00050080,0x00000006,0x00000033,0x0000002f,
-	0x00000032,0x000200fe,0x00000033,0x00010038,0x00050036,0x0000000d,0x00000010,0x00000000,
-	0x0000000e,0x00030037,0x00000007,0x0000000f,0x000200f8,0x00000011,0x0004003b,0x00000007,
-	0x00000036,0x00000007,0x0004003b,0x00000007,0x0000003c,0x00000007,0x0004003b,0x00000007,
-	0x0000004b,0x00000007,0x0004003b,0x00000007,0x0000004c,0x00000007,0x0004003b,0x00000007,
-	0x0000004e,0x00000007,0x0004003b,0x00000007,0x00000051,0x00000007,0x0004003b,0x00000007,
-	0x0000005d,0x00000007,0x0004003b,0x00000007,0x00000064,0x00000007,0x0004003b,0x00000007,
-	0x00000068,0x00000007,0x0004003b,0x00000007,0x0000006f,0x00000007,0x0004003b,0x0000007a,
-	0x0000007b,0x00000007,0x0004003b,0x00000007,0x00000086,0x00000007,0x0004003b,0x00000088,
-	0x00000089,0x00000007,0x0004003b,0x00000088,0x00000095,0x00000007,0x0004003b,0x00000012,
-	0x00000098,0x00000007,0x0004003d,0x00000006,0x00000037,0x0000000f,0x00050041,0x00000026,
-	0x00000039,0x00000023,0x00000038,0x0004003d,0x00000006,0x0000003a,0x00000039,0x00050086,
-	0x00000006,0x0000003b,0x00000037,0x0000003a,0x0003003e,0x00000036,0x0000003b,0x0004003d,
-	0x00000006,0x0000003d,0x0000000f,0x00050041,0x00000026,0x0000003e,0x00000023,0x00000038,
-	0x0004003d,0x00000006,0x0000003f,0x0000003e,0x00050089,0x00000006,0x00000040,0x0000003d,
-	0x0000003f,0x0003003e,0x0000003c,0x00000040,0x0004003d,0x00000006,0x00000041,0x0000003c,
-	0x00050041,0x00000026,0x00000043,0x00000023,0x00000042,0x0004003d,0x00000006,0x00000044,
-	0x00000043,0x000500ae,0x00000045,0x00000046,0x00000041,0x00000044,0x000300f7,0x00000048,
-	0x00000000,0x000400fa,0x00000046,0x00000047,0x00000048,0x000200f8,0x00000047,0x000200fe,
-	0x00000049,0x000200f8,0x00000048,0x0004003d,0x00000006,0x0000004d,0x00000036,0x0003003e,
-	0x0000004c,0x0000004d,0x0004003d,0x00000006,0x0000004f,0x0000003c,0x0003003e,0x0000004e,
-	0x0000004f,0x00060039,0x00000006,0x00000050,0x0000000b,0x0000004c,0x0000004e,0x0003003e,
-	0x0000004b,0x00000050,0x0004003d,0x00000006,0x00000057,0x0000004b,0x00050086,0x00000006,
-	0x00000059,0x00000057,0x00000058,0x00060041,0x0000005a,0x0000005b,0x00000055,0x00000056,
-	0x00000059,0x0004003d,0x00000006,0x0000005c,0x0000005b,0x0003003e,0x00000051,0x0000005c,
-	0x0004003d,0x00000006,0x0000005e,0x0000003c,0x000500aa,0x00000045,0x00000060,0x0000005e,
-	0x0000005f,0x000600a9,0x00000024,0x00000062,0x00000060,0x00000030,0x00000061,0x0004007c,
-	0x00000006,0x00000063,0x00000062,0x0003003e,0x0000005d,0x00000063,0x0004003d,0x00000006,
-	0x00000066,0x0000003c,0x00050084,0x00000006,0x00000067,0x00000065,0x00000066,0x0003003e,
-	0x00000064,0x00000067,0x0004003d,0x00000006,0x00000069,0x0000003c,0x000500aa,0x00000045,
-	0x0000006a,0x00000069,0x0000005f,0x000600a9,0x00000024,0x0000006d,0x0000006a,0x0000006b,
-	0x0000006c,0x0004007c,0x00000006,0x0000006e,0x0000006d,0x0003003e,0x00000068,0x0000006e,
-	0x0004003d,0x00000006,0x00000070,0x00000051,0x0004003d,0x00000006,0x00000071,0x00000064,
-	0x000500c2,0x00000006,0x00000072,0x00000070,0x00000071,0x0004003d,0x00000006,0x00000073,
-	0x00000068,0x000500c7,0x00000006,0x00000074,0x00000072,0x00000073,0x0003003e,0x0000006f,
-	0x00000074,0x0004003d,0x00000006,0x00000075,0x0000005d,0x000500b0,0x00000045,0x00000077,
-	0x00000075,0x00000076,0x000300f7,0x00000079,0x00000000,0x000400fa,0x00000077,0x00000078,
-	0x00000079,0x000200f8,0x00000078,0x0004003d,0x00000006,0x0000007c,0x0000006f,0x0004003d,
-	0x00000006,0x0000007e,0x0000005d,0x00050082,0x00000006,0x00000080,0x0000007e,0x0000007f,
-	0x000500c4,0x00000024,0x00000081,0x0000007d,0x00000080,0x0004007c,0x00000006,0x00000082,
-	0x00000081,0x000500c7,0x00000006,0x00000083,0x0000007c,0x00000082,0x000500ab,0x00000045,
-	0x00000085,0x00000083,0x00000084,0x0003003e,0x0000007b,0x00000085,0x0004003d,0x00000045,
-	0x00000087,0x0000007b,0x000300f7,0x0000008b,0x00000000,0x000400fa,0x00000087,0x0000008a,
-	0x0000008f,0x000200f8,0x0000008a,0x0004003d,0x00000006,0x0000008d,0x0000005d,0x000500c4,
-	0x00000024,0x0000008e,0x0000008c,0x0000008d,0x0003003e,0x00000089,0x0000008e,0x000200f9,
-	0x0000008b,0x000200f8,0x0000008f,0x0003003e,0x00000089,0x00000056,0x000200f9,0x0000008b,
-	0x000200f8,0x0000008b,0x0004003d,0x00000024,0x00000090,0x00000089,0x0004007c,0x00000006,
-	0x00000091,0x00000090,0x0003003e,0x00000086,0x00000091,0x0004003d,0x00000006,0x00000092,
-	0x00000086,0x0004003d,0x00000006,0x00000093,0x0000006f,0x000500c5,0x00000006,0x00000094,
-	0x00000093,0x00000092,0x0003003e,0x0000006f,0x00000094,0x000200f9,0x00000079,0x000200f8,
-	0x00000079,0x0004003d,0x00000006,0x00000096,0x0000006f,0x0004007c,0x00000024,0x00000097,
-	0x00000096,0x0003003e,0x00000095,0x00000097,0x0004003d,0x00000024,0x0000009a,0x00000095,
-	0x0004006f,0x0000000d,0x0000009b,0x0000009a,0x00050085,0x0000000d,0x0000009c,0x00000099,
-	0x0000009b,0x00050081,0x0000000d,0x0000009e,0x0000009c,0x0000009d,0x0004003d,0x00000006,
-	0x0000009f,0x00000068,0x00040070,0x0000000d,0x000000a0,0x0000009f,0x00050088,0x0000000d,
-	0x000000a1,0x0000009e,0x000000a0,0x0003003e,0x00000098,0x000000a1,0x0004003d,0x0000000d,
-	0x000000a2,0x00000098,0x000200fe,0x000000a2,0x00010038,0x00050036,0x0000000d,0x00000015,
-	0x00000000,0x00000013,0x00030037,0x00000012,0x00000014,0x000200f8,0x00000016,0x0004003d,
-	0x0000000d,0x000000a5,0x00000014,0x000200fe,0x000000a5,0x00010038,0x00050036,0x00000006,
-	0x0000001a,0x00000000,0x00000017,0x00030037,0x00000007,0x00000018,0x00030037,0x00000012,
-	0x00000019,0x000200f8,0x0000001b,0x0004003b,0x00000007,0x000000a8,0x00000007,0x0004003d,
-	0x0000000d,0x000000a9,0x00000019,0x0004007c,0x00000024,0x000000aa,0x000000a9,0x0004007c,
-	0x00000006,0x000000ab,0x000000aa,0x0003003e,0x000000a8,0x000000ab,0x0004003d,0x00000006,
-	0x000000ac,0x000000a8,0x000200fe,0x000000ac,0x00010038,0x00050036,0x00000002,0x0000001e,
-	0x00000000,0x0000001c,0x00030037,0x00000007,0x0000001d,0x000200f8,0x0000001f,0x00050041,
-	0x000000b6,0x000000b7,0x000000b5,0x00000084,0x0004003d,0x00000006,0x000000b8,0x000000b7,
-	0x00050041,0x00000026,0x000000b9,0x00000023,0x0000006b,0x0004003d,0x00000006,0x000000ba,
-	0x000000b9,0x00050086,0x00000006,0x000000bb,0x000000ba,0x00000058,0x00050080,0x00000006,
-	0x000000bc,0x000000b8,0x000000bb,0x0004003d,0x00000006,0x000000bd,0x0000001d,0x00060041,
-	0x0000005a,0x000000be,0x000000b2,0x00000056,0x000000bc,0x0003003e,0x000000be,0x000000bd,
-	0x000100fd,0x00010038
+	0x00000024,0x0000008c,0xffffffff,0x0004002b,0x0000000d,0x000000a0,0xbf800000,0x0003001d,
+	0x000000af,0x00000006,0x0003001e,0x000000b0,0x000000af,0x00040020,0x000000b1,0x00000002,
+	0x000000b0,0x0004003b,0x000000b1,0x000000b2,0x00000002,0x00040017,0x000000b3,0x00000006,
+	0x00000003,0x00040020,0x000000b4,0x00000001,0x000000b3,0x0004003b,0x000000b4,0x000000b5,
+	0x00000001,0x00040020,0x000000b6,0x00000001,0x00000006,0x0004002b,0x00000006,0x000000e2,
+	0x00000040,0x0006002c,0x000000b3,0x000000e3,0x000000e2,0x0000007f,0x0000007f,0x00050036,
+	0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,
+	0x000000bf,0x00000007,0x0004003b,0x00000007,0x000000c0,0x00000007,0x0004003b,0x00000007,
+	0x000000c8,0x00000007,0x0004003b,0x00000012,0x000000ce,0x00000007,0x0004003b,0x00000007,
+	0x000000cf,0x00000007,0x0004003b,0x00000012,0x000000d2,0x00000007,0x0004003b,0x00000012,
+	0x000000d3,0x00000007,0x0004003b,0x00000007,0x000000d6,0x00000007,0x0004003b,0x00000012,
+	0x000000d8,0x00000007,0x0004003b,0x00000007,0x000000df,0x00000007,0x0003003e,0x000000bf,
+	0x00000084,0x0003003e,0x000000c0,0x00000084,0x000200f9,0x000000c1,0x000200f8,0x000000c1,
+	0x000400f6,0x000000c3,0x000000c4,0x00000000,0x000200f9,0x000000c5,0x000200f8,0x000000c5,
+	0x0004003d,0x00000006,0x000000c6,0x000000c0,0x000500b0,0x00000045,0x000000c7,0x000000c6,
+	0x0000007f,0x000400fa,0x000000c7,0x000000c2,0x000000c3,0x000200f8,0x000000c2,0x00050041,
+	0x000000b6,0x000000c9,0x000000b5,0x00000084,0x0004003d,0x00000006,0x000000ca,0x000000c9,
+	0x00050084,0x00000006,0x000000cb,0x000000ca,0x0000007f,0x0004003d,0x00000006,0x000000cc,
+	0x000000c0,0x00050080,0x00000006,0x000000cd,0x000000cb,0x000000cc,0x0003003e,0x000000c8,
+	0x000000cd,0x0004003d,0x00000006,0x000000d0,0x000000c8,0x0003003e,0x000000cf,0x000000d0,
+	0x00050039,0x0000000d,0x000000d1,0x00000010,0x000000cf,0x0003003e,0x000000ce,0x000000d1,
+	0x0004003d,0x0000000d,0x000000d4,0x000000ce,0x0003003e,0x000000d3,0x000000d4,0x00050039,
+	0x0000000d,0x000000d5,0x00000015,0x000000d3,0x0003003e,0x000000d2,0x000000d5,0x0004003d,
+	0x00000006,0x000000d7,0x000000c8,0x0003003e,0x000000d6,0x000000d7,0x0004003d,0x0000000d,
+	0x000000d9,0x000000d2,0x0003003e,0x000000d8,0x000000d9,0x00060039,0x00000006,0x000000da,
+	0x0000001a,0x000000d6,0x000000d8,0x0004003d,0x00000006,0x000000db,0x000000bf,0x000500c5,
+	0x00000006,0x000000dc,0x000000db,0x000000da,0x0003003e,0x000000bf,0x000000dc,0x000200f9,
+	0x000000c4,0x000200f8,0x000000c4,0x0004003d,0x00000006,0x000000dd,0x000000c0,0x00050080,
+	0x00000006,0x000000de,0x000000dd,0x0000007d,0x0003003e,0x000000c0,0x000000de,0x000200f9,
+	0x000000c1,0x000200f8,0x000000c3,0x0004003d,0x00000006,0x000000e0,0x000000bf,0x0003003e,
+	0x000000df,0x000000e0,0x00050039,0x00000002,0x000000e1,0x0000001e,0x000000df,0x000100fd,
+	0x00010038,0x00050036,0x00000006,0x0000000b,0x00000000,0x00000008,0x00030037,0x00000007,
+	0x00000009,0x00030037,0x00000007,0x0000000a,0x000200f8,0x0000000c,0x0004003d,0x00000006,
+	0x00000020,0x00000009,0x00050041,0x00000026,0x00000027,0x00000023,0x00000025,0x0004003d,
+	0x00000006,0x00000028,0x00000027,0x00050084,0x00000006,0x00000029,0x00000020,0x00000028,
+	0x0004003d,0x00000006,0x0000002a,0x0000000a,0x00050041,0x00000026,0x0000002c,0x00000023,
+	0x0000002b,0x0004003d,0x00000006,0x0000002d,0x0000002c,0x00050084,0x00000006,0x0000002e,
+	0x0000002a,0x0000002d,0x00050080,0x00000006,0x0000002f,0x00000029,0x0000002e,0x00050041,
+	0x00000026,0x00000031,0x00000023,0x00000030,0x0004003d,0x00000006,0x00000032,0x00000031,
+	0x00050080,0x00000006,0x00000033,0x0000002f,0x00000032,0x000200fe,0x00000033,0x00010038,
+	0x00050036,0x0000000d,0x00000010,0x00000000,0x0000000e,0x00030037,0x00000007,0x0000000f,
+	0x000200f8,0x00000011,0x0004003b,0x00000007,0x00000036,0x00000007,0x0004003b,0x00000007,
+	0x0000003c,0x00000007,0x0004003b,0x00000007,0x0000004b,0x00000007,0x0004003b,0x00000007,
+	0x0000004c,0x00000007,0x0004003b,0x00000007,0x0000004e,0x00000007,0x0004003b,0x00000007,
+	0x00000051,0x00000007,0x0004003b,0x00000007,0x0000005d,0x00000007,0x0004003b,0x00000007,
+	0x00000064,0x00000007,0x0004003b,0x00000007,0x00000068,0x00000007,0x0004003b,0x00000007,
+	0x0000006f,0x00000007,0x0004003b,0x0000007a,0x0000007b,0x00000007,0x0004003b,0x00000007,
+	0x00000086,0x00000007,0x0004003b,0x00000088,0x00000089,0x00000007,0x0004003b,0x00000088,
+	0x00000095,0x00000007,0x0004003b,0x00000012,0x00000098,0x00000007,0x0004003d,0x00000006,
+	0x00000037,0x0000000f,0x00050041,0x00000026,0x00000039,0x00000023,0x00000038,0x0004003d,
+	0x00000006,0x0000003a,0x00000039,0x00050086,0x00000006,0x0000003b,0x00000037,0x0000003a,
+	0x0003003e,0x00000036,0x0000003b,0x0004003d,0x00000006,0x0000003d,0x0000000f,0x00050041,
+	0x00000026,0x0000003e,0x00000023,0x00000038,0x0004003d,0x00000006,0x0000003f,0x0000003e,
+	0x00050089,0x00000006,0x00000040,0x0000003d,0x0000003f,0x0003003e,0x0000003c,0x00000040,
+	0x0004003d,0x00000006,0x00000041,0x0000003c,0x00050041,0x00000026,0x00000043,0x00000023,
+	0x00000042,0x0004003d,0x00000006,0x00000044,0x00000043,0x000500ae,0x00000045,0x00000046,
+	0x00000041,0x00000044,0x000300f7,0x00000048,0x00000000,0x000400fa,0x00000046,0x00000047,
+	0x00000048,0x000200f8,0x00000047,0x000200fe,0x00000049,0x000200f8,0x00000048,0x0004003d,
+	0x00000006,0x0000004d,0x00000036,0x0003003e,0x0000004c,0x0000004d,0x0004003d,0x00000006,
+	0x0000004f,0x0000003c,0x0003003e,0x0000004e,0x0000004f,0x00060039,0x00000006,0x00000050,
+	0x0000000b,0x0000004c,0x0000004e,0x0003003e,0x0000004b,0x00000050,0x0004003d,0x00000006,
+	0x00000057,0x0000004b,0x00050086,0x00000006,0x00000059,0x00000057,0x00000058,0x00060041,
+	0x0000005a,0x0000005b,0x00000055,0x00000056,0x00000059,0x0004003d,0x00000006,0x0000005c,
+	0x0000005b,0x0003003e,0x00000051,0x0000005c,0x0004003d,0x00000006,0x0000005e,0x0000003c,
+	0x000500aa,0x00000045,0x00000060,0x0000005e,0x0000005f,0x000600a9,0x00000024,0x00000062,
+	0x00000060,0x00000030,0x00000061,0x0004007c,0x00000006,0x00000063,0x00000062,0x0003003e,
+	0x0000005d,0x00000063,0x0004003d,0x00000006,0x00000066,0x0000003c,0x00050084,0x00000006,
+	0x00000067,0x00000065,0x00000066,0x0003003e,0x00000064,0x00000067,0x0004003d,0x00000006,
+	0x00000069,0x0000003c,0x000500aa,0x00000045,0x0000006a,0x00000069,0x0000005f,0x000600a9,
+	0x00000024,0x0000006d,0x0000006a,0x0000006b,0x0000006c,0x0004007c,0x00000006,0x0000006e,
+	0x0000006d,0x0003003e,0x00000068,0x0000006e,0x0004003d,0x00000006,0x00000070,0x00000051,
+	0x0004003d,0x00000006,0x00000071,0x00000064,0x000500c2,0x00000006,0x00000072,0x00000070,
+	0x00000071,0x0004003d,0x00000006,0x00000073,0x00000068,0x000500c7,0x00000006,0x00000074,
+	0x00000072,0x00000073,0x0003003e,0x0000006f,0x00000074,0x0004003d,0x00000006,0x00000075,
+	0x0000005d,0x000500b0,0x00000045,0x00000077,0x00000075,0x00000076,0x000300f7,0x00000079,
+	0x00000000,0x000400fa,0x00000077,0x00000078,0x00000079,0x000200f8,0x00000078,0x0004003d,
+	0x00000006,0x0000007c,0x0000006f,0x0004003d,0x00000006,0x0000007e,0x0000005d,0x00050082,
+	0x00000006,0x00000080,0x0000007e,0x0000007f,0x000500c4,0x00000024,0x00000081,0x0000007d,
+	0x00000080,0x0004007c,0x00000006,0x00000082,0x00000081,0x000500c7,0x00000006,0x00000083,
+	0x0000007c,0x00000082,0x000500ab,0x00000045,0x00000085,0x00000083,0x00000084,0x0003003e,
+	0x0000007b,0x00000085,0x0004003d,0x00000045,0x00000087,0x0000007b,0x000300f7,0x0000008b,
+	0x00000000,0x000400fa,0x00000087,0x0000008a,0x0000008f,0x000200f8,0x0000008a,0x0004003d,
+	0x00000006,0x0000008d,0x0000005d,0x000500c4,0x00000024,0x0000008e,0x0000008c,0x0000008d,
+	0x0003003e,0x00000089,0x0000008e,0x000200f9,0x0000008b,0x000200f8,0x0000008f,0x0003003e,
+	0x00000089,0x00000056,0x000200f9,0x0000008b,0x000200f8,0x0000008b,0x0004003d,0x00000024,
+	0x00000090,0x00000089,0x0004007c,0x00000006,0x00000091,0x00000090,0x0003003e,0x00000086,
+	0x00000091,0x0004003d,0x00000006,0x00000092,0x00000086,0x0004003d,0x00000006,0x00000093,
+	0x0000006f,0x000500c5,0x00000006,0x00000094,0x00000093,0x00000092,0x0003003e,0x0000006f,
+	0x00000094,0x000200f9,0x00000079,0x000200f8,0x00000079,0x0004003d,0x00000006,0x00000096,
+	0x0000006f,0x0004007c,0x00000024,0x00000097,0x00000096,0x0003003e,0x00000095,0x00000097,
+	0x0004003d,0x00000024,0x00000099,0x00000095,0x0004006f,0x0000000d,0x0000009a,0x00000099,
+	0x0004003d,0x00000006,0x0000009b,0x00000068,0x000500c2,0x00000006,0x0000009c,0x0000009b,
+	0x0000007d,0x00040070,0x0000000d,0x0000009d,0x0000009c,0x00050088,0x0000000d,0x0000009e,
+	0x0000009a,0x0000009d,0x0003003e,0x00000098,0x0000009e,0x0004003d,0x0000000d,0x0000009f,
+	0x00000098,0x0007000c,0x0000000d,0x000000a1,0x00000001,0x00000028,0x0000009f,0x000000a0,
+	0x0003003e,0x00000098,0x000000a1,0x0004003d,0x0000000d,0x000000a2,0x00000098,0x000200fe,
+	0x000000a2,0x00010038,0x00050036,0x0000000d,0x00000015,0x00000000,0x00000013,0x00030037,
+	0x00000012,0x00000014,0x000200f8,0x00000016,0x0004003d,0x0000000d,0x000000a5,0x00000014,
+	0x000200fe,0x000000a5,0x00010038,0x00050036,0x00000006,0x0000001a,0x00000000,0x00000017,
+	0x00030037,0x00000007,0x00000018,0x00030037,0x00000012,0x00000019,0x000200f8,0x0000001b,
+	0x0004003b,0x00000007,0x000000a8,0x00000007,0x0004003d,0x0000000d,0x000000a9,0x00000019,
+	0x0004007c,0x00000024,0x000000aa,0x000000a9,0x0004007c,0x00000006,0x000000ab,0x000000aa,
+	0x0003003e,0x000000a8,0x000000ab,0x0004003d,0x00000006,0x000000ac,0x000000a8,0x000200fe,
+	0x000000ac,0x00010038,0x00050036,0x00000002,0x0000001e,0x00000000,0x0000001c,0x00030037,
+	0x00000007,0x0000001d,0x000200f8,0x0000001f,0x00050041,0x000000b6,0x000000b7,0x000000b5,
+	0x00000084,0x0004003d,0x00000006,0x000000b8,0x000000b7,0x00050041,0x00000026,0x000000b9,
+	0x00000023,0x0000006b,0x0004003d,0x00000006,0x000000ba,0x000000b9,0x00050086,0x00000006,
+	0x000000bb,0x000000ba,0x00000058,0x00050080,0x00000006,0x000000bc,0x000000b8,0x000000bb,
+	0x0004003d,0x00000006,0x000000bd,0x0000001d,0x00060041,0x0000005a,0x000000be,0x000000b2,
+	0x00000056,0x000000bc,0x0003003e,0x000000be,0x000000bd,0x000100fd,0x00010038
 };
 
 // Generated from:
@@ -270,7 +270,8 @@
 //         valueAsUint |= signExtension;
 //     }
 //     int valueAsInt = int(valueAsUint);
-//           float value =(2 * float(valueAsInt)+ 1)/ valueMask;
+//           float value = float(valueAsInt)/(valueMask >> 1);
+//     value = max(value, float(- 1));
 //
 //     return value;
 // }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp
index a375387..582f472 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp
@@ -10,6 +10,7 @@
 //  - Flags:
 //    * IsPrimitiveRestartEnabled: enables conversion from 0xFF to 0xFFFF,
 //                                 the restart indices for 8-bit and 16-bit indices.
+//    * IsIndirect: Use indirect buffer for index info
 //
 
 #version 450 core
@@ -28,6 +29,28 @@
     uint srcData[];
 };
 
+#if IsIndirect
+layout (set = 0, binding = 2) readonly buffer cmd
+{
+    // Shader invocations read from the cmdData buffer to determine what indices to convert
+    // The command data starts at offset cmdOffsetDiv4 of the cmdData buffer.
+    uint cmdData[];
+};
+
+layout (push_constant) uniform PushConstants
+{
+    // Read offset in bytes into the cmdData array, divided by four.
+    uint cmdOffsetDiv4;
+    // Write offset in bytes into the dstData array, divided by four.
+    uint dstOffsetDiv4;
+    // Maximum size of the read buffer. The highest index value we will convert.
+    uint maxIndex;
+    // Not used in the shader. Kept to pad "PushConstants" to the size of a vec4.
+    uint _padding;
+};
+
+#else
+
 layout (push_constant) uniform PushConstants
 {
     // Read offset in bytes into the srcData array.
@@ -39,10 +62,15 @@
     // Not used in the shader. Kept to pad "PushConstants" to the size of a vec4.
     uint _padding;
 };
+#endif
 
 uint PullIndex(uint index)
 {
+#if IsIndirect
+    uint srcIndex = index;
+#else
     uint srcIndex = index + srcOffset;
+#endif
     uint srcBlock = srcData[srcIndex >> 2];
     uint srcComponent = (srcIndex & 3);
 
@@ -64,21 +92,37 @@
 
 void main()
 {
-    // The element index is simply the invocation ID times two.
-    uint index = (gl_GlobalInvocationID.x << 1);
+#if IsIndirect
+    uint indexCount = cmdData[cmdOffsetDiv4];
+    uint firstIndex = cmdData[cmdOffsetDiv4 + 2];
+    uint endIndex = firstIndex + indexCount;
+#else
+    uint firstIndex = 0;
+    uint endIndex = firstIndex + maxIndex;
+#endif
+
+    // The element index is invocation ID times two plus
+    // the firstIndex / 2.
+    // This way the first indexCount/2 invocations will transform
+    // the data and any additional invocations will be a no-op
+    uint index = ((gl_GlobalInvocationID.x + (firstIndex >> 1)) << 1);
 
     // Don't write anything to dest if we're entirely past the end of the buffer.
     // We assume buffer size is uint-aligned.
-    if (index >= maxIndex)
+    if (index >= endIndex)
         return;
 
     uint dstValue = 0;
 
-    uint srcValue = PullIndex(index);
-    PackIndexValue(srcValue, 0, dstValue);
+    // Skip packing the first index if we're before the first element.
+    if (index >= firstIndex)
+    {
+        uint srcValue = PullIndex(index);
+        PackIndexValue(srcValue, 0, dstValue);
+    }
 
     // Skip packing the second index if we're after the last element.
-    if (index + 1 < maxIndex)
+    if (index + 1 < endIndex)
     {
         uint srcValue = PullIndex(index + 1);
         PackIndexValue(srcValue, 1, dstValue);
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp.json b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp.json
index 0ecbc6b..26f1d0a 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp.json
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp.json
@@ -7,6 +7,7 @@
         "ConvertIndex.comp.json: Build parameters for ConvertIndex.comp."
     ],
     "Flags": [
-        "IsPrimitiveRestartEnabled"
+        "IsPrimitiveRestartEnabled",
+        "IsIndirect"
     ]
 }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp
index e5eb83c..9f11592 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp
@@ -55,6 +55,18 @@
 //     * A2BGR10UintToFloat: Same types as A2BGR10UintToUint for source (including uscaled).
 //                           Converts to float.
 //     * A2BGR10SnormToFloat: Similar to IntToFloat, but normalized and only for A2BGR10.
+//     * RGB10A2SintToFloat: Same types as RGB10A2SintToSint for source (including scaled).
+//                           Converts to float.
+//     * RGB10A2UintToFloat: Same types as RGB10A2UintToUint for source (including uscaled).
+//                           Converts to float.
+//     * RGB10A2SnormToFloat: Similar to IntToFloat, but normalized and only for RGB10A2.
+//     * RGB10A2UnormToFloat: Similar to UintToFloat, but normalized and only for RGB10A2.
+//     * RGB10X2SintToFloat: Same types as RGB10X2SintToSint for source (including scaled).
+//                           Converts to float.
+//     * RGB10X2UintToFloat: Same types as RGB10X2UintToUint for source (including uscaled).
+//                           Converts to float.
+//     * RGB10X2SnormToFloat: Similar to IntToFloat, but normalized and only for RGB10X2.
+//     * HalfFloatToHalfFloat: covers half float type only.
 //
 // SintToSint, UintToUint and FloatToFloat correspond to CopyNativeVertexData() and
 // Copy8SintTo16SintVertexData() in renderer/copyvertex.inc, FixedToFloat corresponds to
@@ -62,16 +74,22 @@
 // normalized=false and SnormToFloat and UnormToFloat correspond to CopyTo32FVertexData with
 // normalized=true. A2BGR10SintToSint, A2BGR10UintToUint, A2BGR10SintToFloat, A2BGR10UintToFloat
 // and A2BGR10SnormToFloat correspond to CopyXYZ10W2ToXYZW32FVertexData with the proper options.
-//
+// RGB10A2SintToFloat, RGB10A2UintToFloat, RGB10A2SnormToFloat, and RGB10X2UnormToFloat correspond
+// to CopyW2XYZ10ToXYZW32FVertexData, and RGB10X2SintToFloat, RGB10UintToFloat,
+// RGB10X2SnormToFloat, and RGB10X2UnormToFloat correspond to CopyXYZ10ToXYZW32FVertexData with
+// the proper options. HalfFloatToHalfFloat correspond to CopyNativeVertexData().
 
 #version 450 core
 
 // Source type
-#if SintToSint || SintToFloat || A2BGR10SintToSint || A2BGR10SintToFloat
+#if SintToSint || SintToFloat || A2BGR10SintToSint || A2BGR10SintToFloat || RGB10A2SintToFloat || \
+    RGB10X2SintToFloat
 #define SrcType int
-#elif UintToUint || UintToFloat || A2BGR10UintToUint || A2BGR10UintToFloat
+#elif UintToUint || UintToFloat || A2BGR10UintToUint || A2BGR10UintToFloat || \
+    RGB10A2UintToFloat || RGB10X2UintToFloat || HalfFloatToHalfFloat
 #define SrcType uint
-#elif SnormToFloat || UnormToFloat || FixedToFloat || FloatToFloat || A2BGR10SnormToFloat
+#elif SnormToFloat || UnormToFloat || FixedToFloat || FloatToFloat || A2BGR10SnormToFloat || \
+    RGB10A2SnormToFloat || RGB10A2UnormToFloat || RGB10X2SnormToFloat || RGB10X2UnormToFloat
 #define SrcType float
 #else
 #error "Not all conversions are accounted for"
@@ -81,11 +99,13 @@
 #if SintToSint || A2BGR10SintToSint
 #define DestType int
 #define IsDestFloat 0
-#elif UintToUint || A2BGR10UintToUint
+#elif UintToUint || A2BGR10UintToUint || HalfFloatToHalfFloat
 #define DestType uint
 #define IsDestFloat 0
 #elif SintToFloat || UintToFloat || SnormToFloat || UnormToFloat || FixedToFloat || FloatToFloat || \
-      A2BGR10SintToFloat || A2BGR10UintToFloat || A2BGR10SnormToFloat
+    A2BGR10SintToFloat || A2BGR10UintToFloat || A2BGR10SnormToFloat || \
+    RGB10A2SintToFloat || RGB10A2UintToFloat || RGB10A2SnormToFloat || RGB10A2UnormToFloat || \
+    RGB10X2SintToFloat || RGB10X2UintToFloat || RGB10X2SnormToFloat || RGB10X2UnormToFloat
 #define DestType float
 #define IsDestFloat 1
 #else
@@ -202,11 +222,14 @@
     uint vertex = cd / Nd;
     uint component = cd % Nd;
 
-    // If no such component, return 0
+    // Fill the alpha channel with 1.0f in case of the source format doesn't have an alpha channel
+    // For all other components fill in 0
+#if !(RGB10X2SintToFloat || RGB10X2UintToFloat || RGB10X2SnormToFloat || RGB10X2UnormToFloat)
     if (component >= Ns)
     {
         return 0;
     }
+#endif
 
     // Load the source component
     uint offset = getSourceComponentOffset(vertex, component);
@@ -217,15 +240,30 @@
     uint valueBits = component == 3 ? 2 : 10;
     uint shiftBits = 10 * component;
     uint valueMask = component == 3 ? 0x03 : 0x3FF;
+#elif RGB10A2SintToFloat || RGB10A2UintToFloat || RGB10A2SnormToFloat || RGB10A2UnormToFloat || \
+    RGB10X2SintToFloat || RGB10X2UintToFloat || RGB10X2SnormToFloat || RGB10X2UnormToFloat
+    uint valueBits = component == 3 ? 2 : 10;
+    // channel order is reversed
+    uint shiftBits = component == 3 ? 0 : (valueBits * (2 - component) + 2);
+    uint valueMask = component == 3 ? 0x03 : 0x3FF;
 #else
     uint shiftBits = getShiftBits(offset, Bs);
     uint valueBits = Bs * 8;
     uint valueMask = valueBits == 32 ? -1 : (1 << valueBits) - 1;
 #endif
+
+    // When alpha channel is dummy, fill it with 1.0f
+#if RGB10X2SintToFloat || RGB10X2UintToFloat || RGB10X2SnormToFloat
+    uint valueAsUint = component == 3 ? 0x01 : (block >> shiftBits) & valueMask;
+#elif RGB10X2UnormToFloat
+    uint valueAsUint = component == 3 ? 0x03 : (block >> shiftBits) & valueMask;
+#else
     uint valueAsUint = (block >> shiftBits) & valueMask;
+#endif
 
     // Convert to SrcType
-#if SintToSint || SintToFloat || A2BGR10SintToSint || A2BGR10SintToFloat
+#if SintToSint || SintToFloat || A2BGR10SintToSint || A2BGR10SintToFloat || RGB10A2SintToFloat \
+    || RGB10X2SintToFloat
     if (valueBits < 32)
     {
         bool isNegative = (valueAsUint & (1 << (valueBits - 1))) != 0;
@@ -236,9 +274,10 @@
         valueAsUint |= signExtension;
     }
     SrcType value = SrcType(valueAsUint);
-#elif UintToUint || UintToFloat || A2BGR10UintToUint || A2BGR10UintToFloat
+#elif UintToUint || UintToFloat || A2BGR10UintToUint || A2BGR10UintToFloat || RGB10A2UintToFloat \
+    || RGB10X2UintToFloat || HalfFloatToHalfFloat
     SrcType value = valueAsUint;
-#elif SnormToFloat || A2BGR10SnormToFloat
+#elif SnormToFloat || A2BGR10SnormToFloat || RGB10A2SnormToFloat || RGB10X2SnormToFloat
     if (valueBits < 32)
     {
         bool isNegative = (valueAsUint & (1 << (valueBits - 1))) != 0;
@@ -246,8 +285,9 @@
         valueAsUint |= signExtension;
     }
     int valueAsInt = int(valueAsUint);
-    SrcType value = (2 * float(valueAsInt) + 1) / valueMask;
-#elif UnormToFloat
+    SrcType value = float(valueAsInt) / (valueMask >> 1);
+    value = max(value, float(-1));
+#elif UnormToFloat || RGB10A2UnormToFloat || RGB10X2UnormToFloat
     float positiveMax = valueMask;
     // Scale [0, P] to [0, 1]
     SrcType value = valueAsUint / positiveMax;
@@ -275,7 +315,7 @@
     // Return valueAsUint, shifted to the right spot.  Multiple calls to this function should be |ed
     // and eventually written to the destination.
 
-#if SintToSint || UintToUint || A2BGR10SintToSint || A2BGR10UintToUint
+#if SintToSint || UintToUint || A2BGR10SintToSint || A2BGR10UintToUint || HalfFloatToHalfFloat
     uint vertex = cd / Nd;
     uint component = cd % Nd;
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json
index 801c488..70f6527 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json
@@ -22,7 +22,16 @@
         "A2BGR10UintToUint",
         "A2BGR10SintToFloat",
         "A2BGR10UintToFloat",
-        "A2BGR10SnormToFloat"
+        "A2BGR10SnormToFloat",
+        "RGB10A2SintToFloat",
+        "RGB10A2UintToFloat",
+        "RGB10A2SnormToFloat",
+        "RGB10A2UnormToFloat",
+        "RGB10X2SintToFloat",
+        "RGB10X2UintToFloat",
+        "RGB10X2SnormToFloat",
+        "RGB10X2UnormToFloat",
+        "HalfFloatToHalfFloat"
     ]
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
index 2c93903..ca60902 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
@@ -16,6 +16,7 @@
 #include "libANGLE/renderer/vulkan/FramebufferVk.h"
 #include "libANGLE/renderer/vulkan/ProgramVk.h"
 #include "libANGLE/renderer/vulkan/RendererVk.h"
+#include "libANGLE/renderer/vulkan/VertexArrayVk.h"
 #include "libANGLE/renderer/vulkan/vk_format_utils.h"
 #include "libANGLE/renderer/vulkan/vk_helpers.h"
 
@@ -182,6 +183,19 @@
     stateOut->alphaBlendOp        = static_cast<VkBlendOp>(packedState.alphaBlendOp);
 }
 
+void SetPipelineShaderStageInfo(const VkStructureType type,
+                                const VkShaderStageFlagBits stage,
+                                const VkShaderModule module,
+                                VkPipelineShaderStageCreateInfo *shaderStage)
+{
+    shaderStage->sType               = type;
+    shaderStage->flags               = 0;
+    shaderStage->stage               = stage;
+    shaderStage->module              = module;
+    shaderStage->pName               = "main";
+    shaderStage->pSpecializationInfo = nullptr;
+}
+
 angle::Result InitializeRenderPassFromDesc(vk::Context *context,
                                            const RenderPassDesc &desc,
                                            const AttachmentOpsArray &ops,
@@ -593,7 +607,7 @@
 }
 
 angle::Result GraphicsPipelineDesc::initializePipeline(
-    vk::Context *context,
+    ContextVk *contextVk,
     const vk::PipelineCache &pipelineCacheVk,
     const RenderPass &compatibleRenderPass,
     const PipelineLayout &pipelineLayout,
@@ -601,9 +615,10 @@
     const gl::ComponentTypeMask &programAttribsTypeMask,
     const ShaderModule *vertexModule,
     const ShaderModule *fragmentModule,
+    const ShaderModule *geometryModule,
     Pipeline *pipelineOut) const
 {
-    angle::FixedVector<VkPipelineShaderStageCreateInfo, 2> shaderStages;
+    angle::FixedVector<VkPipelineShaderStageCreateInfo, 3> shaderStages;
     VkPipelineVertexInputStateCreateInfo vertexInputState     = {};
     VkPipelineInputAssemblyStateCreateInfo inputAssemblyState = {};
     VkPipelineViewportStateCreateInfo viewportState           = {};
@@ -618,25 +633,27 @@
     // Vertex shader is always expected to be present.
     ASSERT(vertexModule != nullptr);
     VkPipelineShaderStageCreateInfo vertexStage = {};
-    vertexStage.sType               = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
-    vertexStage.flags               = 0;
-    vertexStage.stage               = VK_SHADER_STAGE_VERTEX_BIT;
-    vertexStage.module              = vertexModule->getHandle();
-    vertexStage.pName               = "main";
-    vertexStage.pSpecializationInfo = nullptr;
+    SetPipelineShaderStageInfo(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
+                               VK_SHADER_STAGE_VERTEX_BIT, vertexModule->getHandle(), &vertexStage);
     shaderStages.push_back(vertexStage);
 
+    if (geometryModule)
+    {
+        VkPipelineShaderStageCreateInfo geometryStage = {};
+        SetPipelineShaderStageInfo(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
+                                   VK_SHADER_STAGE_GEOMETRY_BIT, geometryModule->getHandle(),
+                                   &geometryStage);
+        shaderStages.push_back(geometryStage);
+    }
+
     // Fragment shader is optional.
     // anglebug.com/3509 - Don't compile the fragment shader if rasterizationDiscardEnable = true
     if (fragmentModule && !mRasterizationAndMultisampleStateInfo.bits.rasterizationDiscardEnable)
     {
         VkPipelineShaderStageCreateInfo fragmentStage = {};
-        fragmentStage.sType               = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
-        fragmentStage.flags               = 0;
-        fragmentStage.stage               = VK_SHADER_STAGE_FRAGMENT_BIT;
-        fragmentStage.module              = fragmentModule->getHandle();
-        fragmentStage.pName               = "main";
-        fragmentStage.pSpecializationInfo = nullptr;
+        SetPipelineShaderStageInfo(VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
+                                   VK_SHADER_STAGE_FRAGMENT_BIT, fragmentModule->getHandle(),
+                                   &fragmentStage);
         shaderStages.push_back(fragmentStage);
     }
 
@@ -657,7 +674,6 @@
     VkPipelineVertexInputDivisorStateCreateInfoEXT divisorState = {};
     divisorState.sType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT;
     divisorState.pVertexBindingDivisors = divisorDesc.data();
-
     for (size_t attribIndexSizeT : activeAttribLocationsMask)
     {
         const uint32_t attribIndex = static_cast<uint32_t>(attribIndexSizeT);
@@ -682,7 +698,7 @@
 
         // Get the corresponding VkFormat for the attrib's format.
         angle::FormatID formatID         = static_cast<angle::FormatID>(packedAttrib.format);
-        const vk::Format &format         = context->getRenderer()->getFormat(formatID);
+        const vk::Format &format         = contextVk->getRenderer()->getFormat(formatID);
         const angle::Format &angleFormat = format.angleFormat();
         VkFormat vkFormat                = format.vkBufferFormat;
 
@@ -855,8 +871,8 @@
     createInfo.basePipelineHandle  = VK_NULL_HANDLE;
     createInfo.basePipelineIndex   = 0;
 
-    ANGLE_VK_TRY(context,
-                 pipelineOut->initGraphics(context->getDevice(), createInfo, pipelineCacheVk));
+    ANGLE_VK_TRY(contextVk,
+                 pipelineOut->initGraphics(contextVk->getDevice(), createInfo, pipelineCacheVk));
     return angle::Result::Continue;
 }
 
@@ -869,10 +885,6 @@
 {
     vk::PackedAttribDesc &packedAttrib = mVertexInputAttribs.attribs[attribIndex];
 
-    // TODO: Handle the case where the divisor overflows the field that holds it.
-    // http://anglebug.com/2672
-    ASSERT(divisor <= std::numeric_limits<decltype(packedAttrib.divisor)>::max());
-
     SetBitField(packedAttrib.stride, stride);
     SetBitField(packedAttrib.divisor, divisor);
 
@@ -1494,7 +1506,7 @@
                                                  uint32_t size)
 {
     ASSERT(shaderType == gl::ShaderType::Vertex || shaderType == gl::ShaderType::Fragment ||
-           shaderType == gl::ShaderType::Compute);
+           shaderType == gl::ShaderType::Geometry || shaderType == gl::ShaderType::Compute);
     PackedPushConstantRange &packed = mPushConstantRanges[shaderType];
     packed.offset                   = offset;
     packed.size                     = size;
@@ -1592,7 +1604,7 @@
     mPayload.clear();
 }
 
-angle::Result RenderPassCache::addRenderPass(vk::Context *context,
+angle::Result RenderPassCache::addRenderPass(ContextVk *contextVk,
                                              Serial serial,
                                              const vk::RenderPassDesc &desc,
                                              vk::RenderPass **renderPassOut)
@@ -1623,7 +1635,7 @@
                         VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL);
     }
 
-    return getRenderPassWithOps(context, serial, desc, ops, renderPassOut);
+    return getRenderPassWithOps(contextVk, serial, desc, ops, renderPassOut);
 }
 
 angle::Result RenderPassCache::getRenderPassWithOps(vk::Context *context,
@@ -1690,14 +1702,14 @@
     for (auto &item : mPayload)
     {
         vk::PipelineHelper &pipeline = item.second;
-        context->releaseObject(pipeline.getSerial(), &pipeline.getPipeline());
+        context->addGarbage(&pipeline.getPipeline());
     }
 
     mPayload.clear();
 }
 
 angle::Result GraphicsPipelineCache::insertPipeline(
-    vk::Context *context,
+    ContextVk *contextVk,
     const vk::PipelineCache &pipelineCacheVk,
     const vk::RenderPass &compatibleRenderPass,
     const vk::PipelineLayout &pipelineLayout,
@@ -1705,6 +1717,7 @@
     const gl::ComponentTypeMask &programAttribsTypeMask,
     const vk::ShaderModule *vertexModule,
     const vk::ShaderModule *fragmentModule,
+    const vk::ShaderModule *geometryModule,
     const vk::GraphicsPipelineDesc &desc,
     const vk::GraphicsPipelineDesc **descPtrOut,
     vk::PipelineHelper **pipelineOut)
@@ -1712,13 +1725,13 @@
     vk::Pipeline newPipeline;
 
     // This "if" is left here for the benefit of VulkanPipelineCachePerfTest.
-    if (context != nullptr)
+    if (contextVk != nullptr)
     {
-        context->getRenderer()->onNewGraphicsPipeline();
-        ANGLE_TRY(desc.initializePipeline(context, pipelineCacheVk, compatibleRenderPass,
+        contextVk->getRenderer()->onNewGraphicsPipeline();
+        ANGLE_TRY(desc.initializePipeline(contextVk, pipelineCacheVk, compatibleRenderPass,
                                           pipelineLayout, activeAttribLocationsMask,
                                           programAttribsTypeMask, vertexModule, fragmentModule,
-                                          &newPipeline));
+                                          geometryModule, &newPipeline));
     }
 
     // The Serial will be updated outside of this query.
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.h
index 21e3c44..1d20ed7 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_cache_utils.h
@@ -38,7 +38,7 @@
 // fewer bits. For example, boolean values could be represented by a single bit instead
 // of a uint8_t. However at the current time there are concerns about the portability
 // of bitfield operators, and complexity issues with using bit mask operations. This is
-// something likely we will want to investigate as the Vulkan implementation progresses.
+// something we will likely want to investigate as the Vulkan implementation progresses.
 //
 // Second implementation note: the struct packing is also a bit fragile, and some of the
 // packing requirements depend on using alignas and field ordering to get the result of
@@ -164,8 +164,6 @@
 struct PackedAttribDesc final
 {
     uint8_t format;
-
-    // TODO(http://anglebug.com/2672): Emulate divisors greater than UBYTE_MAX.
     uint8_t divisor;
 
     // Can only take 11 bits on NV.
@@ -315,9 +313,9 @@
 static_assert(kPackedInputAssemblyAndColorBlendStateSize == 56, "Size check failed");
 
 constexpr size_t kGraphicsPipelineDescSumOfSizes =
-    kVertexInputAttributesSize + kPackedInputAssemblyAndColorBlendStateSize +
-    kPackedRasterizationAndMultisampleStateSize + kPackedDepthStencilStateSize +
-    kRenderPassDescSize + sizeof(VkViewport) + sizeof(VkRect2D);
+    kVertexInputAttributesSize + kRenderPassDescSize + kPackedRasterizationAndMultisampleStateSize +
+    kPackedDepthStencilStateSize + kPackedInputAssemblyAndColorBlendStateSize + sizeof(VkViewport) +
+    sizeof(VkRect2D);
 
 // Number of dirty bits in the dirty bit set.
 constexpr size_t kGraphicsPipelineDirtyBitBytes = 4;
@@ -356,7 +354,7 @@
         return reinterpret_cast<const T *>(this);
     }
 
-    angle::Result initializePipeline(vk::Context *context,
+    angle::Result initializePipeline(ContextVk *contextVk,
                                      const vk::PipelineCache &pipelineCacheVk,
                                      const RenderPass &compatibleRenderPass,
                                      const PipelineLayout &pipelineLayout,
@@ -364,6 +362,7 @@
                                      const gl::ComponentTypeMask &programAttribsTypeMask,
                                      const ShaderModule *vertexModule,
                                      const ShaderModule *fragmentModule,
+                                     const ShaderModule *geometryModule,
                                      Pipeline *pipelineOut) const;
 
     // Vertex input state. For ES 3.1 this should be separated into binding and attribute.
@@ -768,7 +767,7 @@
 
     void destroy(VkDevice device);
 
-    ANGLE_INLINE angle::Result getCompatibleRenderPass(vk::Context *context,
+    ANGLE_INLINE angle::Result getCompatibleRenderPass(ContextVk *contextVk,
                                                        Serial serial,
                                                        const vk::RenderPassDesc &desc,
                                                        vk::RenderPass **renderPassOut)
@@ -785,7 +784,7 @@
             return angle::Result::Continue;
         }
 
-        return addRenderPass(context, serial, desc, renderPassOut);
+        return addRenderPass(contextVk, serial, desc, renderPassOut);
     }
 
     angle::Result getRenderPassWithOps(vk::Context *context,
@@ -795,7 +794,7 @@
                                        vk::RenderPass **renderPassOut);
 
   private:
-    angle::Result addRenderPass(vk::Context *context,
+    angle::Result addRenderPass(ContextVk *contextVk,
                                 Serial serial,
                                 const vk::RenderPassDesc &desc,
                                 vk::RenderPass **renderPassOut);
@@ -820,7 +819,7 @@
 
     void populate(const vk::GraphicsPipelineDesc &desc, vk::Pipeline &&pipeline);
 
-    ANGLE_INLINE angle::Result getPipeline(vk::Context *context,
+    ANGLE_INLINE angle::Result getPipeline(ContextVk *contextVk,
                                            const vk::PipelineCache &pipelineCacheVk,
                                            const vk::RenderPass &compatibleRenderPass,
                                            const vk::PipelineLayout &pipelineLayout,
@@ -828,6 +827,7 @@
                                            const gl::ComponentTypeMask &programAttribsTypeMask,
                                            const vk::ShaderModule *vertexModule,
                                            const vk::ShaderModule *fragmentModule,
+                                           const vk::ShaderModule *geometryModule,
                                            const vk::GraphicsPipelineDesc &desc,
                                            const vk::GraphicsPipelineDesc **descPtrOut,
                                            vk::PipelineHelper **pipelineOut)
@@ -840,13 +840,13 @@
             return angle::Result::Continue;
         }
 
-        return insertPipeline(context, pipelineCacheVk, compatibleRenderPass, pipelineLayout,
+        return insertPipeline(contextVk, pipelineCacheVk, compatibleRenderPass, pipelineLayout,
                               activeAttribLocationsMask, programAttribsTypeMask, vertexModule,
-                              fragmentModule, desc, descPtrOut, pipelineOut);
+                              fragmentModule, geometryModule, desc, descPtrOut, pipelineOut);
     }
 
   private:
-    angle::Result insertPipeline(vk::Context *context,
+    angle::Result insertPipeline(ContextVk *contextVk,
                                  const vk::PipelineCache &pipelineCacheVk,
                                  const vk::RenderPass &compatibleRenderPass,
                                  const vk::PipelineLayout &pipelineLayout,
@@ -854,6 +854,7 @@
                                  const gl::ComponentTypeMask &programAttribsTypeMask,
                                  const vk::ShaderModule *vertexModule,
                                  const vk::ShaderModule *fragmentModule,
+                                 const vk::ShaderModule *geometryModule,
                                  const vk::GraphicsPipelineDesc &desc,
                                  const vk::GraphicsPipelineDesc **descPtrOut,
                                  vk::PipelineHelper **pipelineOut);
@@ -919,10 +920,10 @@
 
 // Only 1 driver uniform binding is used.
 constexpr uint32_t kReservedDriverUniformBindingCount = 1;
-// There is 1 default uniform binding used per stage.  Currently, a maxium of two stages are
+// There is 1 default uniform binding used per stage.  Currently, a maxium of three stages are
 // supported.
 constexpr uint32_t kReservedPerStageDefaultUniformBindingCount = 1;
-constexpr uint32_t kReservedDefaultUniformBindingCount         = 2;
+constexpr uint32_t kReservedDefaultUniformBindingCount         = 3;
 // Binding index start for transform feedback buffers:
 constexpr uint32_t kXfbBindingIndexStart = kReservedDefaultUniformBindingCount;
 }  // namespace rx
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
index 3ddf798..b6239da 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
@@ -82,16 +82,18 @@
 
     mNativeExtensions.vertexHalfFloat = true;
 
-    // TODO: Enable this always and emulate instanced draws if any divisor exceeds the maximum
-    // supported.  http://anglebug.com/2672
-    mNativeExtensions.instancedArraysANGLE = mMaxVertexAttribDivisor > 1;
-    mNativeExtensions.instancedArraysEXT   = mMaxVertexAttribDivisor > 1;
+    // Enabled in HW if VK_EXT_vertex_attribute_divisor available, otherwise emulated
+    mNativeExtensions.instancedArraysANGLE = true;
+    mNativeExtensions.instancedArraysEXT   = true;
 
     // Only expose robust buffer access if the physical device supports it.
-    mNativeExtensions.robustBufferAccessBehavior = mPhysicalDeviceFeatures.robustBufferAccess;
+    mNativeExtensions.robustBufferAccessBehavior =
+        (mPhysicalDeviceFeatures.robustBufferAccess == VK_TRUE);
 
     mNativeExtensions.eglSync = true;
 
+    mNativeExtensions.vertexAttribType1010102 = true;
+
     // We use secondary command buffers almost everywhere and they require a feature to be
     // able to execute in the presence of queries.  As a result, we won't support queries
     // unless that feature is available.
@@ -215,10 +217,6 @@
     }
     mNativeCaps.maxUniformLocations                                  = maxUniformVectors;
 
-    // Pass through min/max texel gather offsets
-    mNativeCaps.minProgramTextureGatherOffset = limitsVk.minTexelGatherOffset;
-    mNativeCaps.maxProgramTextureGatherOffset = limitsVk.maxTexelGatherOffset;
-
     // Every stage has 1 reserved uniform buffer for the default uniforms, and 1 for the driver
     // uniforms.
     constexpr uint32_t kTotalReservedPerStageUniformBuffers =
@@ -358,8 +356,10 @@
     mNativeCaps.maxCombinedImageUniforms = maxCombinedImages;
     mNativeCaps.maxImageUnits            = maxCombinedImages;
 
-    mNativeCaps.minProgramTexelOffset = mPhysicalDeviceProperties.limits.minTexelOffset;
-    mNativeCaps.maxProgramTexelOffset = mPhysicalDeviceProperties.limits.maxTexelOffset;
+    mNativeCaps.minProgramTexelOffset         = limitsVk.minTexelOffset;
+    mNativeCaps.maxProgramTexelOffset         = limitsVk.maxTexelOffset;
+    mNativeCaps.minProgramTextureGatherOffset = limitsVk.minTexelGatherOffset;
+    mNativeCaps.maxProgramTextureGatherOffset = limitsVk.maxTexelGatherOffset;
 
     // There is no additional limit to the combined number of components.  We can have up to a
     // maximum number of uniform buffers, each having the maximum number of components.  Note that
@@ -429,6 +429,25 @@
 
     // Enable GL_NV_pixel_buffer_object extension.
     mNativeExtensions.pixelBufferObject = true;
+
+    // Geometry shader is optional.
+    if (mPhysicalDeviceFeatures.geometryShader)
+    {
+        // TODO : Remove below comment when http://anglebug.com/3571 will be completed
+        // mNativeExtensions.geometryShader = true;
+        mNativeCaps.maxFramebufferLayers = limitsVk.maxFramebufferLayers;
+        mNativeCaps.layerProvokingVertex = GL_LAST_VERTEX_CONVENTION_EXT;
+
+        mNativeCaps.maxGeometryInputComponents       = limitsVk.maxGeometryInputComponents;
+        mNativeCaps.maxGeometryOutputComponents      = limitsVk.maxGeometryOutputComponents;
+        mNativeCaps.maxGeometryOutputVertices        = limitsVk.maxGeometryOutputVertices;
+        mNativeCaps.maxGeometryTotalOutputComponents = limitsVk.maxGeometryTotalOutputComponents;
+        mNativeCaps.maxShaderStorageBlocks[gl::ShaderType::Geometry] =
+            mNativeCaps.maxCombinedShaderOutputResources;
+        mNativeCaps.maxShaderAtomicCounterBuffers[gl::ShaderType::Geometry] =
+            maxCombinedAtomicCounterBuffers;
+        mNativeCaps.maxGeometryShaderInvocations = limitsVk.maxGeometryShaderInvocations;
+    }
 }
 
 namespace egl_vk
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_map.json b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_map.json
index 62ad9c0..560dd7b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_map.json
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_map.json
@@ -172,6 +172,18 @@
         "A32_FLOAT": {
             "image": "R32_FLOAT"
         },
+        "L16_FLOAT": {
+            "image": "R16_FLOAT"
+        },
+        "L32_FLOAT": {
+            "image": "R32_FLOAT"
+        },
+        "L16A16_FLOAT": {
+            "image": "R16G16_FLOAT"
+        },
+        "L32A32_FLOAT": {
+            "image": "R32G32_FLOAT"
+        },
         "A8_UNORM": {
             "image": "R8_UNORM"
         },
@@ -272,6 +284,54 @@
         "R10G10B10X2_UNORM": {
             "buffer": "NONE",
             "image": "R10G10B10A2_UNORM"
+        },
+        "A2R10G10B10_SINT_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "A2R10G10B10_UINT_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "A2R10G10B10_SSCALED_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "A2R10G10B10_USCALED_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "A2R10G10B10_SNORM_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "A2R10G10B10_UNORM_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "X2R10G10B10_SINT_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "X2R10G10B10_USCALED_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "X2R10G10B10_SSCALED_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "X2R10G10B10_UINT_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "X2R10G10B10_SNORM_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
+        },
+        "X2R10G10B10_UNORM_VERTEX": {
+            "image": "NONE",
+            "buffer": "R32G32B32A32_FLOAT"
         }
     },
     "fallbacks": {
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
index dc098f1..f04b20d 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp
@@ -46,6 +46,78 @@
             vertexLoadRequiresConversion = false;
             break;
 
+        case angle::FormatID::A2R10G10B10_SINT_VERTEX:
+            internalFormat               = GL_INT_10_10_10_2_OES;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyW2XYZ10ToXYZW32FVertexData<true, false>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::A2R10G10B10_SNORM_VERTEX:
+            internalFormat               = GL_A2_RGB10_SNORM_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyW2XYZ10ToXYZW32FVertexData<true, true>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::A2R10G10B10_SSCALED_VERTEX:
+            internalFormat               = GL_A2_RGB10_SSCALED_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyW2XYZ10ToXYZW32FVertexData<true, false>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::A2R10G10B10_UINT_VERTEX:
+            internalFormat               = GL_UNSIGNED_INT_10_10_10_2_OES;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyW2XYZ10ToXYZW32FVertexData<false, false>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::A2R10G10B10_UNORM_VERTEX:
+            internalFormat               = GL_A2_RGB10_UNORM_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyW2XYZ10ToXYZW32FVertexData<false, true>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::A2R10G10B10_USCALED_VERTEX:
+            internalFormat               = GL_A2_RGB10_USCALED_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyW2XYZ10ToXYZW32FVertexData<false, false>;
+            vertexLoadRequiresConversion = true;
+            break;
+
         case angle::FormatID::A32_FLOAT:
             internalFormat           = GL_ALPHA32F_EXT;
             imageFormatID            = angle::FormatID::R32_FLOAT;
@@ -978,19 +1050,35 @@
             break;
 
         case angle::FormatID::L16A16_FLOAT:
-            // This format is not implemented in Vulkan.
+            internalFormat           = GL_LUMINANCE_ALPHA16F_EXT;
+            imageFormatID            = angle::FormatID::R16G16_FLOAT;
+            vkImageFormat            = VK_FORMAT_R16G16_SFLOAT;
+            imageInitializerFunction = nullptr;
+
             break;
 
         case angle::FormatID::L16_FLOAT:
-            // This format is not implemented in Vulkan.
+            internalFormat           = GL_LUMINANCE16F_EXT;
+            imageFormatID            = angle::FormatID::R16_FLOAT;
+            vkImageFormat            = VK_FORMAT_R16_SFLOAT;
+            imageInitializerFunction = nullptr;
+
             break;
 
         case angle::FormatID::L32A32_FLOAT:
-            // This format is not implemented in Vulkan.
+            internalFormat           = GL_LUMINANCE_ALPHA32F_EXT;
+            imageFormatID            = angle::FormatID::R32G32_FLOAT;
+            vkImageFormat            = VK_FORMAT_R32G32_SFLOAT;
+            imageInitializerFunction = nullptr;
+
             break;
 
         case angle::FormatID::L32_FLOAT:
-            // This format is not implemented in Vulkan.
+            internalFormat           = GL_LUMINANCE32F_EXT;
+            imageFormatID            = angle::FormatID::R32_FLOAT;
+            vkImageFormat            = VK_FORMAT_R32_SFLOAT;
+            imageInitializerFunction = nullptr;
+
             break;
 
         case angle::FormatID::L8A8_UNORM:
@@ -2339,6 +2427,78 @@
             vertexLoadRequiresConversion = false;
             break;
 
+        case angle::FormatID::X2R10G10B10_SINT_VERTEX:
+            internalFormat               = GL_X2_RGB10_SINT_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyXYZ10ToXYZW32FVertexData<true, false>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::X2R10G10B10_SNORM_VERTEX:
+            internalFormat               = GL_X2_RGB10_SNORM_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyXYZ10ToXYZW32FVertexData<true, true>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::X2R10G10B10_SSCALED_VERTEX:
+            internalFormat               = GL_X2_RGB10_SSCALED_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyXYZ10ToXYZW32FVertexData<true, false>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::X2R10G10B10_UINT_VERTEX:
+            internalFormat               = GL_X2_RGB10_UINT_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyXYZ10ToXYZW32FVertexData<false, false>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::X2R10G10B10_UNORM_VERTEX:
+            internalFormat               = GL_X2_RGB10_UNORM_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyXYZ10ToXYZW32FVertexData<false, true>;
+            vertexLoadRequiresConversion = true;
+            break;
+
+        case angle::FormatID::X2R10G10B10_USCALED_VERTEX:
+            internalFormat               = GL_X2_RGB10_USCALED_ANGLEX;
+            imageFormatID                = angle::FormatID::NONE;
+            vkImageFormat                = VK_FORMAT_UNDEFINED;
+            imageInitializerFunction     = nullptr;
+            bufferFormatID               = angle::FormatID::R32G32B32A32_FLOAT;
+            vkBufferFormat               = VK_FORMAT_R32G32B32A32_SFLOAT;
+            vkBufferFormatIsPacked       = false;
+            vertexLoadFunction           = CopyXYZ10ToXYZW32FVertexData<false, false>;
+            vertexLoadRequiresConversion = true;
+            break;
+
         default:
             UNREACHABLE();
             break;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_utils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_utils.cpp
index facc170..ebeb808 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_utils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_format_utils.cpp
@@ -32,8 +32,13 @@
         renderer->hasImageFormatFeatureBits(format, VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT);
     outTextureCaps->filterable = renderer->hasImageFormatFeatureBits(
         format, VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT);
+
+    // For renderbuffer and texture attachments we require transfer and sampling for
+    // GLES 2.0 CopyTexImage support. Sampling is also required for other features like
+    // blits and EGLImages.
     outTextureCaps->textureAttachment =
-        hasColorAttachmentFeatureBit || hasDepthAttachmentFeatureBit;
+        outTextureCaps->texturable &&
+        (hasColorAttachmentFeatureBit || hasDepthAttachmentFeatureBit);
     outTextureCaps->renderbuffer = outTextureCaps->textureAttachment;
 
     if (outTextureCaps->renderbuffer)
@@ -342,55 +347,51 @@
 
     gl::SwizzleState internalSwizzle;
 
-    switch (format.internalFormat)
+    if (angleFormat.isLUMA())
     {
-        case GL_LUMINANCE8_OES:
-            internalSwizzle.swizzleRed   = GL_RED;
-            internalSwizzle.swizzleGreen = GL_RED;
-            internalSwizzle.swizzleBlue  = GL_RED;
-            internalSwizzle.swizzleAlpha = GL_ONE;
-            break;
-        case GL_LUMINANCE8_ALPHA8_OES:
-            internalSwizzle.swizzleRed   = GL_RED;
-            internalSwizzle.swizzleGreen = GL_RED;
-            internalSwizzle.swizzleBlue  = GL_RED;
-            internalSwizzle.swizzleAlpha = GL_GREEN;
-            break;
-        case GL_ALPHA8_OES:
-            internalSwizzle.swizzleRed   = GL_ZERO;
-            internalSwizzle.swizzleGreen = GL_ZERO;
-            internalSwizzle.swizzleBlue  = GL_ZERO;
-            internalSwizzle.swizzleAlpha = GL_RED;
-            break;
-        default:
-            if (angleFormat.hasDepthOrStencilBits())
-            {
-                bool hasRed = angleFormat.depthBits > 0;
-                // In OES_depth_texture/ARB_depth_texture, depth
-                // textures are treated as luminance.
-                // If the internalformat was not sized, use OES_depth_texture behavior
-                bool hasGB = hasRed && !sized;
+        GLenum swizzleRGB, swizzleA;
+        if (angleFormat.luminanceBits > 0)
+        {
+            swizzleRGB = GL_RED;
+            swizzleA   = (angleFormat.alphaBits > 0 ? GL_GREEN : GL_ONE);
+        }
+        else
+        {
+            swizzleRGB = GL_ZERO;
+            swizzleA   = GL_RED;
+        }
+        internalSwizzle.swizzleRed   = swizzleRGB;
+        internalSwizzle.swizzleGreen = swizzleRGB;
+        internalSwizzle.swizzleBlue  = swizzleRGB;
+        internalSwizzle.swizzleAlpha = swizzleA;
+    }
+    else
+    {
+        if (angleFormat.hasDepthOrStencilBits())
+        {
+            bool hasRed = angleFormat.depthBits > 0;
+            // In OES_depth_texture/ARB_depth_texture, depth
+            // textures are treated as luminance.
+            // If the internalformat was not sized, use OES_depth_texture behavior
+            bool hasGB = hasRed && !sized;
 
-                internalSwizzle.swizzleRed   = hasRed ? GL_RED : GL_ZERO;
-                internalSwizzle.swizzleGreen = hasGB ? GL_RED : GL_ZERO;
-                internalSwizzle.swizzleBlue  = hasGB ? GL_RED : GL_ZERO;
-                internalSwizzle.swizzleAlpha = GL_ONE;
-            }
-            else
+            internalSwizzle.swizzleRed   = hasRed ? GL_RED : GL_ZERO;
+            internalSwizzle.swizzleGreen = hasGB ? GL_RED : GL_ZERO;
+            internalSwizzle.swizzleBlue  = hasGB ? GL_RED : GL_ZERO;
+            internalSwizzle.swizzleAlpha = GL_ONE;
+        }
+        else
+        {
+            // Color bits are all zero for blocked formats
+            if (!angleFormat.isBlock)
             {
-                if (angleFormat.isBlock)
-                {
-                    // Color bits are all zero for blocked formats, so the
-                    // below will erroneously set swizzle to (0, 0, 0, 1).
-                    break;
-                }
                 // Set any missing channel to default in case the emulated format has that channel.
                 internalSwizzle.swizzleRed   = angleFormat.redBits > 0 ? GL_RED : GL_ZERO;
                 internalSwizzle.swizzleGreen = angleFormat.greenBits > 0 ? GL_GREEN : GL_ZERO;
                 internalSwizzle.swizzleBlue  = angleFormat.blueBits > 0 ? GL_BLUE : GL_ZERO;
                 internalSwizzle.swizzleAlpha = angleFormat.alphaBits > 0 ? GL_ALPHA : GL_ONE;
             }
-            break;
+        }
     }
     ComposeSwizzleState(internalSwizzle, swizzleState, swizzleStateOut);
 }
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.cpp
index 60dad37..ab74d9f 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.cpp
@@ -34,10 +34,14 @@
 // these values for emulated depth/stencil textures too.
 constexpr VkClearDepthStencilValue kWebGLInitDepthStencilValue = {1.0f, 0};
 
-constexpr VkBufferUsageFlags kLineLoopDynamicBufferUsage =
-    VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
-    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
+constexpr VkBufferUsageFlags kLineLoopDynamicBufferUsage = VK_BUFFER_USAGE_INDEX_BUFFER_BIT |
+                                                           VK_BUFFER_USAGE_TRANSFER_DST_BIT |
+                                                           VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
 constexpr int kLineLoopDynamicBufferInitialSize = 1024 * 1024;
+constexpr VkBufferUsageFlags kLineLoopDynamicIndirectBufferUsage =
+    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
+    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
+constexpr int kLineLoopDynamicIndirectBufferInitialSize = sizeof(VkDrawIndirectCommand) * 16;
 
 // This is an arbitrary max. We can change this later if necessary.
 constexpr uint32_t kDefaultDescriptorPoolMaxSets = 128;
@@ -354,7 +358,6 @@
         {
             ANGLE_TRY(flush(contextVk));
             mBuffer->unmap(contextVk->getDevice());
-            mBuffer->updateQueueSerial(contextVk->getCurrentQueueSerial());
 
             mInFlightBuffers.push_back(mBuffer);
             mBuffer = nullptr;
@@ -367,7 +370,7 @@
             // Clear the free list since the free buffers are now too small.
             for (BufferHelper *toFree : mBufferFreeList)
             {
-                toFree->release(contextVk);
+                toFree->release(contextVk->getRenderer());
             }
             mBufferFreeList.clear();
         }
@@ -444,25 +447,12 @@
     return angle::Result::Continue;
 }
 
-void DynamicBuffer::releaseBufferListToContext(ContextVk *contextVk,
-                                               std::vector<BufferHelper *> *buffers)
+void DynamicBuffer::releaseBufferListToRenderer(RendererVk *renderer,
+                                                std::vector<BufferHelper *> *buffers)
 {
     for (BufferHelper *toFree : *buffers)
     {
-        toFree->release(contextVk);
-        delete toFree;
-    }
-
-    buffers->clear();
-}
-
-void DynamicBuffer::releaseBufferListToDisplay(DisplayVk *display,
-                                               std::vector<GarbageObjectBase> *garbageQueue,
-                                               std::vector<BufferHelper *> *buffers)
-{
-    for (BufferHelper *toFree : *buffers)
-    {
-        toFree->release(display, garbageQueue);
+        toFree->release(renderer);
         delete toFree;
     }
 
@@ -480,41 +470,17 @@
     buffers->clear();
 }
 
-void DynamicBuffer::release(ContextVk *contextVk)
+void DynamicBuffer::release(RendererVk *renderer)
 {
     reset();
 
-    releaseBufferListToContext(contextVk, &mInFlightBuffers);
-    releaseBufferListToContext(contextVk, &mBufferFreeList);
+    releaseBufferListToRenderer(renderer, &mInFlightBuffers);
+    releaseBufferListToRenderer(renderer, &mBufferFreeList);
 
     if (mBuffer)
     {
-        mBuffer->unmap(contextVk->getDevice());
-
-        // The buffers may not have been recording commands, but they could be used to store data so
-        // they should live until at most this frame.  For example a vertex buffer filled entirely
-        // by the CPU currently never gets a chance to have its serial set.
-        mBuffer->updateQueueSerial(contextVk->getCurrentQueueSerial());
-        mBuffer->release(contextVk);
-        delete mBuffer;
-        mBuffer = nullptr;
-    }
-}
-
-void DynamicBuffer::release(DisplayVk *display, std::vector<GarbageObjectBase> *garbageQueue)
-{
-    reset();
-
-    releaseBufferListToDisplay(display, garbageQueue, &mInFlightBuffers);
-    releaseBufferListToDisplay(display, garbageQueue, &mBufferFreeList);
-
-    if (mBuffer)
-    {
-        mBuffer->unmap(display->getDevice());
-
-        mBuffer->release(display, garbageQueue);
-        delete mBuffer;
-        mBuffer = nullptr;
+        mBuffer->release(renderer);
+        SafeDelete(mBuffer);
     }
 }
 
@@ -525,7 +491,7 @@
         // If the dynamic buffer was resized we cannot reuse the retained buffer.
         if (toRelease->getSize() < mSize)
         {
-            toRelease->release(contextVk);
+            toRelease->release(contextVk->getRenderer());
         }
         else
         {
@@ -644,7 +610,7 @@
 
 void DescriptorPoolHelper::release(ContextVk *contextVk)
 {
-    contextVk->releaseObject(contextVk->getCurrentQueueSerial(), &mDescriptorPool);
+    contextVk->addGarbage(&mDescriptorPool);
 }
 
 angle::Result DescriptorPoolHelper::allocateSets(ContextVk *contextVk,
@@ -1105,6 +1071,8 @@
     // must be a multiple of the type indicated by indexType'.
     mDynamicIndexBuffer.init(renderer, kLineLoopDynamicBufferUsage, sizeof(uint32_t),
                              kLineLoopDynamicBufferInitialSize, true);
+    mDynamicIndirectBuffer.init(renderer, kLineLoopDynamicIndirectBufferUsage, sizeof(uint32_t),
+                                kLineLoopDynamicIndirectBufferInitialSize, true);
 }
 
 LineLoopHelper::~LineLoopHelper() = default;
@@ -1248,14 +1216,73 @@
     return angle::Result::Continue;
 }
 
+angle::Result LineLoopHelper::streamIndicesIndirect(ContextVk *contextVk,
+                                                    gl::DrawElementsType glIndexType,
+                                                    vk::BufferHelper *indexBuffer,
+                                                    vk::BufferHelper *indirectBuffer,
+                                                    VkDeviceSize indirectBufferOffset,
+                                                    vk::BufferHelper **indexBufferOut,
+                                                    VkDeviceSize *indexBufferOffsetOut,
+                                                    vk::BufferHelper **indirectBufferOut,
+                                                    VkDeviceSize *indirectBufferOffsetOut)
+{
+    VkIndexType indexType = gl_vk::kIndexTypeMap[glIndexType];
+
+    auto unitSize = (indexType == VK_INDEX_TYPE_UINT16 ? sizeof(uint16_t) : sizeof(uint32_t));
+    size_t allocateBytes = static_cast<size_t>(indexBuffer->getSize() + unitSize);
+
+    if (contextVk->getState().isPrimitiveRestartEnabled())
+    {
+        // If primitive restart, new index buffer is 135% the size of the original index buffer. The
+        // smallest lineloop with primitive restart is 3 indices (point 1, point 2 and restart
+        // value) when converted to linelist becomes 4 vertices. Expansion of 4/3. Any larger
+        // lineloops would have less overhead and require less extra space. Any incomplete
+        // primitives can be dropped or left incomplete and thus not increase the size of the
+        // destination index buffer. Since we don't know the number of indices being used we'll use
+        // the size of the index buffer as allocated as the index count.
+        size_t numInputIndices    = static_cast<size_t>(indexBuffer->getSize() / unitSize);
+        size_t numNewInputIndices = ((numInputIndices * 4) / 3) + 1;
+        allocateBytes             = static_cast<size_t>(numNewInputIndices * unitSize);
+    }
+
+    mDynamicIndexBuffer.releaseInFlightBuffers(contextVk);
+    mDynamicIndirectBuffer.releaseInFlightBuffers(contextVk);
+
+    ANGLE_TRY(mDynamicIndexBuffer.allocate(contextVk, allocateBytes, nullptr, nullptr,
+                                           indexBufferOffsetOut, nullptr));
+    *indexBufferOut = mDynamicIndexBuffer.getCurrentBuffer();
+
+    ANGLE_TRY(mDynamicIndirectBuffer.allocate(contextVk, sizeof(VkDrawIndexedIndirectCommand),
+                                              nullptr, nullptr, indirectBufferOffsetOut, nullptr));
+    *indirectBufferOut = mDynamicIndirectBuffer.getCurrentBuffer();
+
+    vk::BufferHelper *destIndexBuffer    = mDynamicIndexBuffer.getCurrentBuffer();
+    vk::BufferHelper *destIndirectBuffer = mDynamicIndirectBuffer.getCurrentBuffer();
+
+    // Copy relevant section of the source into destination at allocated offset.  Note that the
+    // offset returned by allocate() above is in bytes. As is the indices offset pointer.
+    UtilsVk::ConvertLineLoopIndexIndirectParameters params = {};
+    params.indirectBufferOffset    = static_cast<uint32_t>(indirectBufferOffset);
+    params.dstIndirectBufferOffset = static_cast<uint32_t>(*indirectBufferOffsetOut);
+    params.dstIndexBufferOffset    = static_cast<uint32_t>(*indexBufferOffsetOut);
+    params.is32Bit                 = unitSize == 4;
+
+    ANGLE_TRY(contextVk->getUtils().convertLineLoopIndexIndirectBuffer(
+        contextVk, indirectBuffer, destIndirectBuffer, destIndexBuffer, indexBuffer, params));
+
+    return angle::Result::Continue;
+}
+
 void LineLoopHelper::release(ContextVk *contextVk)
 {
-    mDynamicIndexBuffer.release(contextVk);
+    mDynamicIndexBuffer.release(contextVk->getRenderer());
+    mDynamicIndirectBuffer.release(contextVk->getRenderer());
 }
 
 void LineLoopHelper::destroy(VkDevice device)
 {
     mDynamicIndexBuffer.destroy(device);
+    mDynamicIndirectBuffer.destroy(device);
 }
 
 // static
@@ -1282,6 +1309,14 @@
                                  const VkBufferCreateInfo &createInfo,
                                  VkMemoryPropertyFlags memoryPropertyFlags)
 {
+    // TODO: Remove with anglebug.com/2162: Vulkan: Implement device memory sub-allocation
+    // Check if we have too many resources allocated already and need to free some before allocating
+    // more and (possibly) exceeding the device's limits.
+    if (contextVk->shouldFlush())
+    {
+        ANGLE_TRY(contextVk->flushImpl(nullptr));
+    }
+
     mSize = createInfo.size;
     ANGLE_VK_TRY(contextVk, mBuffer.init(contextVk->getDevice(), createInfo));
     return vk::AllocateBufferMemory(contextVk, memoryPropertyFlags, &mMemoryPropertyFlags, nullptr,
@@ -1299,26 +1334,13 @@
     mDeviceMemory.destroy(device);
 }
 
-void BufferHelper::release(ContextVk *contextVk)
+void BufferHelper::release(RendererVk *renderer)
 {
-    unmap(contextVk->getDevice());
+    unmap(renderer->getDevice());
     mSize       = 0;
     mViewFormat = nullptr;
 
-    contextVk->releaseObject(getStoredQueueSerial(), &mBuffer);
-    contextVk->releaseObject(getStoredQueueSerial(), &mBufferView);
-    contextVk->releaseObject(getStoredQueueSerial(), &mDeviceMemory);
-}
-
-void BufferHelper::release(DisplayVk *display, std::vector<GarbageObjectBase> *garbageQueue)
-{
-    unmap(display->getDevice());
-    mSize       = 0;
-    mViewFormat = nullptr;
-
-    mBuffer.dumpResources(garbageQueue);
-    mBufferView.dumpResources(garbageQueue);
-    mDeviceMemory.dumpResources(garbageQueue);
+    renderer->collectGarbageAndReinit(&mUse, &mBuffer, &mBufferView, &mDeviceMemory);
 }
 
 bool BufferHelper::needsOnWriteBarrier(VkAccessFlags readAccessType,
@@ -1464,6 +1486,8 @@
       mSamples(0),
       mCurrentLayout(ImageLayout::Undefined),
       mCurrentQueueFamilyIndex(std::numeric_limits<uint32_t>::max()),
+      mBaseLevel(0),
+      mMaxLevel(0),
       mLayerCount(0),
       mLevelCount(0)
 {}
@@ -1477,6 +1501,8 @@
       mSamples(other.mSamples),
       mCurrentLayout(other.mCurrentLayout),
       mCurrentQueueFamilyIndex(other.mCurrentQueueFamilyIndex),
+      mBaseLevel(other.mBaseLevel),
+      mMaxLevel(other.mMaxLevel),
       mLayerCount(other.mLayerCount),
       mLevelCount(other.mLevelCount),
       mStagingBuffer(std::move(other.mStagingBuffer)),
@@ -1484,6 +1510,8 @@
 {
     ASSERT(this != &other);
     other.mCurrentLayout = ImageLayout::Undefined;
+    other.mBaseLevel     = 0;
+    other.mMaxLevel      = 0;
     other.mLayerCount    = 0;
     other.mLevelCount    = 0;
 }
@@ -1508,11 +1536,14 @@
                                 const Format &format,
                                 GLint samples,
                                 VkImageUsageFlags usage,
+                                uint32_t baseLevel,
+                                uint32_t maxLevel,
                                 uint32_t mipLevels,
                                 uint32_t layerCount)
 {
     return initExternal(context, textureType, extents, format, samples, usage,
-                        ImageLayout::Undefined, nullptr, mipLevels, layerCount);
+                        ImageLayout::Undefined, nullptr, baseLevel, maxLevel, mipLevels,
+                        layerCount);
 }
 
 angle::Result ImageHelper::initExternal(Context *context,
@@ -1523,6 +1554,8 @@
                                         VkImageUsageFlags usage,
                                         ImageLayout initialLayout,
                                         const void *externalImageCreateInfo,
+                                        uint32_t baseLevel,
+                                        uint32_t maxLevel,
                                         uint32_t mipLevels,
                                         uint32_t layerCount)
 {
@@ -1531,6 +1564,8 @@
     mExtents    = extents;
     mFormat     = &format;
     mSamples    = samples;
+    mBaseLevel  = baseLevel;
+    mMaxLevel   = maxLevel;
     mLevelCount = mipLevels;
     mLayerCount = layerCount;
 
@@ -1565,38 +1600,19 @@
     return angle::Result::Continue;
 }
 
-void ImageHelper::releaseImage(ContextVk *contextVk)
+void ImageHelper::releaseImage(RendererVk *renderer)
 {
-    contextVk->releaseObject(getStoredQueueSerial(), &mImage);
-    contextVk->releaseObject(getStoredQueueSerial(), &mDeviceMemory);
+    renderer->collectGarbageAndReinit(&mUse, &mImage, &mDeviceMemory);
 }
 
-void ImageHelper::releaseImage(DisplayVk *display, std::vector<GarbageObjectBase> *garbageQueue)
-{
-    mImage.dumpResources(garbageQueue);
-    mDeviceMemory.dumpResources(garbageQueue);
-}
-
-void ImageHelper::releaseStagingBuffer(ContextVk *contextVk)
+void ImageHelper::releaseStagingBuffer(RendererVk *renderer)
 {
     // Remove updates that never made it to the texture.
     for (SubresourceUpdate &update : mSubresourceUpdates)
     {
-        update.release(contextVk);
+        update.release(renderer);
     }
-    mStagingBuffer.release(contextVk);
-    mSubresourceUpdates.clear();
-}
-
-void ImageHelper::releaseStagingBuffer(DisplayVk *display,
-                                       std::vector<GarbageObjectBase> *garbageQueue)
-{
-    // Remove updates that never made it to the texture.
-    for (SubresourceUpdate &update : mSubresourceUpdates)
-    {
-        update.release(display, garbageQueue);
-    }
-    mStagingBuffer.release(display, garbageQueue);
+    mStagingBuffer.release(renderer);
     mSubresourceUpdates.clear();
 }
 
@@ -1686,6 +1702,7 @@
 {
     mImage.destroy(device);
     mDeviceMemory.destroy(device);
+    mStagingBuffer.destroy(device);
     mCurrentLayout = ImageLayout::Undefined;
     mLayerCount    = 0;
     mLevelCount    = 0;
@@ -1755,12 +1772,6 @@
     return GetFormatAspectFlags(mFormat->imageFormat());
 }
 
-void ImageHelper::dumpResources(Serial serial, std::vector<GarbageObject> *garbageQueue)
-{
-    mImage.dumpResources(serial, garbageQueue);
-    mDeviceMemory.dumpResources(serial, garbageQueue);
-}
-
 VkImageLayout ImageHelper::getCurrentLayout() const
 {
     return kImageMemoryBarrierData[mCurrentLayout].layout;
@@ -1809,6 +1820,17 @@
     forceChangeLayoutAndQueue(aspectMask, newLayout, newQueueFamilyIndex, commandBuffer);
 }
 
+uint32_t ImageHelper::getBaseLevel()
+{
+    return mBaseLevel;
+}
+
+void ImageHelper::setBaseAndMaxLevels(uint32_t baseLevel, uint32_t maxLevel)
+{
+    mBaseLevel = baseLevel;
+    mMaxLevel  = maxLevel;
+}
+
 void ImageHelper::forceChangeLayoutAndQueue(VkImageAspectFlags aspectMask,
                                             ImageLayout newLayout,
                                             uint32_t newQueueFamilyIndex,
@@ -2021,8 +2043,13 @@
         mipWidth  = nextMipWidth;
         mipHeight = nextMipHeight;
 
-        commandBuffer->blitImage(mImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, mImage,
-                                 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &blit, VK_FILTER_LINEAR);
+        bool formatSupportsLinearFiltering = contextVk->getRenderer()->hasImageFormatFeatureBits(
+            getFormat().vkImageFormat, VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT);
+
+        commandBuffer->blitImage(
+            mImage, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, mImage,
+            VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &blit,
+            formatSupportsLinearFiltering ? VK_FILTER_LINEAR : VK_FILTER_NEAREST);
     }
 
     // Transition the last mip level to the same layout as all the other ones, so we can declare
@@ -2064,7 +2091,7 @@
         auto update = mSubresourceUpdates.begin() + index;
         if (update->isUpdateToLayerLevel(layerIndex, levelIndex))
         {
-            update->release(contextVk);
+            update->release(contextVk->getRenderer());
             mSubresourceUpdates.erase(update);
         }
         else
@@ -2157,8 +2184,24 @@
 
             // The generic load functions don't handle tightly packing D32FS8 to D32F & S8 so call
             // special case load functions.
-            loadFunctionInfo.loadFunction = angle::LoadD32FS8X24ToD32F;
-            stencilLoadFunction           = angle::LoadX32S8ToS8;
+            switch (type)
+            {
+                case GL_UNSIGNED_INT:
+                    loadFunctionInfo.loadFunction = angle::LoadD32ToD32F;
+                    stencilLoadFunction           = nullptr;
+                    break;
+                case GL_DEPTH32F_STENCIL8:
+                case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
+                    loadFunctionInfo.loadFunction = angle::LoadD32FS8X24ToD32F;
+                    stencilLoadFunction           = angle::LoadX32S8ToS8;
+                    break;
+                case GL_UNSIGNED_INT_24_8_OES:
+                    loadFunctionInfo.loadFunction = angle::LoadD24S8ToD32F;
+                    stencilLoadFunction           = angle::LoadX24S8ToS8;
+                    break;
+                default:
+                    UNREACHABLE();
+            }
         }
         else
         {
@@ -2249,7 +2292,7 @@
         stencilCopy.imageOffset                     = copy.imageOffset;
         stencilCopy.imageExtent                     = copy.imageExtent;
         stencilCopy.imageSubresource.aspectMask     = VK_IMAGE_ASPECT_STENCIL_BIT;
-        mSubresourceUpdates.emplace_back(bufferHandle, stencilCopy);
+        mSubresourceUpdates.emplace_back(mStagingBuffer.getCurrentBuffer(), stencilCopy);
 
         aspectFlags &= ~VK_IMAGE_ASPECT_STENCIL_BIT;
     }
@@ -2273,7 +2316,7 @@
     if (aspectFlags)
     {
         copy.imageSubresource.aspectMask = aspectFlags;
-        mSubresourceUpdates.emplace_back(bufferHandle, copy);
+        mSubresourceUpdates.emplace_back(mStagingBuffer.getCurrentBuffer(), copy);
     }
 
     return angle::Result::Continue;
@@ -2306,7 +2349,39 @@
     gl_vk::GetOffset(offset, &copy.imageOffset);
     gl_vk::GetExtent(glExtents, &copy.imageExtent);
 
-    mSubresourceUpdates.emplace_back(bufferHandle, copy);
+    mSubresourceUpdates.emplace_back(mStagingBuffer.getCurrentBuffer(), copy);
+
+    return angle::Result::Continue;
+}
+
+angle::Result ImageHelper::stageSubresourceUpdateFromBuffer(ContextVk *contextVk,
+                                                            size_t allocationSize,
+                                                            uint32_t mipLevel,
+                                                            uint32_t baseArrayLayer,
+                                                            uint32_t layerCount,
+                                                            const gl::Extents &glExtents,
+                                                            const gl::Offset &offset,
+                                                            BufferHelper *bufferHelper,
+                                                            VkDeviceSize stagingOffset)
+{
+    // This function stages an update from explicitly provided handle and offset
+    // It is used when the texture base level has changed, and we need to propagate data
+
+    VkBufferImageCopy copy               = {};
+    copy.bufferOffset                    = stagingOffset;
+    copy.bufferRowLength                 = glExtents.width;
+    copy.bufferImageHeight               = glExtents.height;
+    copy.imageSubresource.aspectMask     = VK_IMAGE_ASPECT_COLOR_BIT;
+    copy.imageSubresource.mipLevel       = mipLevel;
+    copy.imageSubresource.baseArrayLayer = baseArrayLayer;
+    copy.imageSubresource.layerCount     = layerCount;
+
+    ASSERT(getAspectFlags() == VK_IMAGE_ASPECT_COLOR_BIT);
+
+    gl_vk::GetOffset(offset, &copy.imageOffset);
+    gl_vk::GetExtent(glExtents, &copy.imageExtent);
+
+    mSubresourceUpdates.emplace_back(bufferHelper, copy);
 
     return angle::Result::Continue;
 }
@@ -2404,7 +2479,7 @@
     gl_vk::GetExtent(dstExtent, &copyToImage.imageExtent);
 
     // 3- enqueue the destination image subresource update
-    mSubresourceUpdates.emplace_back(bufferHandle, copyToImage);
+    mSubresourceUpdates.emplace_back(mStagingBuffer.getCurrentBuffer(), copyToImage);
     return angle::Result::Continue;
 }
 
@@ -2489,12 +2564,15 @@
 angle::Result ImageHelper::allocateStagingMemory(ContextVk *contextVk,
                                                  size_t sizeInBytes,
                                                  uint8_t **ptrOut,
-                                                 VkBuffer *handleOut,
+                                                 BufferHelper **bufferOut,
                                                  VkDeviceSize *offsetOut,
                                                  bool *newBufferAllocatedOut)
 {
-    return mStagingBuffer.allocate(contextVk, sizeInBytes, ptrOut, handleOut, offsetOut,
-                                   newBufferAllocatedOut);
+    VkBuffer handle;
+    ANGLE_TRY(mStagingBuffer.allocate(contextVk, sizeInBytes, ptrOut, &handle, offsetOut,
+                                      newBufferAllocatedOut));
+    *bufferOut = mStagingBuffer.getCurrentBuffer();
+    return angle::Result::Continue;
 }
 
 angle::Result ImageHelper::flushStagedUpdates(ContextVk *contextVk,
@@ -2526,16 +2604,16 @@
 
     for (SubresourceUpdate &update : mSubresourceUpdates)
     {
-        ASSERT(update.updateSource == SubresourceUpdate::UpdateSource::Clear ||
-               (update.updateSource == SubresourceUpdate::UpdateSource::Buffer &&
-                update.buffer.bufferHandle != VK_NULL_HANDLE) ||
-               (update.updateSource == SubresourceUpdate::UpdateSource::Image &&
-                update.image.image != nullptr && update.image.image->valid()));
+        ASSERT(update.updateSource == UpdateSource::Clear ||
+               (update.updateSource == UpdateSource::Buffer &&
+                update.buffer.bufferHelper != nullptr) ||
+               (update.updateSource == UpdateSource::Image && update.image.image != nullptr &&
+                update.image.image->valid()));
 
         uint32_t updateMipLevel;
         uint32_t updateBaseLayer;
         uint32_t updateLayerCount;
-        if (update.updateSource == SubresourceUpdate::UpdateSource::Clear)
+        if (update.updateSource == UpdateSource::Clear)
         {
             updateMipLevel   = update.clear.levelIndex;
             updateBaseLayer  = update.clear.layerIndex;
@@ -2556,7 +2634,9 @@
 
         // If the update level is not within the requested range, skip the update.
         const bool isUpdateLevelOutsideRange =
-            updateMipLevel < levelStart || updateMipLevel >= levelEnd;
+            updateMipLevel < (levelStart + mBaseLevel) ||
+            (updateMipLevel >= (levelEnd + mBaseLevel) || updateMipLevel > mMaxLevel);
+
         // If the update layers don't intersect the requested layers, skip the update.
         const bool areUpdateLayersOutsideRange =
             updateBaseLayer + updateLayerCount <= layerStart || updateBaseLayer >= layerEnd;
@@ -2567,6 +2647,23 @@
             continue;
         }
 
+        if (mBaseLevel > 0)
+        {
+            // We need to shift the miplevel in the update to fall into the vkiamge
+            if (update.updateSource == UpdateSource::Clear)
+            {
+                update.clear.levelIndex -= mBaseLevel;
+            }
+            else if (update.updateSource == UpdateSource::Buffer)
+            {
+                update.buffer.copyRegion.imageSubresource.mipLevel -= mBaseLevel;
+            }
+            else if (update.updateSource == UpdateSource::Image)
+            {
+                update.image.copyRegion.dstSubresource.mipLevel -= mBaseLevel;
+            }
+        }
+
         if (updateLayerCount >= kMaxParallelSubresourceUpload)
         {
             // If there are more subresources than bits we can track, always insert a barrier.
@@ -2590,29 +2687,35 @@
             subresourceUploadsInProgress |= subresourceHash;
         }
 
-        if (update.updateSource == SubresourceUpdate::UpdateSource::Clear)
+        if (update.updateSource == UpdateSource::Clear)
         {
             clear(update.clear.value, updateMipLevel, updateBaseLayer, updateLayerCount,
                   commandBuffer);
         }
-        else if (update.updateSource == SubresourceUpdate::UpdateSource::Buffer)
+        else if (update.updateSource == UpdateSource::Buffer)
         {
-            commandBuffer->copyBufferToImage(update.buffer.bufferHandle, mImage, getCurrentLayout(),
-                                             1, &update.buffer.copyRegion);
+            BufferUpdate &bufferUpdate = update.buffer;
+
+            BufferHelper *currentBuffer = bufferUpdate.bufferHelper;
+            ASSERT(currentBuffer && currentBuffer->valid());
+            currentBuffer->onGraphAccess(contextVk->getCommandGraph());
+
+            commandBuffer->copyBufferToImage(currentBuffer->getBuffer().getHandle(), mImage,
+                                             getCurrentLayout(), 1, &update.buffer.copyRegion);
         }
         else
         {
             update.image.image->changeLayout(aspectFlags, vk::ImageLayout::TransferSrc,
                                              commandBuffer);
 
-            update.image.image->addReadDependency(this);
+            update.image.image->addReadDependency(contextVk, this);
 
             commandBuffer->copyImage(update.image.image->getImage(),
                                      update.image.image->getCurrentLayout(), mImage,
                                      getCurrentLayout(), 1, &update.image.copyRegion);
         }
 
-        update.release(contextVk);
+        update.release(contextVk->getRenderer());
     }
 
     // Only remove the updates that were actually applied to the image.
@@ -2634,17 +2737,59 @@
     return flushStagedUpdates(contextVk, 0, mLevelCount, 0, mLayerCount, commandBuffer);
 }
 
+bool ImageHelper::isUpdateStaged(uint32_t level, uint32_t layer)
+{
+    // Check to see if any updates are staged for the given level and layer
+
+    if (mSubresourceUpdates.empty())
+    {
+        return false;
+    }
+
+    for (SubresourceUpdate &update : mSubresourceUpdates)
+    {
+        uint32_t updateMipLevel;
+        uint32_t updateBaseLayer;
+        uint32_t updateLayerCount;
+
+        if (update.updateSource == UpdateSource::Clear)
+        {
+            updateMipLevel   = update.clear.levelIndex;
+            updateBaseLayer  = update.clear.layerIndex;
+            updateLayerCount = update.clear.layerCount;
+        }
+        else
+        {
+            const VkImageSubresourceLayers &dstSubresource = update.dstSubresource();
+            updateMipLevel                                 = dstSubresource.mipLevel;
+            updateBaseLayer                                = dstSubresource.baseArrayLayer;
+            updateLayerCount                               = dstSubresource.layerCount;
+        }
+
+        if (updateMipLevel == level)
+        {
+            if (layer >= updateBaseLayer && layer < (updateBaseLayer + updateLayerCount))
+            {
+                // The level matches, and the layer is within the range
+                return true;
+            }
+        }
+    }
+
+    return false;
+}
+
 // ImageHelper::SubresourceUpdate implementation
 ImageHelper::SubresourceUpdate::SubresourceUpdate()
     : updateSource(UpdateSource::Buffer), buffer{VK_NULL_HANDLE}
 {}
 
-ImageHelper::SubresourceUpdate::SubresourceUpdate(VkBuffer bufferHandleIn,
+ImageHelper::SubresourceUpdate::SubresourceUpdate(BufferHelper *bufferHelperIn,
                                                   const VkBufferImageCopy &copyRegionIn)
-    : updateSource(UpdateSource::Buffer), buffer{bufferHandleIn, copyRegionIn}
+    : updateSource(UpdateSource::Buffer), buffer{bufferHelperIn, copyRegionIn}
 {}
 
-ImageHelper::SubresourceUpdate::SubresourceUpdate(vk::ImageHelper *imageIn,
+ImageHelper::SubresourceUpdate::SubresourceUpdate(ImageHelper *imageIn,
                                                   const VkImageCopy &copyRegionIn)
     : updateSource(UpdateSource::Image), image{imageIn, copyRegionIn}
 {}
@@ -2676,23 +2821,12 @@
     }
 }
 
-void ImageHelper::SubresourceUpdate::release(ContextVk *contextVk)
+void ImageHelper::SubresourceUpdate::release(RendererVk *renderer)
 {
     if (updateSource == UpdateSource::Image)
     {
-        image.image->releaseImage(contextVk);
-        image.image->releaseStagingBuffer(contextVk);
-        SafeDelete(image.image);
-    }
-}
-
-void ImageHelper::SubresourceUpdate::release(DisplayVk *display,
-                                             std::vector<GarbageObjectBase> *garbageQueue)
-{
-    if (updateSource == UpdateSource::Image)
-    {
-        image.image->releaseImage(display, garbageQueue);
-        image.image->releaseStagingBuffer(display, garbageQueue);
+        image.image->releaseImage(renderer);
+        image.image->releaseStagingBuffer(renderer);
         SafeDelete(image.image);
     }
 }
@@ -2724,7 +2858,7 @@
 
 void FramebufferHelper::release(ContextVk *contextVk)
 {
-    contextVk->releaseObject(getStoredQueueSerial(), &mFramebuffer);
+    contextVk->addGarbage(&mFramebuffer);
 }
 
 // FramebufferHelper implementation.
@@ -2756,7 +2890,7 @@
 void ShaderProgramHelper::release(ContextVk *contextVk)
 {
     mGraphicsPipelines.release(contextVk);
-    contextVk->releaseObject(mComputePipeline.getSerial(), &mComputePipeline.get());
+    contextVk->addGarbage(&mComputePipeline.get());
     for (BindingPointer<ShaderAndSerial> &shader : mShaders)
     {
         shader.reset();
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.h
index b64cd5d..e183dda 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_helpers.h
@@ -82,8 +82,7 @@
     angle::Result invalidate(ContextVk *contextVk);
 
     // This releases resources when they might currently be in use.
-    void release(ContextVk *contextVk);
-    void release(DisplayVk *display, std::vector<GarbageObjectBase> *garbageQueue);
+    void release(RendererVk *renderer);
 
     // This releases all the buffers that have been allocated since this was last called.
     void releaseInFlightBuffers(ContextVk *contextVk);
@@ -101,10 +100,7 @@
   private:
     void reset();
     angle::Result allocateNewBuffer(ContextVk *contextVk);
-    void releaseBufferListToContext(ContextVk *contextVk, std::vector<BufferHelper *> *buffers);
-    void releaseBufferListToDisplay(DisplayVk *display,
-                                    std::vector<GarbageObjectBase> *garbageQueue,
-                                    std::vector<BufferHelper *> *buffers);
+    void releaseBufferListToRenderer(RendererVk *renderer, std::vector<BufferHelper *> *buffers);
     void destroyBufferList(VkDevice device, std::vector<BufferHelper *> *buffers);
 
     VkBufferUsageFlags mUsage;
@@ -406,7 +402,7 @@
     angle::Result getIndexBufferForDrawArrays(ContextVk *contextVk,
                                               uint32_t clampedVertexCount,
                                               GLint firstVertex,
-                                              vk::BufferHelper **bufferOut,
+                                              BufferHelper **bufferOut,
                                               VkDeviceSize *offsetOut);
 
     angle::Result getIndexBufferForElementArrayBuffer(ContextVk *contextVk,
@@ -414,7 +410,7 @@
                                                       gl::DrawElementsType glIndexType,
                                                       int indexCount,
                                                       intptr_t elementArrayOffset,
-                                                      vk::BufferHelper **bufferOut,
+                                                      BufferHelper **bufferOut,
                                                       VkDeviceSize *bufferOffsetOut,
                                                       uint32_t *indexCountOut);
 
@@ -422,17 +418,28 @@
                                 gl::DrawElementsType glIndexType,
                                 GLsizei indexCount,
                                 const uint8_t *srcPtr,
-                                vk::BufferHelper **bufferOut,
+                                BufferHelper **bufferOut,
                                 VkDeviceSize *bufferOffsetOut,
                                 uint32_t *indexCountOut);
 
+    angle::Result streamIndicesIndirect(ContextVk *contextVk,
+                                        gl::DrawElementsType glIndexType,
+                                        vk::BufferHelper *indexBuffer,
+                                        vk::BufferHelper *indirectBuffer,
+                                        VkDeviceSize indirectBufferOffset,
+                                        vk::BufferHelper **indexBufferOut,
+                                        VkDeviceSize *indexBufferOffsetOut,
+                                        vk::BufferHelper **indirectBufferOut,
+                                        VkDeviceSize *indirectBufferOffsetOut);
+
     void release(ContextVk *contextVk);
     void destroy(VkDevice device);
 
-    static void Draw(uint32_t count, vk::CommandBuffer *commandBuffer);
+    static void Draw(uint32_t count, CommandBuffer *commandBuffer);
 
   private:
     DynamicBuffer mDynamicIndexBuffer;
+    DynamicBuffer mDynamicIndirectBuffer;
 };
 
 class FramebufferHelper;
@@ -448,8 +455,7 @@
                        VkMemoryPropertyFlags memoryPropertyFlags);
     void destroy(VkDevice device);
 
-    void release(ContextVk *contextVk);
-    void release(DisplayVk *display, std::vector<GarbageObjectBase> *garbageQueue);
+    void release(RendererVk *renderer);
 
     bool valid() const { return mBuffer.valid(); }
     const Buffer &getBuffer() const { return mBuffer; }
@@ -460,9 +466,9 @@
     // made for dependencies to non-buffer resources, as only one of two resources participating in
     // the dependency would require a memory barrier.  Note that onWrite takes read access flags
     // too, as output buffers could be read as well.
-    void onRead(CommandGraphResource *reader, VkAccessFlags readAccessType)
+    void onRead(ContextVk *contextVk, CommandGraphResource *reader, VkAccessFlags readAccessType)
     {
-        addReadDependency(reader);
+        addReadDependency(contextVk, reader);
         onReadAccess(reader, readAccessType);
     }
     void onWrite(ContextVk *contextVk,
@@ -470,7 +476,7 @@
                  VkAccessFlags readAccessType,
                  VkAccessFlags writeAccessType)
     {
-        addWriteDependency(writer);
+        addWriteDependency(contextVk, writer);
         onWriteAccess(contextVk, readAccessType, writeAccessType);
     }
     // Helper for setting a graph dependency between two buffers.  This is a specialized function as
@@ -481,7 +487,7 @@
                         VkAccessFlags readAccessType,
                         VkAccessFlags writeAccessType)
     {
-        addReadDependency(reader);
+        addReadDependency(contextVk, reader);
         onReadAccess(reader, readAccessType);
         reader->onWriteAccess(contextVk, 0, writeAccessType);
     }
@@ -644,7 +650,7 @@
     ~ImageHelper() override;
 
     void initStagingBuffer(RendererVk *renderer,
-                           const vk::Format &format,
+                           const Format &format,
                            VkBufferUsageFlags usageFlags,
                            size_t initialSize);
 
@@ -654,6 +660,8 @@
                        const Format &format,
                        GLint samples,
                        VkImageUsageFlags usage,
+                       uint32_t baseLevel,
+                       uint32_t maxLevel,
                        uint32_t mipLevels,
                        uint32_t layerCount);
     angle::Result initExternal(Context *context,
@@ -664,6 +672,8 @@
                                VkImageUsageFlags usage,
                                ImageLayout initialLayout,
                                const void *externalImageCreateInfo,
+                               uint32_t baseLevel,
+                               uint32_t maxLevel,
                                uint32_t mipLevels,
                                uint32_t layerCount);
     angle::Result initMemory(Context *context,
@@ -703,17 +713,13 @@
                                 VkImageUsageFlags usage,
                                 uint32_t layerCount);
 
-    void releaseImage(ContextVk *contextVk);
-    void releaseImage(DisplayVk *display, std::vector<GarbageObjectBase> *garbageQueue);
-
-    void releaseStagingBuffer(ContextVk *contextVk);
-    void releaseStagingBuffer(DisplayVk *display, std::vector<GarbageObjectBase> *garbageQueue);
+    void releaseImage(RendererVk *rendererVk);
+    void releaseStagingBuffer(RendererVk *renderer);
 
     bool valid() const { return mImage.valid(); }
 
     VkImageAspectFlags getAspectFlags() const;
     void destroy(VkDevice device);
-    void dumpResources(Serial serial, std::vector<GarbageObject> *garbageQueue);
 
     void init2DWeakReference(VkImage handle,
                              const gl::Extents &glExtents,
@@ -741,7 +747,7 @@
                uint32_t mipLevel,
                uint32_t baseArrayLayer,
                uint32_t layerCount,
-               vk::CommandBuffer *commandBuffer);
+               CommandBuffer *commandBuffer);
 
     gl::Extents getSize(const gl::ImageIndex &index) const;
 
@@ -752,13 +758,13 @@
                      const gl::Extents &copySize,
                      const VkImageSubresourceLayers &srcSubresources,
                      const VkImageSubresourceLayers &dstSubresources,
-                     vk::CommandBuffer *commandBuffer);
+                     CommandBuffer *commandBuffer);
 
     angle::Result generateMipmapsWithBlit(ContextVk *contextVk, GLuint maxLevel);
 
     // Resolve this image into a destination image.  This image should be in the TransferSrc layout.
     // The destination image is automatically transitioned into TransferDst.
-    void resolve(ImageHelper *dest, const VkImageResolve &region, vk::CommandBuffer *commandBuffer);
+    void resolve(ImageHelper *dest, const VkImageResolve &region, CommandBuffer *commandBuffer);
 
     // Data staging
     void removeStagedUpdates(ContextVk *contextVk, const gl::ImageIndex &index);
@@ -771,7 +777,7 @@
                                          const gl::PixelUnpackState &unpack,
                                          GLenum type,
                                          const uint8_t *pixels,
-                                         const vk::Format &vkFormat);
+                                         const Format &vkFormat);
 
     angle::Result stageSubresourceUpdateAndGetData(ContextVk *contextVk,
                                                    size_t allocationSize,
@@ -780,6 +786,16 @@
                                                    const gl::Offset &offset,
                                                    uint8_t **destData);
 
+    angle::Result stageSubresourceUpdateFromBuffer(ContextVk *contextVk,
+                                                   size_t allocationSize,
+                                                   uint32_t mipLevel,
+                                                   uint32_t baseArrayLayer,
+                                                   uint32_t layerCount,
+                                                   const gl::Extents &glExtents,
+                                                   const gl::Offset &offset,
+                                                   BufferHelper *stagingBuffer,
+                                                   VkDeviceSize stagingOffset);
+
     angle::Result stageSubresourceUpdateFromFramebuffer(const gl::Context *context,
                                                         const gl::ImageIndex &index,
                                                         const gl::Rectangle &sourceArea,
@@ -788,7 +804,7 @@
                                                         const gl::InternalFormat &formatInfo,
                                                         FramebufferVk *framebufferVk);
 
-    void stageSubresourceUpdateFromImage(vk::ImageHelper *image,
+    void stageSubresourceUpdateFromImage(ImageHelper *image,
                                          const gl::ImageIndex &index,
                                          const gl::Offset &destOffset,
                                          const gl::Extents &glExtents,
@@ -810,7 +826,7 @@
     angle::Result allocateStagingMemory(ContextVk *contextVk,
                                         size_t sizeInBytes,
                                         uint8_t **ptrOut,
-                                        VkBuffer *handleOut,
+                                        BufferHelper **bufferOut,
                                         VkDeviceSize *offsetOut,
                                         bool *newBufferAllocatedOut);
 
@@ -822,12 +838,14 @@
                                      uint32_t levelEnd,
                                      uint32_t layerStart,
                                      uint32_t layerEnd,
-                                     vk::CommandBuffer *commandBuffer);
+                                     CommandBuffer *commandBuffer);
     // Creates a command buffer and flushes all staged updates.  This is used for one-time
     // initialization of resources that we don't expect to accumulate further staged updates, such
     // as with renderbuffers or surface images.
     angle::Result flushAllStagedUpdates(ContextVk *contextVk);
 
+    bool isUpdateStaged(uint32_t level, uint32_t layer);
+
     bool hasStagedUpdates() const { return !mSubresourceUpdates.empty(); }
 
     // changeLayout automatically skips the layout change if it's unnecessary.  This function can be
@@ -837,7 +855,7 @@
 
     void changeLayout(VkImageAspectFlags aspectMask,
                       ImageLayout newLayout,
-                      vk::CommandBuffer *commandBuffer);
+                      CommandBuffer *commandBuffer);
 
     bool isQueueChangeNeccesary(uint32_t newQueueFamilyIndex) const
     {
@@ -847,13 +865,16 @@
     void changeLayoutAndQueue(VkImageAspectFlags aspectMask,
                               ImageLayout newLayout,
                               uint32_t newQueueFamilyIndex,
-                              vk::CommandBuffer *commandBuffer);
+                              CommandBuffer *commandBuffer);
+
+    uint32_t getBaseLevel();
+    void setBaseAndMaxLevels(uint32_t baseLevel, uint32_t maxLevel);
 
   private:
     void forceChangeLayoutAndQueue(VkImageAspectFlags aspectMask,
                                    ImageLayout newLayout,
                                    uint32_t newQueueFamilyIndex,
-                                   vk::CommandBuffer *commandBuffer);
+                                   CommandBuffer *commandBuffer);
 
     void stageSubresourceClear(const gl::ImageIndex &index,
                                const angle::Format &format,
@@ -865,7 +886,7 @@
                     uint32_t levelCount,
                     uint32_t baseArrayLayer,
                     uint32_t layerCount,
-                    vk::CommandBuffer *commandBuffer);
+                    CommandBuffer *commandBuffer);
 
     void clearDepthStencil(VkImageAspectFlags imageAspectFlags,
                            VkImageAspectFlags clearAspectFlags,
@@ -874,18 +895,41 @@
                            uint32_t levelCount,
                            uint32_t baseArrayLayer,
                            uint32_t layerCount,
-                           vk::CommandBuffer *commandBuffer);
+                           CommandBuffer *commandBuffer);
+
+    enum class UpdateSource
+    {
+        Clear,
+        Buffer,
+        Image,
+    };
+    struct ClearUpdate
+    {
+        VkClearValue value;
+        uint32_t levelIndex;
+        uint32_t layerIndex;
+        uint32_t layerCount;
+    };
+    struct BufferUpdate
+    {
+        BufferHelper *bufferHelper;
+        VkBufferImageCopy copyRegion;
+    };
+    struct ImageUpdate
+    {
+        ImageHelper *image;
+        VkImageCopy copyRegion;
+    };
 
     struct SubresourceUpdate
     {
         SubresourceUpdate();
-        SubresourceUpdate(VkBuffer bufferHandle, const VkBufferImageCopy &copyRegion);
-        SubresourceUpdate(vk::ImageHelper *image, const VkImageCopy &copyRegion);
+        SubresourceUpdate(BufferHelper *bufferHelperIn, const VkBufferImageCopy &copyRegion);
+        SubresourceUpdate(ImageHelper *image, const VkImageCopy &copyRegion);
         SubresourceUpdate(const VkClearValue &clearValue, const gl::ImageIndex &imageIndex);
         SubresourceUpdate(const SubresourceUpdate &other);
 
-        void release(ContextVk *contextVk);
-        void release(DisplayVk *display, std::vector<GarbageObjectBase> *garbageQueue);
+        void release(RendererVk *renderer);
 
         const VkImageSubresourceLayers &dstSubresource() const
         {
@@ -895,30 +939,6 @@
         }
         bool isUpdateToLayerLevel(uint32_t layerIndex, uint32_t levelIndex) const;
 
-        enum class UpdateSource
-        {
-            Clear,
-            Buffer,
-            Image,
-        };
-        struct ClearUpdate
-        {
-            VkClearValue value;
-            uint32_t levelIndex;
-            uint32_t layerIndex;
-            uint32_t layerCount;
-        };
-        struct BufferUpdate
-        {
-            VkBuffer bufferHandle;
-            VkBufferImageCopy copyRegion;
-        };
-        struct ImageUpdate
-        {
-            vk::ImageHelper *image;
-            VkImageCopy copyRegion;
-        };
-
         UpdateSource updateSource;
         union
         {
@@ -942,11 +962,13 @@
     uint32_t mCurrentQueueFamilyIndex;
 
     // Cached properties.
+    uint32_t mBaseLevel;
+    uint32_t mMaxLevel;
     uint32_t mLayerCount;
     uint32_t mLevelCount;
 
     // Staging buffer
-    vk::DynamicBuffer mStagingBuffer;
+    DynamicBuffer mStagingBuffer;
     std::vector<SubresourceUpdate> mSubresourceUpdates;
 };
 
@@ -1004,13 +1026,13 @@
         return mShaders[gl::ShaderType::Vertex].valid();
     }
 
-    vk::ShaderAndSerial &getShader(gl::ShaderType shaderType) { return mShaders[shaderType].get(); }
+    ShaderAndSerial &getShader(gl::ShaderType shaderType) { return mShaders[shaderType].get(); }
 
     void setShader(gl::ShaderType shaderType, RefCounted<ShaderAndSerial> *shader);
 
-    // For getting a vk::Pipeline and from the pipeline cache.
+    // For getting a Pipeline and from the pipeline cache.
     ANGLE_INLINE angle::Result getGraphicsPipeline(
-        Context *context,
+        ContextVk *contextVk,
         RenderPassCache *renderPassCache,
         const PipelineCache &pipelineCache,
         Serial currentQueueSerial,
@@ -1018,23 +1040,27 @@
         const GraphicsPipelineDesc &pipelineDesc,
         const gl::AttributesMask &activeAttribLocationsMask,
         const gl::ComponentTypeMask &programAttribsTypeMask,
-        const vk::GraphicsPipelineDesc **descPtrOut,
+        const GraphicsPipelineDesc **descPtrOut,
         PipelineHelper **pipelineOut)
     {
         // Pull in a compatible RenderPass.
-        vk::RenderPass *compatibleRenderPass = nullptr;
-        ANGLE_TRY(renderPassCache->getCompatibleRenderPass(
-            context, currentQueueSerial, pipelineDesc.getRenderPassDesc(), &compatibleRenderPass));
+        RenderPass *compatibleRenderPass = nullptr;
+        ANGLE_TRY(renderPassCache->getCompatibleRenderPass(contextVk, currentQueueSerial,
+                                                           pipelineDesc.getRenderPassDesc(),
+                                                           &compatibleRenderPass));
 
         ShaderModule *vertexShader   = &mShaders[gl::ShaderType::Vertex].get().get();
         ShaderModule *fragmentShader = mShaders[gl::ShaderType::Fragment].valid()
                                            ? &mShaders[gl::ShaderType::Fragment].get().get()
                                            : nullptr;
+        ShaderModule *geometryShader = mShaders[gl::ShaderType::Geometry].valid()
+                                           ? &mShaders[gl::ShaderType::Geometry].get().get()
+                                           : nullptr;
 
-        return mGraphicsPipelines.getPipeline(context, pipelineCache, *compatibleRenderPass,
-                                              pipelineLayout, activeAttribLocationsMask,
-                                              programAttribsTypeMask, vertexShader, fragmentShader,
-                                              pipelineDesc, descPtrOut, pipelineOut);
+        return mGraphicsPipelines.getPipeline(
+            contextVk, pipelineCache, *compatibleRenderPass, pipelineLayout,
+            activeAttribLocationsMask, programAttribsTypeMask, vertexShader, fragmentShader,
+            geometryShader, pipelineDesc, descPtrOut, pipelineOut);
     }
 
     angle::Result getComputePipeline(Context *context,
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp
index 2815289..83aade9 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp
@@ -58,6 +58,10 @@
 #include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000B.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000002.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000003.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000000.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertIndexIndirectLineLoop.comp.00000001.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc"
@@ -84,6 +88,24 @@
 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000017.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001A.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001B.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001C.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001D.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001E.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000001F.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000020.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000021.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000022.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000023.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000024.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000025.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000026.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000027.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000028.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000029.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000002A.inc"
+#include "libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000002B.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/FullScreenQuad.vert.00000000.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000000.inc"
 #include "libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000001.inc"
@@ -192,6 +214,14 @@
 constexpr ShaderBlob kConvertIndex_comp_shaders[] = {
     {kConvertIndex_comp_00000000, sizeof(kConvertIndex_comp_00000000)},
     {kConvertIndex_comp_00000001, sizeof(kConvertIndex_comp_00000001)},
+    {kConvertIndex_comp_00000002, sizeof(kConvertIndex_comp_00000002)},
+    {kConvertIndex_comp_00000003, sizeof(kConvertIndex_comp_00000003)},
+};
+constexpr ShaderBlob kConvertIndexIndirectLineLoop_comp_shaders[] = {
+    {kConvertIndexIndirectLineLoop_comp_00000000,
+     sizeof(kConvertIndexIndirectLineLoop_comp_00000000)},
+    {kConvertIndexIndirectLineLoop_comp_00000001,
+     sizeof(kConvertIndexIndirectLineLoop_comp_00000001)},
 };
 constexpr ShaderBlob kConvertVertex_comp_shaders[] = {
     {kConvertVertex_comp_00000000, sizeof(kConvertVertex_comp_00000000)},
@@ -220,6 +250,24 @@
     {kConvertVertex_comp_00000017, sizeof(kConvertVertex_comp_00000017)},
     {kConvertVertex_comp_00000018, sizeof(kConvertVertex_comp_00000018)},
     {kConvertVertex_comp_00000019, sizeof(kConvertVertex_comp_00000019)},
+    {kConvertVertex_comp_0000001A, sizeof(kConvertVertex_comp_0000001A)},
+    {kConvertVertex_comp_0000001B, sizeof(kConvertVertex_comp_0000001B)},
+    {kConvertVertex_comp_0000001C, sizeof(kConvertVertex_comp_0000001C)},
+    {kConvertVertex_comp_0000001D, sizeof(kConvertVertex_comp_0000001D)},
+    {kConvertVertex_comp_0000001E, sizeof(kConvertVertex_comp_0000001E)},
+    {kConvertVertex_comp_0000001F, sizeof(kConvertVertex_comp_0000001F)},
+    {kConvertVertex_comp_00000020, sizeof(kConvertVertex_comp_00000020)},
+    {kConvertVertex_comp_00000021, sizeof(kConvertVertex_comp_00000021)},
+    {kConvertVertex_comp_00000022, sizeof(kConvertVertex_comp_00000022)},
+    {kConvertVertex_comp_00000023, sizeof(kConvertVertex_comp_00000023)},
+    {kConvertVertex_comp_00000024, sizeof(kConvertVertex_comp_00000024)},
+    {kConvertVertex_comp_00000025, sizeof(kConvertVertex_comp_00000025)},
+    {kConvertVertex_comp_00000026, sizeof(kConvertVertex_comp_00000026)},
+    {kConvertVertex_comp_00000027, sizeof(kConvertVertex_comp_00000027)},
+    {kConvertVertex_comp_00000028, sizeof(kConvertVertex_comp_00000028)},
+    {kConvertVertex_comp_00000029, sizeof(kConvertVertex_comp_00000029)},
+    {kConvertVertex_comp_0000002A, sizeof(kConvertVertex_comp_0000002A)},
+    {kConvertVertex_comp_0000002B, sizeof(kConvertVertex_comp_0000002B)},
 };
 constexpr ShaderBlob kFullScreenQuad_vert_shaders[] = {
     {kFullScreenQuad_vert_00000000, sizeof(kFullScreenQuad_vert_00000000)},
@@ -333,6 +381,10 @@
     {
         shader.get().destroy(device);
     }
+    for (RefCounted<ShaderAndSerial> &shader : mConvertIndexIndirectLineLoop_comp_shaders)
+    {
+        shader.get().destroy(device);
+    }
     for (RefCounted<ShaderAndSerial> &shader : mConvertVertex_comp_shaders)
     {
         shader.get().destroy(device);
@@ -393,6 +445,16 @@
                      ArraySize(kConvertIndex_comp_shaders), shaderFlags, shaderOut);
 }
 
+angle::Result ShaderLibrary::getConvertIndexIndirectLineLoop_comp(
+    Context *context,
+    uint32_t shaderFlags,
+    RefCounted<ShaderAndSerial> **shaderOut)
+{
+    return GetShader(context, mConvertIndexIndirectLineLoop_comp_shaders,
+                     kConvertIndexIndirectLineLoop_comp_shaders,
+                     ArraySize(kConvertIndexIndirectLineLoop_comp_shaders), shaderFlags, shaderOut);
+}
+
 angle::Result ShaderLibrary::getConvertVertex_comp(Context *context,
                                                    uint32_t shaderFlags,
                                                    RefCounted<ShaderAndSerial> **shaderOut)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni
index 64a9f63..8b28069 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.gni
@@ -9,123 +9,145 @@
 #   List of generated shaders for inclusion in ANGLE's build process.
 
 angle_vulkan_internal_shaders = [
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000002.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000003.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000004.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000005.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000006.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000007.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000008.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000009.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000A.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000B.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000C.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000D.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000E.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000F.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000010.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000011.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000012.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000013.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000014.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000015.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000016.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000017.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000003.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000001.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000002.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000003.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000004.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000005.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000006.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000007.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000008.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000009.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000A.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000B.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertIndex.comp.00000001.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000001.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000002.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000003.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000004.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000005.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000006.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000008.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000009.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000A.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000B.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000C.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000D.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000E.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.0000000F.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000010.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000011.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000012.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000013.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000014.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000015.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000016.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000017.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000018.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000019.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/FullScreenQuad.vert.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000001.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000002.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000003.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000004.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000005.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000006.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000007.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000008.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000009.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000A.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000B.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000C.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000D.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000E.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.0000000F.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000010.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000011.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000012.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000013.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000014.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000015.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000016.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageClear.frag.00000017.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000001.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000002.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000003.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000004.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000005.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000008.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000009.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000A.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000B.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000C.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.0000000D.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000010.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000011.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000012.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/OverlayCull.comp.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/OverlayCull.comp.00000001.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/OverlayCull.comp.00000002.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/OverlayCull.comp.00000003.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/OverlayCull.comp.00000004.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/OverlayCull.comp.00000005.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.comp.00000000.inc",
-  "src/libANGLE/renderer/vulkan/shaders/gen/OverlayDraw.comp.00000001.inc",
+  "shaders/gen/BlitResolve.frag.00000000.inc",
+  "shaders/gen/BlitResolve.frag.00000001.inc",
+  "shaders/gen/BlitResolve.frag.00000002.inc",
+  "shaders/gen/BlitResolve.frag.00000003.inc",
+  "shaders/gen/BlitResolve.frag.00000004.inc",
+  "shaders/gen/BlitResolve.frag.00000005.inc",
+  "shaders/gen/BlitResolve.frag.00000006.inc",
+  "shaders/gen/BlitResolve.frag.00000007.inc",
+  "shaders/gen/BlitResolve.frag.00000008.inc",
+  "shaders/gen/BlitResolve.frag.00000009.inc",
+  "shaders/gen/BlitResolve.frag.0000000A.inc",
+  "shaders/gen/BlitResolve.frag.0000000B.inc",
+  "shaders/gen/BlitResolve.frag.0000000C.inc",
+  "shaders/gen/BlitResolve.frag.0000000D.inc",
+  "shaders/gen/BlitResolve.frag.0000000E.inc",
+  "shaders/gen/BlitResolve.frag.0000000F.inc",
+  "shaders/gen/BlitResolve.frag.00000010.inc",
+  "shaders/gen/BlitResolve.frag.00000011.inc",
+  "shaders/gen/BlitResolve.frag.00000012.inc",
+  "shaders/gen/BlitResolve.frag.00000013.inc",
+  "shaders/gen/BlitResolve.frag.00000014.inc",
+  "shaders/gen/BlitResolve.frag.00000015.inc",
+  "shaders/gen/BlitResolve.frag.00000016.inc",
+  "shaders/gen/BlitResolve.frag.00000017.inc",
+  "shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc",
+  "shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc",
+  "shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc",
+  "shaders/gen/BlitResolveStencilNoExport.comp.00000003.inc",
+  "shaders/gen/BufferUtils.comp.00000000.inc",
+  "shaders/gen/BufferUtils.comp.00000001.inc",
+  "shaders/gen/BufferUtils.comp.00000002.inc",
+  "shaders/gen/BufferUtils.comp.00000003.inc",
+  "shaders/gen/BufferUtils.comp.00000004.inc",
+  "shaders/gen/BufferUtils.comp.00000005.inc",
+  "shaders/gen/BufferUtils.comp.00000006.inc",
+  "shaders/gen/BufferUtils.comp.00000007.inc",
+  "shaders/gen/BufferUtils.comp.00000008.inc",
+  "shaders/gen/BufferUtils.comp.00000009.inc",
+  "shaders/gen/BufferUtils.comp.0000000A.inc",
+  "shaders/gen/BufferUtils.comp.0000000B.inc",
+  "shaders/gen/ConvertIndex.comp.00000000.inc",
+  "shaders/gen/ConvertIndex.comp.00000001.inc",
+  "shaders/gen/ConvertIndex.comp.00000002.inc",
+  "shaders/gen/ConvertIndex.comp.00000003.inc",
+  "shaders/gen/ConvertIndexIndirectLineLoop.comp.00000000.inc",
+  "shaders/gen/ConvertIndexIndirectLineLoop.comp.00000001.inc",
+  "shaders/gen/ConvertVertex.comp.00000000.inc",
+  "shaders/gen/ConvertVertex.comp.00000001.inc",
+  "shaders/gen/ConvertVertex.comp.00000002.inc",
+  "shaders/gen/ConvertVertex.comp.00000003.inc",
+  "shaders/gen/ConvertVertex.comp.00000004.inc",
+  "shaders/gen/ConvertVertex.comp.00000005.inc",
+  "shaders/gen/ConvertVertex.comp.00000006.inc",
+  "shaders/gen/ConvertVertex.comp.00000007.inc",
+  "shaders/gen/ConvertVertex.comp.00000008.inc",
+  "shaders/gen/ConvertVertex.comp.00000009.inc",
+  "shaders/gen/ConvertVertex.comp.0000000A.inc",
+  "shaders/gen/ConvertVertex.comp.0000000B.inc",
+  "shaders/gen/ConvertVertex.comp.0000000C.inc",
+  "shaders/gen/ConvertVertex.comp.0000000D.inc",
+  "shaders/gen/ConvertVertex.comp.0000000E.inc",
+  "shaders/gen/ConvertVertex.comp.0000000F.inc",
+  "shaders/gen/ConvertVertex.comp.00000010.inc",
+  "shaders/gen/ConvertVertex.comp.00000011.inc",
+  "shaders/gen/ConvertVertex.comp.00000012.inc",
+  "shaders/gen/ConvertVertex.comp.00000013.inc",
+  "shaders/gen/ConvertVertex.comp.00000014.inc",
+  "shaders/gen/ConvertVertex.comp.00000015.inc",
+  "shaders/gen/ConvertVertex.comp.00000016.inc",
+  "shaders/gen/ConvertVertex.comp.00000017.inc",
+  "shaders/gen/ConvertVertex.comp.00000018.inc",
+  "shaders/gen/ConvertVertex.comp.00000019.inc",
+  "shaders/gen/ConvertVertex.comp.0000001A.inc",
+  "shaders/gen/ConvertVertex.comp.0000001B.inc",
+  "shaders/gen/ConvertVertex.comp.0000001C.inc",
+  "shaders/gen/ConvertVertex.comp.0000001D.inc",
+  "shaders/gen/ConvertVertex.comp.0000001E.inc",
+  "shaders/gen/ConvertVertex.comp.0000001F.inc",
+  "shaders/gen/ConvertVertex.comp.00000020.inc",
+  "shaders/gen/ConvertVertex.comp.00000021.inc",
+  "shaders/gen/ConvertVertex.comp.00000022.inc",
+  "shaders/gen/ConvertVertex.comp.00000023.inc",
+  "shaders/gen/ConvertVertex.comp.00000024.inc",
+  "shaders/gen/ConvertVertex.comp.00000025.inc",
+  "shaders/gen/ConvertVertex.comp.00000026.inc",
+  "shaders/gen/ConvertVertex.comp.00000027.inc",
+  "shaders/gen/ConvertVertex.comp.00000028.inc",
+  "shaders/gen/ConvertVertex.comp.00000029.inc",
+  "shaders/gen/ConvertVertex.comp.0000002A.inc",
+  "shaders/gen/ConvertVertex.comp.0000002B.inc",
+  "shaders/gen/FullScreenQuad.vert.00000000.inc",
+  "shaders/gen/ImageClear.frag.00000000.inc",
+  "shaders/gen/ImageClear.frag.00000001.inc",
+  "shaders/gen/ImageClear.frag.00000002.inc",
+  "shaders/gen/ImageClear.frag.00000003.inc",
+  "shaders/gen/ImageClear.frag.00000004.inc",
+  "shaders/gen/ImageClear.frag.00000005.inc",
+  "shaders/gen/ImageClear.frag.00000006.inc",
+  "shaders/gen/ImageClear.frag.00000007.inc",
+  "shaders/gen/ImageClear.frag.00000008.inc",
+  "shaders/gen/ImageClear.frag.00000009.inc",
+  "shaders/gen/ImageClear.frag.0000000A.inc",
+  "shaders/gen/ImageClear.frag.0000000B.inc",
+  "shaders/gen/ImageClear.frag.0000000C.inc",
+  "shaders/gen/ImageClear.frag.0000000D.inc",
+  "shaders/gen/ImageClear.frag.0000000E.inc",
+  "shaders/gen/ImageClear.frag.0000000F.inc",
+  "shaders/gen/ImageClear.frag.00000010.inc",
+  "shaders/gen/ImageClear.frag.00000011.inc",
+  "shaders/gen/ImageClear.frag.00000012.inc",
+  "shaders/gen/ImageClear.frag.00000013.inc",
+  "shaders/gen/ImageClear.frag.00000014.inc",
+  "shaders/gen/ImageClear.frag.00000015.inc",
+  "shaders/gen/ImageClear.frag.00000016.inc",
+  "shaders/gen/ImageClear.frag.00000017.inc",
+  "shaders/gen/ImageCopy.frag.00000000.inc",
+  "shaders/gen/ImageCopy.frag.00000001.inc",
+  "shaders/gen/ImageCopy.frag.00000002.inc",
+  "shaders/gen/ImageCopy.frag.00000003.inc",
+  "shaders/gen/ImageCopy.frag.00000004.inc",
+  "shaders/gen/ImageCopy.frag.00000005.inc",
+  "shaders/gen/ImageCopy.frag.00000008.inc",
+  "shaders/gen/ImageCopy.frag.00000009.inc",
+  "shaders/gen/ImageCopy.frag.0000000A.inc",
+  "shaders/gen/ImageCopy.frag.0000000B.inc",
+  "shaders/gen/ImageCopy.frag.0000000C.inc",
+  "shaders/gen/ImageCopy.frag.0000000D.inc",
+  "shaders/gen/ImageCopy.frag.00000010.inc",
+  "shaders/gen/ImageCopy.frag.00000011.inc",
+  "shaders/gen/ImageCopy.frag.00000012.inc",
+  "shaders/gen/ImageCopy.frag.00000013.inc",
+  "shaders/gen/ImageCopy.frag.00000014.inc",
+  "shaders/gen/ImageCopy.frag.00000015.inc",
+  "shaders/gen/OverlayCull.comp.00000000.inc",
+  "shaders/gen/OverlayCull.comp.00000001.inc",
+  "shaders/gen/OverlayCull.comp.00000002.inc",
+  "shaders/gen/OverlayCull.comp.00000003.inc",
+  "shaders/gen/OverlayCull.comp.00000004.inc",
+  "shaders/gen/OverlayCull.comp.00000005.inc",
+  "shaders/gen/OverlayDraw.comp.00000000.inc",
+  "shaders/gen/OverlayDraw.comp.00000001.inc",
 ]
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h
index 56f7c76..fbc5c64 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h
@@ -73,9 +73,19 @@
 enum flags
 {
     kIsPrimitiveRestartEnabled = 0x00000001,
+    kIsIndirect                = 0x00000002,
+};
+constexpr size_t kArrayLen = 0x00000004;
+}  // namespace ConvertIndex_comp
+
+namespace ConvertIndexIndirectLineLoop_comp
+{
+enum flags
+{
+    kIs32Bit = 0x00000001,
 };
 constexpr size_t kArrayLen = 0x00000002;
-}  // namespace ConvertIndex_comp
+}  // namespace ConvertIndexIndirectLineLoop_comp
 
 namespace ConvertVertex_comp
 {
@@ -85,21 +95,30 @@
 };
 enum Conversion
 {
-    kSintToSint          = 0x00000000,
-    kUintToUint          = 0x00000002,
-    kSintToFloat         = 0x00000004,
-    kUintToFloat         = 0x00000006,
-    kSnormToFloat        = 0x00000008,
-    kUnormToFloat        = 0x0000000A,
-    kFixedToFloat        = 0x0000000C,
-    kFloatToFloat        = 0x0000000E,
-    kA2BGR10SintToSint   = 0x00000010,
-    kA2BGR10UintToUint   = 0x00000012,
-    kA2BGR10SintToFloat  = 0x00000014,
-    kA2BGR10UintToFloat  = 0x00000016,
-    kA2BGR10SnormToFloat = 0x00000018,
+    kSintToSint           = 0x00000000,
+    kUintToUint           = 0x00000002,
+    kSintToFloat          = 0x00000004,
+    kUintToFloat          = 0x00000006,
+    kSnormToFloat         = 0x00000008,
+    kUnormToFloat         = 0x0000000A,
+    kFixedToFloat         = 0x0000000C,
+    kFloatToFloat         = 0x0000000E,
+    kA2BGR10SintToSint    = 0x00000010,
+    kA2BGR10UintToUint    = 0x00000012,
+    kA2BGR10SintToFloat   = 0x00000014,
+    kA2BGR10UintToFloat   = 0x00000016,
+    kA2BGR10SnormToFloat  = 0x00000018,
+    kRGB10A2SintToFloat   = 0x0000001A,
+    kRGB10A2UintToFloat   = 0x0000001C,
+    kRGB10A2SnormToFloat  = 0x0000001E,
+    kRGB10A2UnormToFloat  = 0x00000020,
+    kRGB10X2SintToFloat   = 0x00000022,
+    kRGB10X2UintToFloat   = 0x00000024,
+    kRGB10X2SnormToFloat  = 0x00000026,
+    kRGB10X2UnormToFloat  = 0x00000028,
+    kHalfFloatToHalfFloat = 0x0000002A,
 };
-constexpr size_t kArrayLen = 0x0000001A;
+constexpr size_t kArrayLen = 0x0000002C;
 }  // namespace ConvertVertex_comp
 
 namespace FullScreenQuad_vert
@@ -198,6 +217,9 @@
     angle::Result getConvertIndex_comp(Context *context,
                                        uint32_t shaderFlags,
                                        RefCounted<ShaderAndSerial> **shaderOut);
+    angle::Result getConvertIndexIndirectLineLoop_comp(Context *context,
+                                                       uint32_t shaderFlags,
+                                                       RefCounted<ShaderAndSerial> **shaderOut);
     angle::Result getConvertVertex_comp(Context *context,
                                         uint32_t shaderFlags,
                                         RefCounted<ShaderAndSerial> **shaderOut);
@@ -226,6 +248,8 @@
         mBufferUtils_comp_shaders[InternalShader::BufferUtils_comp::kArrayLen];
     RefCounted<ShaderAndSerial>
         mConvertIndex_comp_shaders[InternalShader::ConvertIndex_comp::kArrayLen];
+    RefCounted<ShaderAndSerial> mConvertIndexIndirectLineLoop_comp_shaders
+        [InternalShader::ConvertIndexIndirectLineLoop_comp::kArrayLen];
     RefCounted<ShaderAndSerial>
         mConvertVertex_comp_shaders[InternalShader::ConvertVertex_comp::kArrayLen];
     RefCounted<ShaderAndSerial>
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.cpp
index 2399bf1..d332b87 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.cpp
@@ -52,9 +52,10 @@
 
 namespace rx
 {
-// Mirrors std_validation_str in loader.c
-const char *g_VkStdValidationLayerName = "VK_LAYER_LUNARG_standard_validation";
-const char *g_VkValidationLayerNames[] = {
+// Unified layer that includes full validation layer stack
+const char *g_VkKhronosValidationLayerName  = "VK_LAYER_KHRONOS_validation";
+const char *g_VkStandardValidationLayerName = "VK_LAYER_LUNARG_standard_validation";
+const char *g_VkValidationLayerNames[]      = {
     "VK_LAYER_GOOGLE_threading", "VK_LAYER_LUNARG_parameter_validation",
     "VK_LAYER_LUNARG_object_tracker", "VK_LAYER_LUNARG_core_validation",
     "VK_LAYER_GOOGLE_unique_objects"};
@@ -72,9 +73,14 @@
     return false;
 }
 
+bool HasKhronosValidationLayer(const std::vector<VkLayerProperties> &layerProps)
+{
+    return HasValidationLayer(layerProps, g_VkKhronosValidationLayerName);
+}
+
 bool HasStandardValidationLayer(const std::vector<VkLayerProperties> &layerProps)
 {
-    return HasValidationLayer(layerProps, g_VkStdValidationLayerName);
+    return HasValidationLayer(layerProps, g_VkStandardValidationLayerName);
 }
 
 bool HasValidationLayers(const std::vector<VkLayerProperties> &layerProps)
@@ -215,9 +221,14 @@
                                   bool mustHaveLayers,
                                   VulkanLayerVector *enabledLayerNames)
 {
-    if (HasStandardValidationLayer(layerProps))
+    // Favor unified Khronos layer, but fallback to standard validation
+    if (HasKhronosValidationLayer(layerProps))
     {
-        enabledLayerNames->push_back(g_VkStdValidationLayerName);
+        enabledLayerNames->push_back(g_VkKhronosValidationLayerName);
+    }
+    else if (HasStandardValidationLayer(layerProps))
+    {
+        enabledLayerNames->push_back(g_VkStandardValidationLayerName);
     }
     else if (HasValidationLayers(layerProps))
     {
@@ -330,8 +341,16 @@
     mSize = 0;
 }
 
-angle::Result StagingBuffer::init(Context *context, VkDeviceSize size, StagingUsage usage)
+angle::Result StagingBuffer::init(ContextVk *contextVk, VkDeviceSize size, StagingUsage usage)
 {
+    // TODO: Remove with anglebug.com/2162: Vulkan: Implement device memory sub-allocation
+    // Check if we have too many resources allocated already and need to free some before allocating
+    // more and (possibly) exceeding the device's limits.
+    if (contextVk->shouldFlush())
+    {
+        ANGLE_TRY(contextVk->flushImpl(nullptr));
+    }
+
     VkBufferCreateInfo createInfo    = {};
     createInfo.sType                 = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
     createInfo.flags                 = 0;
@@ -344,17 +363,17 @@
     VkMemoryPropertyFlags flags =
         (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
 
-    ANGLE_VK_TRY(context, mBuffer.init(context->getDevice(), createInfo));
+    ANGLE_VK_TRY(contextVk, mBuffer.init(contextVk->getDevice(), createInfo));
     VkMemoryPropertyFlags flagsOut = 0;
-    ANGLE_TRY(AllocateBufferMemory(context, flags, &flagsOut, nullptr, &mBuffer, &mDeviceMemory));
+    ANGLE_TRY(AllocateBufferMemory(contextVk, flags, &flagsOut, nullptr, &mBuffer, &mDeviceMemory));
     mSize = static_cast<size_t>(size);
     return angle::Result::Continue;
 }
 
-void StagingBuffer::dumpResources(Serial serial, std::vector<vk::GarbageObject> *garbageQueue)
+void StagingBuffer::release(ContextVk *contextVk)
 {
-    mBuffer.dumpResources(serial, garbageQueue);
-    mDeviceMemory.dumpResources(serial, garbageQueue);
+    contextVk->addGarbage(&mBuffer);
+    contextVk->addGarbage(&mDeviceMemory);
 }
 
 angle::Result AllocateBufferMemory(vk::Context *context,
@@ -435,11 +454,26 @@
     }
 }
 
-GarbageObjectBase::GarbageObjectBase() : mHandleType(HandleType::Invalid), mHandle(VK_NULL_HANDLE)
+GarbageObject::GarbageObject() : mHandleType(HandleType::Invalid), mHandle(VK_NULL_HANDLE) {}
+
+GarbageObject::GarbageObject(HandleType handleType, GarbageHandle handle)
+    : mHandleType(handleType), mHandle(handle)
 {}
 
-// GarbageObjectBase implementation
-void GarbageObjectBase::destroy(VkDevice device)
+GarbageObject::GarbageObject(GarbageObject &&other) : GarbageObject()
+{
+    *this = std::move(other);
+}
+
+GarbageObject &GarbageObject::operator=(GarbageObject &&rhs)
+{
+    std::swap(mHandle, rhs.mHandle);
+    std::swap(mHandleType, rhs.mHandleType);
+    return *this;
+}
+
+// GarbageObject implementation
+void GarbageObject::destroy(VkDevice device)
 {
     switch (mHandleType)
     {
@@ -508,24 +542,6 @@
     }
 }
 
-// GarbageObject implementation.
-GarbageObject::GarbageObject() : mSerial() {}
-
-GarbageObject::GarbageObject(const GarbageObject &other) = default;
-
-GarbageObject &GarbageObject::operator=(const GarbageObject &other) = default;
-
-bool GarbageObject::destroyIfComplete(VkDevice device, Serial completedSerial)
-{
-    if (completedSerial >= mSerial)
-    {
-        destroy(device);
-        return true;
-    }
-
-    return false;
-}
-
 bool SamplerNameContainsNonZeroArrayElement(const std::string &name)
 {
     constexpr char kZERO_ELEMENT[] = "[0]";
@@ -678,10 +694,10 @@
 {
     switch (filter)
     {
-        case GL_LINEAR:
         case GL_LINEAR_MIPMAP_LINEAR:
         case GL_NEAREST_MIPMAP_LINEAR:
             return VK_SAMPLER_MIPMAP_MODE_LINEAR;
+        case GL_LINEAR:
         case GL_NEAREST:
         case GL_NEAREST_MIPMAP_NEAREST:
         case GL_LINEAR_MIPMAP_NEAREST:
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.h
index e836c62..b3e91f0 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_utils.h
@@ -108,6 +108,7 @@
 {
     Default,
     Mock,
+    SwiftShader,
 };
 
 // Abstracts error handling. Implemented by both ContextVk for GL and DisplayVk for EGL errors.
@@ -186,83 +187,6 @@
     return nullptr;
 }
 
-class GarbageObjectBase
-{
-  public:
-    template <typename ObjectT>
-    GarbageObjectBase(const ObjectT &object)
-        : mHandleType(HandleTypeHelper<ObjectT>::kHandleType),
-          mHandle(reinterpret_cast<VkDevice>(object.getHandle()))
-    {}
-    GarbageObjectBase();
-
-    void destroy(VkDevice device);
-
-  private:
-    HandleType mHandleType;
-    VkDevice mHandle;
-};
-
-class GarbageObject final : public GarbageObjectBase
-{
-  public:
-    template <typename ObjectT>
-    GarbageObject(Serial serial, const ObjectT &object) : GarbageObjectBase(object), mSerial(serial)
-    {}
-
-    GarbageObject();
-    GarbageObject(const GarbageObject &other);
-    GarbageObject &operator=(const GarbageObject &other);
-
-    bool destroyIfComplete(VkDevice device, Serial completedSerial);
-
-  private:
-    // TODO(jmadill): Since many objects will have the same serial, it might be more efficient to
-    // store the serial outside of the garbage object itself. We could index ranges of garbage
-    // objects in the Renderer, using a circular buffer.
-    Serial mSerial;
-};
-
-class MemoryProperties final : angle::NonCopyable
-{
-  public:
-    MemoryProperties();
-
-    void init(VkPhysicalDevice physicalDevice);
-    angle::Result findCompatibleMemoryIndex(Context *context,
-                                            const VkMemoryRequirements &memoryRequirements,
-                                            VkMemoryPropertyFlags requestedMemoryPropertyFlags,
-                                            VkMemoryPropertyFlags *memoryPropertyFlagsOut,
-                                            uint32_t *indexOut) const;
-    void destroy();
-
-  private:
-    VkPhysicalDeviceMemoryProperties mMemoryProperties;
-};
-
-// Similar to StagingImage, for Buffers.
-class StagingBuffer final : angle::NonCopyable
-{
-  public:
-    StagingBuffer();
-    void destroy(VkDevice device);
-
-    angle::Result init(Context *context, VkDeviceSize size, StagingUsage usage);
-
-    Buffer &getBuffer() { return mBuffer; }
-    const Buffer &getBuffer() const { return mBuffer; }
-    DeviceMemory &getDeviceMemory() { return mDeviceMemory; }
-    const DeviceMemory &getDeviceMemory() const { return mDeviceMemory; }
-    size_t getSize() const { return mSize; }
-
-    void dumpResources(Serial serial, std::vector<GarbageObject> *garbageQueue);
-
-  private:
-    Buffer mBuffer;
-    DeviceMemory mDeviceMemory;
-    size_t mSize;
-};
-
 template <typename ObjT>
 class ObjectAndSerial final : angle::NonCopyable
 {
@@ -300,19 +224,101 @@
     Serial mSerial;
 };
 
-angle::Result AllocateBufferMemory(vk::Context *context,
+// Reference to a deleted object. The object is due to be destroyed at some point in the future.
+// |mHandleType| determines the type of the object and which destroy function should be called.
+class GarbageObject
+{
+  public:
+    GarbageObject();
+    GarbageObject(GarbageObject &&other);
+    GarbageObject &operator=(GarbageObject &&rhs);
+
+    bool valid() const { return mHandle != VK_NULL_HANDLE; }
+    void destroy(VkDevice device);
+
+    template <typename DerivedT, typename HandleT>
+    static GarbageObject Get(WrappedObject<DerivedT, HandleT> *object)
+    {
+        return GarbageObject(HandleTypeHelper<DerivedT>::kHandleType,
+                             reinterpret_cast<GarbageHandle>(object->release()));
+    }
+
+  private:
+    VK_DEFINE_HANDLE(GarbageHandle)
+    GarbageObject(HandleType handleType, GarbageHandle handle);
+
+    HandleType mHandleType;
+    GarbageHandle mHandle;
+};
+
+template <typename T>
+GarbageObject GetGarbage(T *obj)
+{
+    return GarbageObject::Get(obj);
+}
+
+// A list of garbage objects. Has no object lifetime information.
+using GarbageList = std::vector<GarbageObject>;
+
+// A list of garbage objects and the associated serial after which the objects can be destroyed.
+using GarbageAndSerial = ObjectAndSerial<GarbageList>;
+
+// Houses multiple lists of garbage objects. Each sub-list has a different lifetime. They should
+// be sorted such that later-living garbage is ordered later in the list.
+using GarbageQueue = std::vector<GarbageAndSerial>;
+
+class MemoryProperties final : angle::NonCopyable
+{
+  public:
+    MemoryProperties();
+
+    void init(VkPhysicalDevice physicalDevice);
+    angle::Result findCompatibleMemoryIndex(Context *context,
+                                            const VkMemoryRequirements &memoryRequirements,
+                                            VkMemoryPropertyFlags requestedMemoryPropertyFlags,
+                                            VkMemoryPropertyFlags *memoryPropertyFlagsOut,
+                                            uint32_t *indexOut) const;
+    void destroy();
+
+  private:
+    VkPhysicalDeviceMemoryProperties mMemoryProperties;
+};
+
+// Similar to StagingImage, for Buffers.
+class StagingBuffer final : angle::NonCopyable
+{
+  public:
+    StagingBuffer();
+    void release(ContextVk *contextVk);
+    void destroy(VkDevice device);
+
+    angle::Result init(ContextVk *context, VkDeviceSize size, StagingUsage usage);
+
+    Buffer &getBuffer() { return mBuffer; }
+    const Buffer &getBuffer() const { return mBuffer; }
+    DeviceMemory &getDeviceMemory() { return mDeviceMemory; }
+    const DeviceMemory &getDeviceMemory() const { return mDeviceMemory; }
+    size_t getSize() const { return mSize; }
+
+  private:
+    Buffer mBuffer;
+    DeviceMemory mDeviceMemory;
+    size_t mSize;
+};
+
+angle::Result AllocateBufferMemory(Context *context,
                                    VkMemoryPropertyFlags requestedMemoryPropertyFlags,
                                    VkMemoryPropertyFlags *memoryPropertyFlagsOut,
                                    const void *extraAllocationInfo,
                                    Buffer *buffer,
                                    DeviceMemory *deviceMemoryOut);
 
-angle::Result AllocateImageMemory(vk::Context *context,
+angle::Result AllocateImageMemory(Context *context,
                                   VkMemoryPropertyFlags memoryPropertyFlags,
                                   const void *extraAllocationInfo,
                                   Image *image,
                                   DeviceMemory *deviceMemoryOut);
-angle::Result AllocateImageMemoryWithRequirements(vk::Context *context,
+angle::Result AllocateImageMemoryWithRequirements(Context *context,
                                                   VkMemoryPropertyFlags memoryPropertyFlags,
                                                   const VkMemoryRequirements &memoryRequirements,
                                                   const void *extraAllocationInfo,
@@ -372,6 +378,23 @@
     T mVar;
 };
 
+template <typename T>
+class RendererScoped final : angle::NonCopyable
+{
+  public:
+    RendererScoped(RendererVk *renderer) : mRenderer(renderer) {}
+    ~RendererScoped() { mVar.release(mRenderer); }
+
+    const T &get() const { return mVar; }
+    T &get() { return mVar; }
+
+    T &&release() { return std::move(mVar); }
+
+  private:
+    RendererVk *mRenderer;
+    T mVar;
+};
+
 // This is a very simple RefCount class that has no autoreleasing. Used in the descriptor set and
 // pipeline layout caches.
 template <typename T>
@@ -571,7 +594,7 @@
 std::string GetMappedSamplerName(const std::string &originalName);
 
 // A vector of image views, such as one per level or one per layer.
-using ImageViewVector = std::vector<vk::ImageView>;
+using ImageViewVector = std::vector<ImageView>;
 // A vector of vector of image views.  Primary index is layer, secondary index is level.
 using LayerLevelImageViewVector = std::vector<ImageViewVector>;
 
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_wrapper.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_wrapper.h
index 829b8f7..c9fe77b 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_wrapper.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/vulkan/vk_wrapper.h
@@ -19,56 +19,6 @@
 {
 namespace vk
 {
-// Base class for all wrapped vulkan objects. Implements several common helper routines.
-template <typename DerivedT, typename HandleT>
-class WrappedObject : angle::NonCopyable
-{
-  public:
-    HandleT getHandle() const { return mHandle; }
-    bool valid() const { return (mHandle != VK_NULL_HANDLE); }
-
-    const HandleT *ptr() const { return &mHandle; }
-
-    template <typename ResourceOutType>
-    void dumpResources(Serial serial, std::vector<ResourceOutType> *outQueue)
-    {
-        if (valid())
-        {
-            outQueue->emplace_back(serial, *static_cast<DerivedT *>(this));
-            mHandle = VK_NULL_HANDLE;
-        }
-    }
-
-    template <typename ResourceOutType>
-    void dumpResources(std::vector<ResourceOutType> *outQueue)
-    {
-        if (valid())
-        {
-            outQueue->emplace_back(*static_cast<DerivedT *>(this));
-            mHandle = VK_NULL_HANDLE;
-        }
-    }
-
-  protected:
-    WrappedObject() : mHandle(VK_NULL_HANDLE) {}
-    ~WrappedObject() { ASSERT(!valid()); }
-
-    WrappedObject(WrappedObject &&other) : mHandle(other.mHandle)
-    {
-        other.mHandle = VK_NULL_HANDLE;
-    }
-
-    // Only works to initialize empty objects, since we don't have the device handle.
-    WrappedObject &operator=(WrappedObject &&other)
-    {
-        ASSERT(!valid());
-        std::swap(mHandle, other.mHandle);
-        return *this;
-    }
-
-    HandleT mHandle;
-};
-
 // Helper macros that apply to all the wrapped object types.
 // Unimplemented handle types:
 // Instance
@@ -137,6 +87,43 @@
 
 #undef ANGLE_HANDLE_TYPE_HELPER_FUNC
 
+// Base class for all wrapped vulkan objects. Implements several common helper routines.
+template <typename DerivedT, typename HandleT>
+class WrappedObject : angle::NonCopyable
+{
+  public:
+    HandleT getHandle() const { return mHandle; }
+    bool valid() const { return (mHandle != VK_NULL_HANDLE); }
+
+    const HandleT *ptr() const { return &mHandle; }
+
+    HandleT release()
+    {
+        HandleT handle = mHandle;
+        mHandle        = VK_NULL_HANDLE;
+        return handle;
+    }
+
+  protected:
+    WrappedObject() : mHandle(VK_NULL_HANDLE) {}
+    ~WrappedObject() { ASSERT(!valid()); }
+
+    WrappedObject(WrappedObject &&other) : mHandle(other.mHandle)
+    {
+        other.mHandle = VK_NULL_HANDLE;
+    }
+
+    // Only works to initialize empty objects, since we don't have the device handle.
+    WrappedObject &operator=(WrappedObject &&other)
+    {
+        ASSERT(!valid());
+        std::swap(mHandle, other.mHandle);
+        return *this;
+    }
+
+    HandleT mHandle;
+};
+
 class CommandPool final : public WrappedObject<CommandPool, VkCommandPool>
 {
   public:
@@ -189,7 +176,7 @@
 
     static bool SupportsQueries(const VkPhysicalDeviceFeatures &features)
     {
-        return features.inheritedQueries;
+        return (features.inheritedQueries == VK_TRUE);
     }
 
     // Vulkan command buffers are executed as secondary command buffers within a primary command
@@ -290,13 +277,21 @@
                                                     uint32_t firstIndex,
                                                     int32_t vertexOffset,
                                                     uint32_t firstInstance);
+    void drawIndexedIndirect(const Buffer &buffer,
+                             VkDeviceSize offset,
+                             uint32_t drawCount,
+                             uint32_t stride);
+    void drawIndirect(const Buffer &buffer,
+                      VkDeviceSize offset,
+                      uint32_t drawCount,
+                      uint32_t stride);
 
     VkResult end();
     void endQuery(VkQueryPool queryPool, uint32_t query);
     void endRenderPass();
     void executeCommands(uint32_t commandBufferCount, const CommandBuffer *commandBuffers);
 
-    void getMemoryUsageStats(size_t *usedMemoryOut, size_t *allocatedMemoryOut);
+    void getMemoryUsageStats(size_t *usedMemoryOut, size_t *allocatedMemoryOut) const;
 
     void executionBarrier(VkPipelineStageFlags stageMask);
 
@@ -817,7 +812,7 @@
 }
 
 ANGLE_INLINE void CommandBuffer::getMemoryUsageStats(size_t *usedMemoryOut,
-                                                     size_t *allocatedMemoryOut)
+                                                     size_t *allocatedMemoryOut) const
 {
     // No data available.
     *usedMemoryOut      = 0;
@@ -979,6 +974,24 @@
     vkCmdDrawIndexed(mHandle, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance);
 }
 
+ANGLE_INLINE void CommandBuffer::drawIndexedIndirect(const Buffer &buffer,
+                                                     VkDeviceSize offset,
+                                                     uint32_t drawCount,
+                                                     uint32_t stride)
+{
+    ASSERT(valid());
+    vkCmdDrawIndexedIndirect(mHandle, buffer.getHandle(), offset, drawCount, stride);
+}
+
+ANGLE_INLINE void CommandBuffer::drawIndirect(const Buffer &buffer,
+                                              VkDeviceSize offset,
+                                              uint32_t drawCount,
+                                              uint32_t stride)
+{
+    ASSERT(valid());
+    vkCmdDrawIndirect(mHandle, buffer.getHandle(), offset, drawCount, stride);
+}
+
 ANGLE_INLINE void CommandBuffer::dispatch(uint32_t groupCountX,
                                           uint32_t groupCountY,
                                           uint32_t groupCountZ)
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.cpp
index e6d1e45..2d98369 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.cpp
@@ -387,6 +387,7 @@
     {
         EGLAttrib platformType       = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE;
         bool enableAutoTrimSpecified = false;
+        bool enableD3D11on12         = false;
         bool presentPathSpecified    = false;
 
         Optional<EGLAttrib> majorVersion;
@@ -433,6 +434,25 @@
                     enableAutoTrimSpecified = true;
                     break;
 
+                case EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE:
+                    if (!clientExtensions.platformANGLED3D ||
+                        !clientExtensions.platformANGLED3D11ON12)
+                    {
+                        return EglBadAttribute()
+                               << "EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE extension not active.";
+                    }
+
+                    switch (value)
+                    {
+                        case EGL_TRUE:
+                        case EGL_FALSE:
+                            break;
+                        default:
+                            return EglBadAttribute() << "Invalid D3D11on12 attribute";
+                    }
+                    enableD3D11on12 = true;
+                    break;
+
                 case EGL_EXPERIMENTAL_PRESENT_PATH_ANGLE:
                     if (!clientExtensions.experimentalPresentPath)
                     {
@@ -468,6 +488,14 @@
                             }
                             break;
 
+                        case EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE:
+                            if (!clientExtensions.platformANGLEDeviceTypeSwiftShader)
+                            {
+                                return EglBadAttribute() << "EGL_ANGLE_platform_angle_device_type_"
+                                                            "swiftshader is not supported";
+                            }
+                            break;
+
                         default:
                             return EglBadAttribute() << "Invalid value for "
                                                         "EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE "
@@ -542,6 +570,24 @@
                                         "EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE.";
         }
 
+        if (enableD3D11on12)
+        {
+            if (platformType != EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE)
+            {
+                return EglBadAttribute() << "EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE "
+                                            "requires a platform type of "
+                                            "EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE.";
+            }
+
+            if (deviceType.valid() && deviceType != EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE &&
+                deviceType != EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE)
+            {
+                return EglBadAttribute() << "EGL_PLATFORM_ANGLE_D3D11ON12_ANGLE requires a device "
+                                            "type of EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE "
+                                            "or EGL_PLATFORM_ANGLE_DEVICE_TYPE_D3D_WARP_ANGLE";
+            }
+        }
+
         if (presentPathSpecified && platformType != EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE)
         {
             return EglBadAttribute() << "EGL_EXPERIMENTAL_PRESENT_PATH_ANGLE requires a "
@@ -563,6 +609,16 @@
                                   "EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE.";
                     }
                     break;
+
+                case EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE:
+                    if (platformType != EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE)
+                    {
+                        return EglBadAttribute()
+                               << "This device type requires a "
+                                  "platform type of EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE.";
+                    }
+                    break;
+
                 default:
                     break;
             }
@@ -968,7 +1024,19 @@
                             gl::Context *shareContext,
                             const AttributeMap &attributes)
 {
-    ANGLE_TRY(ValidateConfig(display, configuration));
+    if (configuration)
+    {
+        ANGLE_TRY(ValidateConfig(display, configuration));
+    }
+    else
+    {
+        ANGLE_TRY(ValidateDisplay(display));
+        const DisplayExtensions &displayExtensions = display->getExtensions();
+        if (!displayExtensions.noConfigContext)
+        {
+            return EglBadConfig();
+        }
+    }
 
     // Get the requested client version (default is 1) and check it is 2 or 3.
     EGLAttrib clientMajorVersion = 1;
@@ -1191,7 +1259,12 @@
             {
                 return EglBadAttribute();
             }
-            if (!(configuration->renderableType & EGL_OPENGL_ES_BIT))
+            if (configuration == EGL_NO_CONFIG_KHR)
+            {
+                return EglBadMatch();
+            }
+            if ((configuration != EGL_NO_CONFIG_KHR) &&
+                !(configuration->renderableType & EGL_OPENGL_ES_BIT))
             {
                 return EglBadMatch();
             }
@@ -1202,7 +1275,8 @@
             {
                 return EglBadAttribute();
             }
-            if (!(configuration->renderableType & EGL_OPENGL_ES2_BIT))
+            if ((configuration != EGL_NO_CONFIG_KHR) &&
+                !(configuration->renderableType & EGL_OPENGL_ES2_BIT))
             {
                 return EglBadMatch();
             }
@@ -1212,7 +1286,8 @@
             {
                 return EglBadAttribute();
             }
-            if (!(configuration->renderableType & EGL_OPENGL_ES3_BIT))
+            if ((configuration != EGL_NO_CONFIG_KHR) &&
+                !(configuration->renderableType & EGL_OPENGL_ES3_BIT))
             {
                 return EglBadMatch();
             }
@@ -1774,32 +1849,65 @@
     if (read != EGL_NO_SURFACE)
     {
         ANGLE_TRY(ValidateSurface(display, read));
-        ANGLE_TRY(ValidateCompatibleConfigs(display, read->getConfig(), read, context->getConfig(),
-                                            read->getType()));
+        ANGLE_TRY(ValidateCompatibleSurface(display, context, read));
     }
 
     if (draw != read)
     {
         if (draw)
         {
-            ANGLE_TRY(ValidateCompatibleConfigs(display, draw->getConfig(), draw,
-                                                context->getConfig(), draw->getType()));
+            ANGLE_TRY(ValidateCompatibleSurface(display, context, draw));
         }
         if (read)
         {
-            ANGLE_TRY(ValidateCompatibleConfigs(display, read->getConfig(), read,
-                                                context->getConfig(), read->getType()));
+            ANGLE_TRY(ValidateCompatibleSurface(display, context, read));
         }
     }
     return NoError();
 }
 
-Error ValidateCompatibleConfigs(const Display *display,
-                                const Config *surfaceConfig,
-                                const Surface *surface,
-                                const Config *contextConfig,
-                                EGLint surfaceType)
+Error ValidateCompatibleSurface(const Display *display,
+                                gl::Context *context,
+                                const Surface *surface)
 {
+    const Config *contextConfig = context->getConfig();
+    const Config *surfaceConfig = surface->getConfig();
+
+    // Surface compatible with client API - only OPENGL_ES supported
+    switch (context->getClientMajorVersion())
+    {
+        case 1:
+            if (!(surfaceConfig->renderableType & EGL_OPENGL_ES_BIT))
+            {
+                return EglBadMatch() << "Surface not compatible with OpenGL ES 1.x.";
+            }
+            break;
+        case 2:
+            if (!(surfaceConfig->renderableType & EGL_OPENGL_ES2_BIT))
+            {
+                return EglBadMatch() << "Surface not compatible with OpenGL ES 2.x.";
+            }
+            break;
+        case 3:
+            if (!(surfaceConfig->renderableType & (EGL_OPENGL_ES2_BIT | EGL_OPENGL_ES3_BIT)))
+            {
+                return EglBadMatch() << "Surface not compatible with OpenGL ES 3.x.";
+            }
+            break;
+        default:
+            return EglBadMatch() << "Surface not compatible with Context API.";
+    }
+
+    // EGL KHR no config context
+    if (context->getConfig() == EGL_NO_CONFIG_KHR)
+    {
+        const DisplayExtensions &displayExtensions = display->getExtensions();
+        if (displayExtensions.noConfigContext)
+        {
+            return NoError();
+        }
+        return EglBadMatch() << "Context with no config is not supported.";
+    }
 
     if (!surface->flexibleSurfaceCompatibilityRequested())
     {
@@ -1836,11 +1944,10 @@
         }
     }
 
-    bool surfaceTypeCompat =
-        (surfaceConfig->surfaceType & contextConfig->surfaceType & surfaceType) != 0;
+    bool surfaceTypeCompat = (surfaceConfig->surfaceType & contextConfig->surfaceType) != 0;
     if (!surfaceTypeCompat)
     {
-        return EglBadMatch() << "Surface types are not compatible.";
+        return EglBadMatch() << "Surface type is not compatible.";
     }
 
     return NoError();
@@ -2539,7 +2646,7 @@
 
     // Lookup the texture and ensure it is correct
     gl::Texture *texture = context->getState().getTargetTexture(gl::TextureType::External);
-    if (texture == nullptr || texture->getId() == 0)
+    if (texture == nullptr || texture->id().value == 0)
     {
         return EglBadAccess() << "No external texture bound";
     }
@@ -2744,7 +2851,7 @@
 
         // Lookup the texture and ensure it is correct
         gl::Texture *texture = context->getState().getTargetTexture(gl::TextureType::External);
-        if (texture == nullptr || texture->getId() == 0)
+        if (texture == nullptr || texture->id().value == 0)
         {
             return EglBadAccess() << "No external texture bound";
         }
@@ -2779,7 +2886,7 @@
             {
                 gl::Texture *texture = context->getState().getSamplerTexture(
                     static_cast<unsigned int>(plane[i]), gl::TextureType::External);
-                if (texture == nullptr || texture->getId() == 0)
+                if (texture == nullptr || texture->id().value == 0)
                 {
                     return EglBadAccess()
                            << "No external texture bound at one or more specified texture units";
@@ -3872,6 +3979,7 @@
         case EGL_FEATURE_DESCRIPTION_ANGLE:
         case EGL_FEATURE_BUG_ANGLE:
         case EGL_FEATURE_STATUS_ANGLE:
+        case EGL_FEATURE_CONDITION_ANGLE:
             break;
         default:
             return EglBadParameter() << "name is not valid.";
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.h b/Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.h
index 8b37738..e2c39db 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/validationEGL.h
@@ -233,11 +233,9 @@
 Error ValidateGetConfigs(const Display *display, EGLint configSize, EGLint *numConfig);
 
 // Other validation
-Error ValidateCompatibleConfigs(const Display *display,
-                                const Config *config1,
-                                const Surface *surface,
-                                const Config *config2,
-                                EGLint surfaceType);
+Error ValidateCompatibleSurface(const Display *display,
+                                gl::Context *context,
+                                const Surface *surface);
 
 Error ValidateGetPlatformDisplay(EGLenum platform,
                                  void *native_display,
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp
index 3e62c6c..66c4dc9 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/validationES.cpp
@@ -1205,8 +1205,8 @@
         return false;
     }
 
-    GLuint handle = context->getState().getRenderbufferId();
-    if (handle == 0)
+    RenderbufferID id = context->getState().getRenderbufferId();
+    if (id.value == 0)
     {
         context->validationError(GL_INVALID_OPERATION, kInvalidRenderbufferTarget);
         return false;
@@ -6361,7 +6361,7 @@
     }
 
     Texture *texture = context->getTextureByType(target);
-    if (!texture || texture->id() == 0)
+    if (!texture || texture->id().value == 0)
     {
         context->validationError(GL_INVALID_OPERATION, kZeroBoundToTarget);
         return false;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/validationES.h b/Source/ThirdParty/ANGLE/src/libANGLE/validationES.h
index c06468e..3fd6d89 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/validationES.h
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/validationES.h
@@ -547,6 +547,14 @@
                 return false;
             }
             break;
+        case VertexAttribTypeCase::ValidSize3or4:
+            if (size != 3 && size != 4)
+            {
+                context->validationError(GL_INVALID_OPERATION,
+                                         err::kInvalidVertexAttribSize1010102);
+                return false;
+            }
+            break;
     }
 
     return true;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/validationES2.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/validationES2.cpp
index 3b8eebd..afab5ee 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/validationES2.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/validationES2.cpp
@@ -2039,7 +2039,7 @@
     }
 
     gl::Texture *texture = context->getTextureByType(target);
-    if (!texture || texture->id() == 0)
+    if (!texture || texture->id().value == 0)
     {
         context->validationError(GL_INVALID_OPERATION, kMissingTexture);
         return false;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp
index a8d92e0..f399686 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/validationES3.cpp
@@ -1178,7 +1178,7 @@
     }
 
     gl::Texture *texture = context->getTextureByType(target);
-    if (!texture || texture->id() == 0)
+    if (!texture || texture->id().value == 0)
     {
         context->validationError(GL_INVALID_OPERATION, kMissingTexture);
         return false;
diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/validationES31.cpp b/Source/ThirdParty/ANGLE/src/libANGLE/validationES31.cpp
index 91dd1d57..587b204 100644
--- a/Source/ThirdParty/ANGLE/src/libANGLE/validationES31.cpp
+++ b/Source/ThirdParty/ANGLE/src/libANGLE/validationES31.cpp
@@ -267,7 +267,8 @@
     switch (programInterface)
     {
         case GL_PROGRAM_INPUT:
-            return (index < static_cast<GLuint>(programObject->getActiveAttributeCount()));
+            return (index <
+                    static_cast<GLuint>(programObject->getState().getProgramInputs().size()));
 
         case GL_PROGRAM_OUTPUT:
             return (index < static_cast<GLuint>(programObject->getOutputResourceCount()));
diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2.gni b/Source/ThirdParty/ANGLE/src/libGLESv2.gni
index ba759a2..5cee07e 100644
--- a/Source/ThirdParty/ANGLE/src/libGLESv2.gni
+++ b/Source/ThirdParty/ANGLE/src/libGLESv2.gni
@@ -88,20 +88,27 @@
 }
 
 if (is_win) {
-  angle_system_utils_sources += [ "src/common/system_utils_win.cpp" ]
+  if (current_os == "winuwp") {
+    angle_system_utils_sources += [ "src/common/system_utils_winuwp.cpp" ]
+  } else {
+    angle_system_utils_sources += [ "src/common/system_utils_win.cpp" ]
+  }
 }
 
-libangle_image_util_sources = [
-  "src/image_util/copyimage.cpp",
+libangle_image_util_headers = [
   "src/image_util/copyimage.h",
   "src/image_util/copyimage.inc",
   "src/image_util/generatemip.h",
   "src/image_util/generatemip.inc",
-  "src/image_util/imageformats.cpp",
   "src/image_util/imageformats.h",
-  "src/image_util/loadimage.cpp",
   "src/image_util/loadimage.h",
   "src/image_util/loadimage.inc",
+]
+
+libangle_image_util_sources = [
+  "src/image_util/copyimage.cpp",
+  "src/image_util/imageformats.cpp",
+  "src/image_util/loadimage.cpp",
   "src/image_util/loadimage_etc.cpp",
 ]
 
@@ -146,8 +153,6 @@
   "include/GLES3/gl31.h",
   "include/GLES3/gl31ext_explicit_context_autogen.inc",
   "include/GLES3/gl32.h",
-  "include/GLSLANG/ShaderLang.h",
-  "include/GLSLANG/ShaderVars.h",
   "include/KHR/khrplatform.h",
   "include/WGL/wgl.h",
   "include/platform/Feature.h",
@@ -158,24 +163,17 @@
   "include/platform/Platform.h",
 ]
 
-libangle_sources = [
-  "src/libANGLE/AttributeMap.cpp",
+libangle_headers = [
   "src/libANGLE/AttributeMap.h",
   "src/libANGLE/BinaryStream.h",
-  "src/libANGLE/BlobCache.cpp",
   "src/libANGLE/BlobCache.h",
-  "src/libANGLE/Buffer.cpp",
   "src/libANGLE/Buffer.h",
-  "src/libANGLE/Caps.cpp",
   "src/libANGLE/Caps.h",
-  "src/libANGLE/Compiler.cpp",
   "src/libANGLE/Compiler.h",
-  "src/libANGLE/Config.cpp",
   "src/libANGLE/Config.h",
   "src/libANGLE/Constants.h",
-  "src/libANGLE/Context.cpp",
-  "src/libANGLE/Context_gl.cpp",
-  "src/libANGLE/Context_gles_1_0.cpp",
+  "src/libANGLE/Context.h",
+  "src/libANGLE/Context.inl.h",
   "src/libANGLE/Context_gl_1_0_autogen.h",
   "src/libANGLE/Context_gl_1_1_autogen.h",
   "src/libANGLE/Context_gl_1_2_autogen.h",
@@ -200,48 +198,27 @@
   "src/libANGLE/Context_gles_3_0_autogen.h",
   "src/libANGLE/Context_gles_3_1_autogen.h",
   "src/libANGLE/Context_gles_ext_autogen.h",
-  "src/libANGLE/Context.h",
-  "src/libANGLE/Context.inl.h",
-  "src/libANGLE/Debug.cpp",
   "src/libANGLE/Debug.h",
-  "src/libANGLE/Device.cpp",
   "src/libANGLE/Device.h",
-  "src/libANGLE/Display.cpp",
   "src/libANGLE/Display.h",
-  "src/libANGLE/EGLSync.cpp",
   "src/libANGLE/EGLSync.h",
-  "src/libANGLE/Error.cpp",
   "src/libANGLE/Error.h",
   "src/libANGLE/Error.inc",
   "src/libANGLE/ErrorStrings.h",
-  "src/libANGLE/Fence.cpp",
   "src/libANGLE/Fence.h",
-  "src/libANGLE/Framebuffer.cpp",
   "src/libANGLE/Framebuffer.h",
-  "src/libANGLE/FramebufferAttachment.cpp",
   "src/libANGLE/FramebufferAttachment.h",
-  "src/libANGLE/GLES1Renderer.cpp",
   "src/libANGLE/GLES1Renderer.h",
   "src/libANGLE/GLES1Shaders.inc",
-  "src/libANGLE/GLES1State.cpp",
   "src/libANGLE/GLES1State.h",
-  "src/libANGLE/HandleAllocator.cpp",
   "src/libANGLE/HandleAllocator.h",
   "src/libANGLE/HandleRangeAllocator.h",
-  "src/libANGLE/HandleRangeAllocator.cpp",
   "src/libANGLE/Image.h",
-  "src/libANGLE/Image.cpp",
   "src/libANGLE/ImageIndex.h",
-  "src/libANGLE/ImageIndex.cpp",
-  "src/libANGLE/IndexRangeCache.cpp",
   "src/libANGLE/IndexRangeCache.h",
-  "src/libANGLE/LoggingAnnotator.cpp",
   "src/libANGLE/LoggingAnnotator.h",
-  "src/libANGLE/MemoryObject.cpp",
   "src/libANGLE/MemoryObject.h",
-  "src/libANGLE/MemoryProgramCache.cpp",
   "src/libANGLE/MemoryProgramCache.h",
-  "src/libANGLE/Observer.cpp",
   "src/libANGLE/Observer.h",
   "src/libANGLE/Overlay.cpp",
   "src/libANGLE/Overlay.h",
@@ -251,87 +228,52 @@
   "src/libANGLE/Overlay_font_autogen.cpp",
   "src/libANGLE/Overlay_font_autogen.h",
   "src/libANGLE/Path.h",
-  "src/libANGLE/Path.cpp",
-  "src/libANGLE/Platform.cpp",
-  "src/libANGLE/Program.cpp",
   "src/libANGLE/Program.h",
-  "src/libANGLE/ProgramLinkedResources.cpp",
   "src/libANGLE/ProgramLinkedResources.h",
-  "src/libANGLE/ProgramPipeline.cpp",
   "src/libANGLE/ProgramPipeline.h",
-  "src/libANGLE/Query.cpp",
   "src/libANGLE/Query.h",
   "src/libANGLE/RefCountObject.h",
-  "src/libANGLE/Renderbuffer.cpp",
   "src/libANGLE/Renderbuffer.h",
-  "src/libANGLE/ResourceManager.cpp",
   "src/libANGLE/ResourceManager.h",
   "src/libANGLE/ResourceMap.h",
-  "src/libANGLE/Sampler.cpp",
   "src/libANGLE/Sampler.h",
-  "src/libANGLE/Semaphore.cpp",
   "src/libANGLE/Semaphore.h",
-  "src/libANGLE/Shader.cpp",
   "src/libANGLE/Shader.h",
   "src/libANGLE/SizedMRUCache.h",
-  "src/libANGLE/State.cpp",
   "src/libANGLE/State.h",
-  "src/libANGLE/Stream.cpp",
   "src/libANGLE/Stream.h",
-  "src/libANGLE/Surface.cpp",
   "src/libANGLE/Surface.h",
-  "src/libANGLE/Texture.cpp",
   "src/libANGLE/Texture.h",
-  "src/libANGLE/Thread.cpp",
   "src/libANGLE/Thread.h",
-  "src/libANGLE/TransformFeedback.cpp",
   "src/libANGLE/TransformFeedback.h",
-  "src/libANGLE/Uniform.cpp",
   "src/libANGLE/Uniform.h",
-  "src/libANGLE/VaryingPacking.cpp",
   "src/libANGLE/VaryingPacking.h",
   "src/libANGLE/Version.h",
   "src/libANGLE/Version.inc",
-  "src/libANGLE/VertexArray.cpp",
   "src/libANGLE/VertexArray.h",
-  "src/libANGLE/VertexAttribute.cpp",
   "src/libANGLE/VertexAttribute.h",
   "src/libANGLE/VertexAttribute.inc",
-  "src/libANGLE/WorkerThread.cpp",
   "src/libANGLE/WorkerThread.h",
-  "src/libANGLE/angletypes.cpp",
   "src/libANGLE/angletypes.h",
   "src/libANGLE/angletypes.inc",
-  "src/libANGLE/entry_points_enum_autogen.cpp",
   "src/libANGLE/entry_points_enum_autogen.h",
   "src/libANGLE/entry_points_utils.h",
-  "src/libANGLE/es3_copy_conversion_table_autogen.cpp",
   "src/libANGLE/features.h",
-  "src/libANGLE/format_map_autogen.cpp",
-  "src/libANGLE/format_map_desktop.cpp",
-  "src/libANGLE/formatutils.cpp",
   "src/libANGLE/formatutils.h",
   "src/libANGLE/histogram_macros.h",
-  "src/libANGLE/queryconversions.cpp",
   "src/libANGLE/queryconversions.h",
-  "src/libANGLE/queryutils.cpp",
   "src/libANGLE/queryutils.h",
   "src/libANGLE/trace.h",
   "src/libANGLE/renderer/BufferImpl.h",
   "src/libANGLE/renderer/CompilerImpl.h",
-  "src/libANGLE/renderer/ContextImpl.cpp",
   "src/libANGLE/renderer/ContextImpl.h",
-  "src/libANGLE/renderer/driver_utils.cpp",
   "src/libANGLE/renderer/driver_utils.h",
-  "src/libANGLE/renderer/DeviceImpl.cpp",
   "src/libANGLE/renderer/DeviceImpl.h",
-  "src/libANGLE/renderer/DisplayImpl.cpp",
   "src/libANGLE/renderer/DisplayImpl.h",
   "src/libANGLE/renderer/EGLImplFactory.h",
   "src/libANGLE/renderer/EGLSyncImpl.h",
   "src/libANGLE/renderer/FenceNVImpl.h",
   "src/libANGLE/renderer/FormatID_autogen.h",
-  "src/libANGLE/renderer/Format_table_autogen.cpp",
   "src/libANGLE/renderer/Format.h",
   "src/libANGLE/renderer/FramebufferAttachmentObjectImpl.h",
   "src/libANGLE/renderer/FramebufferImpl.h",
@@ -342,85 +284,151 @@
   "src/libANGLE/renderer/PathImpl.h",
   "src/libANGLE/renderer/ProgramImpl.h",
   "src/libANGLE/renderer/ProgramPipelineImpl.h",
-  "src/libANGLE/renderer/QueryImpl.cpp",
   "src/libANGLE/renderer/QueryImpl.h",
   "src/libANGLE/renderer/RenderbufferImpl.h",
   "src/libANGLE/renderer/RenderTargetCache.h",
   "src/libANGLE/renderer/SamplerImpl.h",
   "src/libANGLE/renderer/SemaphoreImpl.h",
-  "src/libANGLE/renderer/ShaderImpl.cpp",
   "src/libANGLE/renderer/ShaderImpl.h",
   "src/libANGLE/renderer/StreamProducerImpl.h",
-  "src/libANGLE/renderer/SurfaceImpl.cpp",
   "src/libANGLE/renderer/SurfaceImpl.h",
   "src/libANGLE/renderer/SyncImpl.h",
-  "src/libANGLE/renderer/TextureImpl.cpp",
   "src/libANGLE/renderer/TextureImpl.h",
   "src/libANGLE/renderer/TransformFeedbackImpl.h",
   "src/libANGLE/renderer/VertexArrayImpl.h",
   "src/libANGLE/renderer/copyvertex.h",
   "src/libANGLE/renderer/copyvertex.inc.h",
   "src/libANGLE/renderer/load_functions_table.h",
+  "src/libANGLE/renderer/renderer_utils.h",
+  "src/libANGLE/validationEGL.h",
+  "src/libANGLE/validationES.h",
+  "src/libANGLE/validationES1.h",
+  "src/libANGLE/validationES1_autogen.h",
+  "src/libANGLE/validationES2.h",
+  "src/libANGLE/validationES2_autogen.h",
+  "src/libANGLE/validationES3.h",
+  "src/libANGLE/validationES31.h",
+  "src/libANGLE/validationES31_autogen.h",
+  "src/libANGLE/validationES3_autogen.h",
+  "src/libANGLE/validationESEXT.h",
+  "src/libANGLE/validationESEXT_autogen.h",
+  "src/libANGLE/validationGL11_autogen.h",
+  "src/libANGLE/validationGL12_autogen.h",
+  "src/libANGLE/validationGL13_autogen.h",
+  "src/libANGLE/validationGL14_autogen.h",
+  "src/libANGLE/validationGL15_autogen.h",
+  "src/libANGLE/validationGL1_autogen.h",
+  "src/libANGLE/validationGL21_autogen.h",
+  "src/libANGLE/validationGL2_autogen.h",
+  "src/libANGLE/validationGL31_autogen.h",
+  "src/libANGLE/validationGL32_autogen.h",
+  "src/libANGLE/validationGL33_autogen.h",
+  "src/libANGLE/validationGL3_autogen.h",
+  "src/libANGLE/validationGL41_autogen.h",
+  "src/libANGLE/validationGL42_autogen.h",
+  "src/libANGLE/validationGL43_autogen.h",
+  "src/libANGLE/validationGL44_autogen.h",
+  "src/libANGLE/validationGL45_autogen.h",
+  "src/libANGLE/validationGL46_autogen.h",
+  "src/libANGLE/validationGL4_autogen.h",
+  "src/third_party/trace_event/trace_event.h",
+]
+
+libangle_sources = [
+  "src/libANGLE/AttributeMap.cpp",
+  "src/libANGLE/BlobCache.cpp",
+  "src/libANGLE/Buffer.cpp",
+  "src/libANGLE/Caps.cpp",
+  "src/libANGLE/Compiler.cpp",
+  "src/libANGLE/Config.cpp",
+  "src/libANGLE/Context.cpp",
+  "src/libANGLE/Context_gl.cpp",
+  "src/libANGLE/Context_gles_1_0.cpp",
+  "src/libANGLE/Debug.cpp",
+  "src/libANGLE/Device.cpp",
+  "src/libANGLE/Display.cpp",
+  "src/libANGLE/EGLSync.cpp",
+  "src/libANGLE/Error.cpp",
+  "src/libANGLE/Fence.cpp",
+  "src/libANGLE/Framebuffer.cpp",
+  "src/libANGLE/FramebufferAttachment.cpp",
+  "src/libANGLE/GLES1Renderer.cpp",
+  "src/libANGLE/GLES1State.cpp",
+  "src/libANGLE/HandleAllocator.cpp",
+  "src/libANGLE/HandleRangeAllocator.cpp",
+  "src/libANGLE/Image.cpp",
+  "src/libANGLE/ImageIndex.cpp",
+  "src/libANGLE/IndexRangeCache.cpp",
+  "src/libANGLE/LoggingAnnotator.cpp",
+  "src/libANGLE/MemoryObject.cpp",
+  "src/libANGLE/MemoryProgramCache.cpp",
+  "src/libANGLE/Observer.cpp",
+  "src/libANGLE/Path.cpp",
+  "src/libANGLE/Platform.cpp",
+  "src/libANGLE/Program.cpp",
+  "src/libANGLE/ProgramLinkedResources.cpp",
+  "src/libANGLE/ProgramPipeline.cpp",
+  "src/libANGLE/Query.cpp",
+  "src/libANGLE/Renderbuffer.cpp",
+  "src/libANGLE/ResourceManager.cpp",
+  "src/libANGLE/Sampler.cpp",
+  "src/libANGLE/Semaphore.cpp",
+  "src/libANGLE/Shader.cpp",
+  "src/libANGLE/State.cpp",
+  "src/libANGLE/Stream.cpp",
+  "src/libANGLE/Surface.cpp",
+  "src/libANGLE/Texture.cpp",
+  "src/libANGLE/Thread.cpp",
+  "src/libANGLE/TransformFeedback.cpp",
+  "src/libANGLE/Uniform.cpp",
+  "src/libANGLE/VaryingPacking.cpp",
+  "src/libANGLE/VertexArray.cpp",
+  "src/libANGLE/VertexAttribute.cpp",
+  "src/libANGLE/WorkerThread.cpp",
+  "src/libANGLE/angletypes.cpp",
+  "src/libANGLE/entry_points_enum_autogen.cpp",
+  "src/libANGLE/es3_copy_conversion_table_autogen.cpp",
+  "src/libANGLE/format_map_autogen.cpp",
+  "src/libANGLE/format_map_desktop.cpp",
+  "src/libANGLE/formatutils.cpp",
+  "src/libANGLE/queryconversions.cpp",
+  "src/libANGLE/queryutils.cpp",
+  "src/libANGLE/renderer/ContextImpl.cpp",
+  "src/libANGLE/renderer/driver_utils.cpp",
+  "src/libANGLE/renderer/DeviceImpl.cpp",
+  "src/libANGLE/renderer/DisplayImpl.cpp",
+  "src/libANGLE/renderer/Format_table_autogen.cpp",
+  "src/libANGLE/renderer/QueryImpl.cpp",
+  "src/libANGLE/renderer/ShaderImpl.cpp",
+  "src/libANGLE/renderer/SurfaceImpl.cpp",
+  "src/libANGLE/renderer/TextureImpl.cpp",
   "src/libANGLE/renderer/load_functions_table_autogen.cpp",
   "src/libANGLE/renderer/renderer_utils.cpp",
-  "src/libANGLE/renderer/renderer_utils.h",
   "src/libANGLE/validationEGL.cpp",
-  "src/libANGLE/validationEGL.h",
   "src/libANGLE/validationES.cpp",
-  "src/libANGLE/validationES.h",
   "src/libANGLE/validationES1.cpp",
-  "src/libANGLE/validationES1_autogen.h",
-  "src/libANGLE/validationES1.h",
   "src/libANGLE/validationES2.cpp",
-  "src/libANGLE/validationES2_autogen.h",
-  "src/libANGLE/validationES2.h",
   "src/libANGLE/validationES3.cpp",
   "src/libANGLE/validationES31.cpp",
-  "src/libANGLE/validationES31_autogen.h",
-  "src/libANGLE/validationES31.h",
-  "src/libANGLE/validationES3_autogen.h",
-  "src/libANGLE/validationES3.h",
-  "src/libANGLE/validationESEXT_autogen.h",
-  "src/libANGLE/validationESEXT.h",
   "src/libANGLE/validationGL1.cpp",
-  "src/libANGLE/validationGL1_autogen.h",
   "src/libANGLE/validationGL2.cpp",
-  "src/libANGLE/validationGL2_autogen.h",
   "src/libANGLE/validationGL3.cpp",
-  "src/libANGLE/validationGL3_autogen.h",
   "src/libANGLE/validationGL4.cpp",
-  "src/libANGLE/validationGL4_autogen.h",
   "src/libANGLE/validationGL11.cpp",
-  "src/libANGLE/validationGL11_autogen.h",
   "src/libANGLE/validationGL12.cpp",
-  "src/libANGLE/validationGL12_autogen.h",
-  "src/libANGLE/validationGL13.cpp",
-  "src/libANGLE/validationGL13_autogen.h",
   "src/libANGLE/validationGL14.cpp",
-  "src/libANGLE/validationGL14_autogen.h",
   "src/libANGLE/validationGL15.cpp",
-  "src/libANGLE/validationGL15_autogen.h",
+  "src/libANGLE/validationGL13.cpp",
   "src/libANGLE/validationGL21.cpp",
-  "src/libANGLE/validationGL21_autogen.h",
   "src/libANGLE/validationGL31.cpp",
-  "src/libANGLE/validationGL31_autogen.h",
   "src/libANGLE/validationGL32.cpp",
-  "src/libANGLE/validationGL32_autogen.h",
   "src/libANGLE/validationGL33.cpp",
-  "src/libANGLE/validationGL33_autogen.h",
   "src/libANGLE/validationGL41.cpp",
-  "src/libANGLE/validationGL41_autogen.h",
   "src/libANGLE/validationGL42.cpp",
-  "src/libANGLE/validationGL42_autogen.h",
   "src/libANGLE/validationGL43.cpp",
-  "src/libANGLE/validationGL43_autogen.h",
   "src/libANGLE/validationGL44.cpp",
-  "src/libANGLE/validationGL44_autogen.h",
   "src/libANGLE/validationGL45.cpp",
-  "src/libANGLE/validationGL45_autogen.h",
   "src/libANGLE/validationGL46.cpp",
-  "src/libANGLE/validationGL46_autogen.h",
-  "src/third_party/trace_event/trace_event.h",
 ]
 
 libangle_d3d_shared_sources = [
@@ -669,7 +677,7 @@
   "src/third_party/systeminfo/SystemInfo.h",
 ]
 
-libangle_d3d11_winrt_sources = [
+libangle_d3d11_winuwp_sources = [
   "src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.cpp",
   "src/libANGLE/renderer/d3d/d3d11/winrt/CoreWindowNativeWindow.h",
   "src/libANGLE/renderer/d3d/d3d11/winrt/InspectableNativeWindow.cpp",
@@ -834,6 +842,8 @@
 libangle_gl_cgl_sources = [
   "src/libANGLE/renderer/gl/cgl/ContextCGL.cpp",
   "src/libANGLE/renderer/gl/cgl/ContextCGL.h",
+  "src/libANGLE/renderer/gl/cgl/DeviceCGL.cpp",
+  "src/libANGLE/renderer/gl/cgl/DeviceCGL.h",
   "src/libANGLE/renderer/gl/cgl/DisplayCGL.mm",
   "src/libANGLE/renderer/gl/cgl/DisplayCGL.h",
   "src/libANGLE/renderer/gl/cgl/IOSurfaceSurfaceCGL.mm",
@@ -848,82 +858,6 @@
 
 libangle_mac_sources = [ "src/libANGLE/renderer/driver_utils_mac.mm" ]
 
-libangle_vulkan_sources = [
-  "src/libANGLE/renderer/vulkan/BufferVk.cpp",
-  "src/libANGLE/renderer/vulkan/BufferVk.h",
-  "src/libANGLE/renderer/vulkan/CommandGraph.cpp",
-  "src/libANGLE/renderer/vulkan/CommandGraph.h",
-  "src/libANGLE/renderer/vulkan/CompilerVk.cpp",
-  "src/libANGLE/renderer/vulkan/CompilerVk.h",
-  "src/libANGLE/renderer/vulkan/ContextVk.cpp",
-  "src/libANGLE/renderer/vulkan/ContextVk.h",
-  "src/libANGLE/renderer/vulkan/DeviceVk.cpp",
-  "src/libANGLE/renderer/vulkan/DeviceVk.h",
-  "src/libANGLE/renderer/vulkan/DisplayVk.cpp",
-  "src/libANGLE/renderer/vulkan/DisplayVk.h",
-  "src/libANGLE/renderer/vulkan/FenceNVVk.cpp",
-  "src/libANGLE/renderer/vulkan/FenceNVVk.h",
-  "src/libANGLE/renderer/vulkan/FramebufferVk.cpp",
-  "src/libANGLE/renderer/vulkan/FramebufferVk.h",
-  "src/libANGLE/renderer/vulkan/GlslangWrapper.cpp",
-  "src/libANGLE/renderer/vulkan/GlslangWrapper.h",
-  "src/libANGLE/renderer/vulkan/ImageVk.cpp",
-  "src/libANGLE/renderer/vulkan/ImageVk.h",
-  "src/libANGLE/renderer/vulkan/MemoryObjectVk.cpp",
-  "src/libANGLE/renderer/vulkan/MemoryObjectVk.h",
-  "src/libANGLE/renderer/vulkan/OverlayVk.cpp",
-  "src/libANGLE/renderer/vulkan/OverlayVk.h",
-  "src/libANGLE/renderer/vulkan/PersistentCommandPool.cpp",
-  "src/libANGLE/renderer/vulkan/PersistentCommandPool.h",
-  "src/libANGLE/renderer/vulkan/ProgramVk.cpp",
-  "src/libANGLE/renderer/vulkan/ProgramVk.h",
-  "src/libANGLE/renderer/vulkan/ProgramPipelineVk.cpp",
-  "src/libANGLE/renderer/vulkan/ProgramPipelineVk.h",
-  "src/libANGLE/renderer/vulkan/QueryVk.cpp",
-  "src/libANGLE/renderer/vulkan/QueryVk.h",
-  "src/libANGLE/renderer/vulkan/RenderbufferVk.cpp",
-  "src/libANGLE/renderer/vulkan/RenderbufferVk.h",
-  "src/libANGLE/renderer/vulkan/RendererVk.cpp",
-  "src/libANGLE/renderer/vulkan/RendererVk.h",
-  "src/libANGLE/renderer/vulkan/RenderTargetVk.cpp",
-  "src/libANGLE/renderer/vulkan/RenderTargetVk.h",
-  "src/libANGLE/renderer/vulkan/SamplerVk.cpp",
-  "src/libANGLE/renderer/vulkan/SamplerVk.h",
-  "src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.cpp",
-  "src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h",
-  "src/libANGLE/renderer/vulkan/SemaphoreVk.cpp",
-  "src/libANGLE/renderer/vulkan/SemaphoreVk.h",
-  "src/libANGLE/renderer/vulkan/ShaderVk.cpp",
-  "src/libANGLE/renderer/vulkan/ShaderVk.h",
-  "src/libANGLE/renderer/vulkan/SurfaceVk.cpp",
-  "src/libANGLE/renderer/vulkan/SurfaceVk.h",
-  "src/libANGLE/renderer/vulkan/SyncVk.cpp",
-  "src/libANGLE/renderer/vulkan/SyncVk.h",
-  "src/libANGLE/renderer/vulkan/TextureVk.cpp",
-  "src/libANGLE/renderer/vulkan/TextureVk.h",
-  "src/libANGLE/renderer/vulkan/TransformFeedbackVk.cpp",
-  "src/libANGLE/renderer/vulkan/TransformFeedbackVk.h",
-  "src/libANGLE/renderer/vulkan/UtilsVk.cpp",
-  "src/libANGLE/renderer/vulkan/UtilsVk.h",
-  "src/libANGLE/renderer/vulkan/VertexArrayVk.cpp",
-  "src/libANGLE/renderer/vulkan/VertexArrayVk.h",
-  "src/libANGLE/renderer/vulkan/vk_cache_utils.cpp",
-  "src/libANGLE/renderer/vulkan/vk_cache_utils.h",
-  "src/libANGLE/renderer/vulkan/vk_caps_utils.cpp",
-  "src/libANGLE/renderer/vulkan/vk_caps_utils.h",
-  "src/libANGLE/renderer/vulkan/vk_format_table_autogen.cpp",
-  "src/libANGLE/renderer/vulkan/vk_format_utils.h",
-  "src/libANGLE/renderer/vulkan/vk_format_utils.cpp",
-  "src/libANGLE/renderer/vulkan/vk_helpers.cpp",
-  "src/libANGLE/renderer/vulkan/vk_helpers.h",
-  "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h",
-  "src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp",
-  "src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp",
-  "src/libANGLE/renderer/vulkan/vk_utils.cpp",
-  "src/libANGLE/renderer/vulkan/vk_utils.h",
-  "src/libANGLE/renderer/vulkan/vk_wrapper.h",
-]
-
 # The frame capture headers are always visible to libANGLE.
 libangle_sources += [
   "src/libANGLE/FrameCapture.h",
@@ -953,36 +887,6 @@
   "src/libANGLE/gl_enum_utils_autogen.cpp",
 ]
 
-libangle_vulkan_android_sources = [
-  "src/libANGLE/renderer/vulkan/android/DisplayVkAndroid.cpp",
-  "src/libANGLE/renderer/vulkan/android/DisplayVkAndroid.h",
-  "src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.cpp",
-  "src/libANGLE/renderer/vulkan/android/HardwareBufferImageSiblingVkAndroid.h",
-  "src/libANGLE/renderer/vulkan/android/WindowSurfaceVkAndroid.cpp",
-  "src/libANGLE/renderer/vulkan/android/WindowSurfaceVkAndroid.h",
-]
-
-libangle_vulkan_win32_sources = [
-  "src/libANGLE/renderer/vulkan/win32/DisplayVkWin32.cpp",
-  "src/libANGLE/renderer/vulkan/win32/DisplayVkWin32.h",
-  "src/libANGLE/renderer/vulkan/win32/WindowSurfaceVkWin32.cpp",
-  "src/libANGLE/renderer/vulkan/win32/WindowSurfaceVkWin32.h",
-]
-
-libangle_vulkan_xcb_sources = [
-  "src/libANGLE/renderer/vulkan/xcb/DisplayVkXcb.cpp",
-  "src/libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h",
-  "src/libANGLE/renderer/vulkan/xcb/WindowSurfaceVkXcb.cpp",
-  "src/libANGLE/renderer/vulkan/xcb/WindowSurfaceVkXcb.h",
-]
-
-libangle_vulkan_fuchsia_sources = [
-  "src/libANGLE/renderer/vulkan/fuchsia/DisplayVkFuchsia.cpp",
-  "src/libANGLE/renderer/vulkan/fuchsia/DisplayVkFuchsia.h",
-  "src/libANGLE/renderer/vulkan/fuchsia/WindowSurfaceVkFuchsia.cpp",
-  "src/libANGLE/renderer/vulkan/fuchsia/WindowSurfaceVkFuchsia.h",
-]
-
 libangle_null_sources = [
   "src/libANGLE/renderer/null/BufferNULL.cpp",
   "src/libANGLE/renderer/null/BufferNULL.h",
diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl_ext.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl_ext.cpp
index dea94e8..64142da 100644
--- a/Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl_ext.cpp
+++ b/Source/ThirdParty/ANGLE/src/libGLESv2/entry_points_egl_ext.cpp
@@ -299,13 +299,17 @@
                                  GetDeviceIfValid(dev));
                 return EGL_FALSE;
             }
-            error = dev->getDevice(value);
-            if (error.isError())
+            error = dev->getAttribute(attribute, value);
+            break;
+        case EGL_CGL_CONTEXT_ANGLE:
+        case EGL_CGL_PIXEL_FORMAT_ANGLE:
+            if (!dev->getExtensions().deviceCGL)
             {
-                thread->setError(error, GetDebug(), "eglQueryDeviceAttribEXT",
+                thread->setError(EglBadAttribute(), GetDebug(), "eglQueryDeviceAttribEXT",
                                  GetDeviceIfValid(dev));
                 return EGL_FALSE;
             }
+            error = dev->getAttribute(attribute, value);
             break;
         default:
             thread->setError(EglBadAttribute(), GetDebug(), "eglQueryDeviceAttribEXT",
@@ -313,6 +317,11 @@
             return EGL_FALSE;
     }
 
+    if (error.isError())
+    {
+        thread->setError(error, GetDebug(), "eglQueryDeviceAttribEXT", GetDeviceIfValid(dev));
+        return EGL_FALSE;
+    }
     thread->setSuccess();
     return EGL_TRUE;
 }
diff --git a/Source/ThirdParty/ANGLE/src/tests/BUILD.gn b/Source/ThirdParty/ANGLE/src/tests/BUILD.gn
index 80c2f77..1ac3b58 100644
--- a/Source/ThirdParty/ANGLE/src/tests/BUILD.gn
+++ b/Source/ThirdParty/ANGLE/src/tests/BUILD.gn
@@ -13,16 +13,7 @@
   build_angle_gles1_conform_tests = false
 }
 
-googletest_deps = [
-  "//testing/gmock",
-  "//testing/gtest",
-  "//third_party/googletest:gmock",
-  "//third_party/googletest:gtest",
-]
-
-if (build_with_chromium) {
-  googletest_deps += [ "//base/test:test_support" ]
-} else {
+if (!build_with_chromium) {
   group("all") {
     testonly = true
     deps = [
@@ -54,43 +45,7 @@
   }
 }
 
-# Helper template for including "main" files in Chromium.
-template("angle_tests_main") {
-  source_set(target_name) {
-    testonly = true
-    public_deps = googletest_deps
-    deps = [
-      "${angle_root}:includes",
-    ]
-
-    main = invoker.main
-
-    if (build_with_chromium) {
-      sources = [
-        "//gpu/$main.cc",
-      ]
-    } else {
-      sources = [
-        "$main.cpp",
-      ]
-    }
-  }
-}
-
-# Should fix the naming here once we migrate away from Chromium "main" files.
-angle_tests_main("angle_unittests_main") {
-  main = "angle_unittest_main"
-}
-
-angle_tests_main("angle_end2end_tests_main") {
-  main = "angle_end2end_tests_main"
-}
-
-angle_tests_main("angle_perftests_main") {
-  main = "angle_perftests_main"
-}
-
-angle_test("angle_unittests_helper") {
+angle_executable("angle_unittests_helper") {
   sources = angle_unittests_helper_sources
 
   deps = [
@@ -131,20 +86,20 @@
 
 angle_test("angle_unittests") {
   sources = angle_unittests_sources
+  main = "angle_unittest_main"
 
   if (angle_enable_hlsl) {
     sources += angle_unittests_hlsl_sources
     defines = [ "ANGLE_ENABLE_HLSL" ]
   }
 
-  deps = googletest_deps + [
-           "${angle_root}:libANGLE",
-           ":angle_test_expectations",
-           "${angle_root}:preprocessor",
-           "${angle_root}:translator",
-           "${angle_root}:libfeature_support",
-           ":angle_unittests_main",
-         ]
+  deps = [
+    ":angle_test_expectations",
+    "${angle_root}:libANGLE",
+    "${angle_root}:libfeature_support",
+    "${angle_root}:preprocessor",
+    "${angle_root}:translator",
+  ]
   if (!is_android && !is_fuchsia) {
     # SystemUtils.RunApp, the only unittest using a helper binary, is not supported on these
     # platforms yet.
@@ -161,6 +116,7 @@
     include_dirs = [ "." ]
 
     sources = angle_end2end_tests_sources
+    main = "angle_end2end_tests_main"
     libs = []
 
     if (is_mac) {
@@ -186,7 +142,6 @@
     ]
 
     deps = [
-      ":angle_end2end_tests_main",
       ":angle_test_expectations",
       "${angle_root}:angle_gpu_info_util",
       "${angle_root}:angle_image_util",
@@ -204,7 +159,7 @@
       use_native_activity = true
     }
     if (angle_enable_vulkan) {
-      deps += [ "${angle_root}:angle_vulkan" ]
+      deps += [ "${angle_root}/src/libANGLE/renderer/vulkan:angle_vulkan" ]
     }
   }
 }
@@ -215,6 +170,7 @@
   angle_test("angle_white_box_tests") {
     include_dirs = [ "." ]
     sources = angle_white_box_tests_sources
+    main = "angle_end2end_tests_main"
 
     if (is_win) {
       sources += angle_white_box_tests_win_sources
@@ -230,7 +186,6 @@
     ]
 
     deps = [
-      ":angle_end2end_tests_main",
       "${angle_root}:angle_util_static",
       "${angle_root}:libANGLE",
       "${angle_root}:libEGL_static",
@@ -252,9 +207,9 @@
   angle_test("angle_white_box_perftests") {
     include_dirs = [ "." ]
     sources = angle_white_box_perf_tests_sources
+    main = "angle_perftests_main"
 
     deps = [
-      ":angle_perftests_main",
       "${angle_jsoncpp_dir}:jsoncpp",
       "${angle_root}:angle_util_static",
       "${angle_root}:libANGLE",
@@ -290,9 +245,9 @@
   angle_test("angle_perftests") {
     include_dirs = [ "." ]
     sources = angle_perf_tests_sources
+    main = "angle_perftests_main"
 
     deps = [
-      ":angle_perftests_main",
       "${angle_jsoncpp_dir}:jsoncpp",
       "${angle_root}:angle_common",
       "${angle_root}:angle_gpu_info_util",
@@ -352,6 +307,11 @@
       "NULLWS",
     ]
 
+    # This is used by the tests to typedef uint32_t. For some reason only needed on mac.
+    if (is_mac) {
+      defines += [ "__linux" ]
+    }
+
     cflags = []
     if (is_clang) {
       # Remove when crbug.com/428099 is resolved.
@@ -367,6 +327,8 @@
         # Upstream tests do null pointer arithmetic, so disable those warnings.
         "-Wno-null-pointer-arithmetic",
       ]
+    } else {
+      cflags += [ "/wd4101" ]  # unreferenced local variable
     }
   }
 
@@ -523,7 +485,6 @@
 
   angle_test("angle_gles1_conformance_tests") {
     deps = [
-      ":angle_end2end_tests_main",
       ":angle_gles1_conformance_no_gtest",
     ]
 
@@ -539,6 +500,7 @@
       "test_utils/angle_test_instantiate.h",
       "test_utils/gl_raii.h",
     ]
+    main = "angle_end2end_tests_main"
 
     configs += [
       "${angle_root}:libANGLE_config",
@@ -559,10 +521,6 @@
 if (build_angle_deqp_tests && !is_fuchsia) {
   import("deqp.gni")
 
-  angle_tests_main("angle_deqp_tests_main") {
-    main = "angle_deqp_tests_main"
-  }
-
   config("angle_deqp_support") {
     include_dirs = deqp_include_dirs
     if (is_win && !is_clang) {
@@ -615,9 +573,6 @@
         "-Wno-string-conversion",  # implicit conversion turns string literal into bool
         "-Wno-unused-local-typedef",
         "-Wno-unused-result",  # ignoring return value of function declared with 'nodiscard' attribute
-
-        # Suppress a spurious header warning. http://crbug.com/995046
-        "-Wno-nonportable-include-path",
       ]
     }
 
@@ -652,12 +607,20 @@
   set_defaults("angle_deqp_source_set") {
     public_configs = []
     configs = angle_common_configs
+    cflags = []
   }
 
   template("angle_deqp_source_set") {
     angle_source_set(target_name) {
       forward_variables_from(invoker, "*")
       suppressed_configs += deqp_undefine_configs
+
+      if (is_clang) {
+        cflags += [
+          # Suppress a spurious header warning. http://crbug.com/995046
+          "-Wno-nonportable-include-path",
+        ]
+      }
     }
   }
 
@@ -835,19 +798,6 @@
     }
   }
 
-  angle_source_set("angle_deqp_gtest_support") {
-    testonly = true
-
-    public_deps = [
-      ":angle_deqp_tests_main",
-      ":angle_test_expectations",
-      "${angle_root}:angle_common",
-      "${angle_root}:angle_util",
-    ]
-
-    libs = []
-  }
-
   set_defaults("angle_deqp_gtest") {
     deps = []
     sources = []
@@ -903,13 +853,16 @@
     angle_test("angle_deqp_${_api}_tests") {
       deps = [
         ":${shared_library_name}",
-        ":angle_deqp_gtest_support",
+        ":angle_test_expectations",
+        "${angle_root}:angle_common",
+        "${angle_root}:angle_util",
       ]
 
       # Must be included outside of the source set for the define
       sources = [
         "deqp_support/angle_deqp_gtest.cpp",
       ]
+      main = "angle_deqp_tests_main"
 
       data = [
         "deqp_support/deqp_${_api}_test_expectations.txt",
diff --git a/Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni b/Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni
index 9729b9a..9b7bed6 100644
--- a/Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni
+++ b/Source/ThirdParty/ANGLE/src/tests/angle_end2end_tests.gni
@@ -138,6 +138,7 @@
   "egl_tests/EGLContextSharingTest.cpp",
   "egl_tests/EGLCreateContextAttribsTest.cpp",
   "egl_tests/EGLDebugTest.cpp",
+  "egl_tests/EGLNoConfigContextTest.cpp",
   "egl_tests/EGLProgramCacheControlTest.cpp",
   "egl_tests/EGLQueryContextTest.cpp",
   "egl_tests/EGLRecordableTest.cpp",
@@ -157,8 +158,10 @@
   "test_utils/angle_test_instantiate.h",
   "test_utils/gl_raii.h",
 ]
-angle_end2end_tests_mac_sources =
-    [ "egl_tests/EGLIOSurfaceClientBufferTest.cpp" ]
+angle_end2end_tests_mac_sources = [
+  "egl_tests/EGLDeviceCGLTest.cpp",
+  "egl_tests/EGLIOSurfaceClientBufferTest.cpp",
+]
 angle_end2end_tests_win_sources = [
   "gl_tests/D3DImageFormatConversionTest.cpp",
   "egl_tests/EGLDeviceTest.cpp",
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/DebugShaderPrecision_test.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/DebugShaderPrecision_test.cpp
index b390bae..d5fbde46 100644
--- a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/DebugShaderPrecision_test.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/DebugShaderPrecision_test.cpp
@@ -306,7 +306,7 @@
         foundInHLSLCode("float4 angle_compound_add_frm(inout float4 x, in float4 y) {\n"
                         "    x = angle_frm(angle_frm(x) + y);"));
     ASSERT_TRUE(foundInAllGLSLCode("angle_compound_add_frm(_uv, angle_frm(_uu2));"));
-    ASSERT_TRUE(foundInHLSLCodeRegex("angle_compound_add_frm\\(_v(\\d)*, angle_frm\\(_u2\\)\\);"));
+    ASSERT_TRUE(foundInHLSLCodeRegex(R"(angle_compound_add_frm\(_v(\d)*, angle_frm\(_u2\)\);)"));
     ASSERT_TRUE(notFoundInCode("+="));
 }
 
@@ -1055,7 +1055,7 @@
         "}\n";
     compile(shaderString);
     ASSERT_TRUE(foundInAllGLSLCode("modf(angle_frm(_uu), _uo)"));
-    ASSERT_TRUE(foundInHLSLCodeRegex("modf\\(angle_frm\\(_u\\), _o(\\d)*)"));
+    ASSERT_TRUE(foundInHLSLCodeRegex(R"(modf\(angle_frm\(_u\), _o(\d)*)"));
 }
 
 #if defined(ANGLE_ENABLE_HLSL)
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
index d3f1c00..acff961 100644
--- a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_ESSL_autogen.cpp
@@ -17,17 +17,17 @@
 TEST(ImmutableStringTest, ScriptGeneratedHashesMatch)
 {
     ASSERT_EQ(0x0000026cu, ImmutableString("radians(00B").mangledNameHash());
-    ASSERT_EQ(0x00000147u, ImmutableString("radians(10B").mangledNameHash());
-    ASSERT_EQ(0x00000109u, ImmutableString("radians(20B").mangledNameHash());
+    ASSERT_EQ(0x00000146u, ImmutableString("radians(10B").mangledNameHash());
+    ASSERT_EQ(0x00000108u, ImmutableString("radians(20B").mangledNameHash());
     ASSERT_EQ(0x0000039bu, ImmutableString("radians(30B").mangledNameHash());
-    ASSERT_EQ(0x000001dau, ImmutableString("degrees(00B").mangledNameHash());
+    ASSERT_EQ(0x000001d8u, ImmutableString("degrees(00B").mangledNameHash());
     ASSERT_EQ(0x0000031cu, ImmutableString("degrees(10B").mangledNameHash());
     ASSERT_EQ(0x00000046u, ImmutableString("degrees(20B").mangledNameHash());
-    ASSERT_EQ(0x0000016au, ImmutableString("degrees(30B").mangledNameHash());
+    ASSERT_EQ(0x00000168u, ImmutableString("degrees(30B").mangledNameHash());
     ASSERT_EQ(0x00000347u, ImmutableString("sin(00B").mangledNameHash());
     ASSERT_EQ(0x00000203u, ImmutableString("sin(10B").mangledNameHash());
     ASSERT_EQ(0x00000224u, ImmutableString("sin(20B").mangledNameHash());
-    ASSERT_EQ(0x00000110u, ImmutableString("sin(30B").mangledNameHash());
+    ASSERT_EQ(0x0000010fu, ImmutableString("sin(30B").mangledNameHash());
     ASSERT_EQ(0x0000020fu, ImmutableString("cos(00B").mangledNameHash());
     ASSERT_EQ(0x00000356u, ImmutableString("cos(10B").mangledNameHash());
     ASSERT_EQ(0x00000399u, ImmutableString("cos(20B").mangledNameHash());
@@ -35,123 +35,123 @@
     ASSERT_EQ(0x00000206u, ImmutableString("tan(00B").mangledNameHash());
     ASSERT_EQ(0x0000034du, ImmutableString("tan(10B").mangledNameHash());
     ASSERT_EQ(0x0000039du, ImmutableString("tan(20B").mangledNameHash());
-    ASSERT_EQ(0x000000f5u, ImmutableString("tan(30B").mangledNameHash());
+    ASSERT_EQ(0x000000f4u, ImmutableString("tan(30B").mangledNameHash());
     ASSERT_EQ(0x00000231u, ImmutableString("asin(00B").mangledNameHash());
     ASSERT_EQ(0x00000378u, ImmutableString("asin(10B").mangledNameHash());
     ASSERT_EQ(0x00000018u, ImmutableString("asin(20B").mangledNameHash());
-    ASSERT_EQ(0x00000137u, ImmutableString("asin(30B").mangledNameHash());
+    ASSERT_EQ(0x00000136u, ImmutableString("asin(30B").mangledNameHash());
     ASSERT_EQ(0x00000060u, ImmutableString("acos(00B").mangledNameHash());
     ASSERT_EQ(0x000002e6u, ImmutableString("acos(10B").mangledNameHash());
     ASSERT_EQ(0x00000288u, ImmutableString("acos(20B").mangledNameHash());
-    ASSERT_EQ(0x00000168u, ImmutableString("acos(30B").mangledNameHash());
-    ASSERT_EQ(0x000001f4u, ImmutableString("atan(00B00B").mangledNameHash());
+    ASSERT_EQ(0x00000166u, ImmutableString("acos(30B").mangledNameHash());
+    ASSERT_EQ(0x000001f2u, ImmutableString("atan(00B00B").mangledNameHash());
     ASSERT_EQ(0x00000031u, ImmutableString("atan(10B10B").mangledNameHash());
-    ASSERT_EQ(0x000001c9u, ImmutableString("atan(20B20B").mangledNameHash());
-    ASSERT_EQ(0x00000132u, ImmutableString("atan(30B30B").mangledNameHash());
-    ASSERT_EQ(0x000001e1u, ImmutableString("atan(00B").mangledNameHash());
+    ASSERT_EQ(0x000001c7u, ImmutableString("atan(20B20B").mangledNameHash());
+    ASSERT_EQ(0x00000131u, ImmutableString("atan(30B30B").mangledNameHash());
+    ASSERT_EQ(0x000001dfu, ImmutableString("atan(00B").mangledNameHash());
     ASSERT_EQ(0x00000070u, ImmutableString("atan(10B").mangledNameHash());
     ASSERT_EQ(0x00000086u, ImmutableString("atan(20B").mangledNameHash());
     ASSERT_EQ(0x00000323u, ImmutableString("atan(30B").mangledNameHash());
     ASSERT_EQ(0x0000028au, ImmutableString("sinh(00B").mangledNameHash());
     ASSERT_EQ(0x00000322u, ImmutableString("sinh(10B").mangledNameHash());
-    ASSERT_EQ(0x00000180u, ImmutableString("sinh(20B").mangledNameHash());
-    ASSERT_EQ(0x000000edu, ImmutableString("sinh(30B").mangledNameHash());
-    ASSERT_EQ(0x0000015au, ImmutableString("cosh(00B").mangledNameHash());
+    ASSERT_EQ(0x0000017eu, ImmutableString("sinh(20B").mangledNameHash());
+    ASSERT_EQ(0x000000ecu, ImmutableString("sinh(30B").mangledNameHash());
+    ASSERT_EQ(0x00000158u, ImmutableString("cosh(00B").mangledNameHash());
     ASSERT_EQ(0x00000306u, ImmutableString("cosh(10B").mangledNameHash());
     ASSERT_EQ(0x00000335u, ImmutableString("cosh(20B").mangledNameHash());
     ASSERT_EQ(0x00000267u, ImmutableString("cosh(30B").mangledNameHash());
     ASSERT_EQ(0x00000047u, ImmutableString("tanh(00B").mangledNameHash());
-    ASSERT_EQ(0x00000169u, ImmutableString("tanh(10B").mangledNameHash());
+    ASSERT_EQ(0x00000167u, ImmutableString("tanh(10B").mangledNameHash());
     ASSERT_EQ(0x0000027cu, ImmutableString("tanh(20B").mangledNameHash());
     ASSERT_EQ(0x0000000du, ImmutableString("tanh(30B").mangledNameHash());
     ASSERT_EQ(0x00000261u, ImmutableString("asinh(00B").mangledNameHash());
     ASSERT_EQ(0x000003a1u, ImmutableString("asinh(10B").mangledNameHash());
-    ASSERT_EQ(0x000000f2u, ImmutableString("asinh(20B").mangledNameHash());
+    ASSERT_EQ(0x000000f1u, ImmutableString("asinh(20B").mangledNameHash());
     ASSERT_EQ(0x0000020au, ImmutableString("asinh(30B").mangledNameHash());
-    ASSERT_EQ(0x0000017du, ImmutableString("acosh(00B").mangledNameHash());
+    ASSERT_EQ(0x0000017bu, ImmutableString("acosh(00B").mangledNameHash());
     ASSERT_EQ(0x000000abu, ImmutableString("acosh(10B").mangledNameHash());
     ASSERT_EQ(0x0000001du, ImmutableString("acosh(20B").mangledNameHash());
     ASSERT_EQ(0x000002a3u, ImmutableString("acosh(30B").mangledNameHash());
     ASSERT_EQ(0x00000082u, ImmutableString("atanh(00B").mangledNameHash());
     ASSERT_EQ(0x0000001eu, ImmutableString("atanh(10B").mangledNameHash());
     ASSERT_EQ(0x000002cbu, ImmutableString("atanh(20B").mangledNameHash());
-    ASSERT_EQ(0x00000195u, ImmutableString("atanh(30B").mangledNameHash());
-    ASSERT_EQ(0x0000018fu, ImmutableString("pow(00B00B").mangledNameHash());
+    ASSERT_EQ(0x00000193u, ImmutableString("atanh(30B").mangledNameHash());
+    ASSERT_EQ(0x0000018du, ImmutableString("pow(00B00B").mangledNameHash());
     ASSERT_EQ(0x0000008du, ImmutableString("pow(10B10B").mangledNameHash());
     ASSERT_EQ(0x000002feu, ImmutableString("pow(20B20B").mangledNameHash());
     ASSERT_EQ(0x00000217u, ImmutableString("pow(30B30B").mangledNameHash());
     ASSERT_EQ(0x0000030bu, ImmutableString("exp(00B").mangledNameHash());
     ASSERT_EQ(0x00000077u, ImmutableString("exp(10B").mangledNameHash());
-    ASSERT_EQ(0x0000017au, ImmutableString("exp(20B").mangledNameHash());
+    ASSERT_EQ(0x00000178u, ImmutableString("exp(20B").mangledNameHash());
     ASSERT_EQ(0x00000295u, ImmutableString("exp(30B").mangledNameHash());
     ASSERT_EQ(0x0000029cu, ImmutableString("log(00B").mangledNameHash());
-    ASSERT_EQ(0x0000017eu, ImmutableString("log(10B").mangledNameHash());
-    ASSERT_EQ(0x00000136u, ImmutableString("log(20B").mangledNameHash());
-    ASSERT_EQ(0x000000cdu, ImmutableString("log(30B").mangledNameHash());
+    ASSERT_EQ(0x0000017cu, ImmutableString("log(10B").mangledNameHash());
+    ASSERT_EQ(0x00000135u, ImmutableString("log(20B").mangledNameHash());
+    ASSERT_EQ(0x000000ccu, ImmutableString("log(30B").mangledNameHash());
     ASSERT_EQ(0x0000039au, ImmutableString("exp2(00B").mangledNameHash());
-    ASSERT_EQ(0x000000fau, ImmutableString("exp2(10B").mangledNameHash());
-    ASSERT_EQ(0x00000145u, ImmutableString("exp2(20B").mangledNameHash());
+    ASSERT_EQ(0x000000f9u, ImmutableString("exp2(10B").mangledNameHash());
+    ASSERT_EQ(0x00000144u, ImmutableString("exp2(20B").mangledNameHash());
     ASSERT_EQ(0x00000258u, ImmutableString("exp2(30B").mangledNameHash());
-    ASSERT_EQ(0x00000164u, ImmutableString("log2(00B").mangledNameHash());
+    ASSERT_EQ(0x00000162u, ImmutableString("log2(00B").mangledNameHash());
     ASSERT_EQ(0x0000008au, ImmutableString("log2(10B").mangledNameHash());
     ASSERT_EQ(0x00000317u, ImmutableString("log2(20B").mangledNameHash());
-    ASSERT_EQ(0x000001b5u, ImmutableString("log2(30B").mangledNameHash());
-    ASSERT_EQ(0x000001d6u, ImmutableString("sqrt(00B").mangledNameHash());
-    ASSERT_EQ(0x000000b9u, ImmutableString("sqrt(10B").mangledNameHash());
+    ASSERT_EQ(0x000001b3u, ImmutableString("log2(30B").mangledNameHash());
+    ASSERT_EQ(0x000001d4u, ImmutableString("sqrt(00B").mangledNameHash());
+    ASSERT_EQ(0x000000b8u, ImmutableString("sqrt(10B").mangledNameHash());
     ASSERT_EQ(0x0000007eu, ImmutableString("sqrt(20B").mangledNameHash());
     ASSERT_EQ(0x00000307u, ImmutableString("sqrt(30B").mangledNameHash());
     ASSERT_EQ(0x0000004cu, ImmutableString("inversesqrt(00B").mangledNameHash());
     ASSERT_EQ(0x000002e4u, ImmutableString("inversesqrt(10B").mangledNameHash());
     ASSERT_EQ(0x0000023eu, ImmutableString("inversesqrt(20B").mangledNameHash());
-    ASSERT_EQ(0x00000170u, ImmutableString("inversesqrt(30B").mangledNameHash());
+    ASSERT_EQ(0x0000016eu, ImmutableString("inversesqrt(30B").mangledNameHash());
     ASSERT_EQ(0x00000280u, ImmutableString("abs(00B").mangledNameHash());
-    ASSERT_EQ(0x00000167u, ImmutableString("abs(10B").mangledNameHash());
+    ASSERT_EQ(0x00000165u, ImmutableString("abs(10B").mangledNameHash());
     ASSERT_EQ(0x0000004bu, ImmutableString("abs(20B").mangledNameHash());
     ASSERT_EQ(0x000002eau, ImmutableString("abs(30B").mangledNameHash());
     ASSERT_EQ(0x0000027fu, ImmutableString("abs(00D").mangledNameHash());
-    ASSERT_EQ(0x00000166u, ImmutableString("abs(10D").mangledNameHash());
+    ASSERT_EQ(0x00000164u, ImmutableString("abs(10D").mangledNameHash());
     ASSERT_EQ(0x0000004au, ImmutableString("abs(20D").mangledNameHash());
     ASSERT_EQ(0x000002e7u, ImmutableString("abs(30D").mangledNameHash());
     ASSERT_EQ(0x0000029bu, ImmutableString("sign(00B").mangledNameHash());
     ASSERT_EQ(0x0000038cu, ImmutableString("sign(10B").mangledNameHash());
     ASSERT_EQ(0x0000007fu, ImmutableString("sign(20B").mangledNameHash());
-    ASSERT_EQ(0x0000018du, ImmutableString("sign(30B").mangledNameHash());
+    ASSERT_EQ(0x0000018bu, ImmutableString("sign(30B").mangledNameHash());
     ASSERT_EQ(0x0000029eu, ImmutableString("sign(00D").mangledNameHash());
     ASSERT_EQ(0x00000309u, ImmutableString("sign(10D").mangledNameHash());
     ASSERT_EQ(0x00000081u, ImmutableString("sign(20D").mangledNameHash());
-    ASSERT_EQ(0x0000018eu, ImmutableString("sign(30D").mangledNameHash());
+    ASSERT_EQ(0x0000018cu, ImmutableString("sign(30D").mangledNameHash());
     ASSERT_EQ(0x000003a3u, ImmutableString("floor(00B").mangledNameHash());
     ASSERT_EQ(0x00000202u, ImmutableString("floor(10B").mangledNameHash());
     ASSERT_EQ(0x0000021eu, ImmutableString("floor(20B").mangledNameHash());
-    ASSERT_EQ(0x00000111u, ImmutableString("floor(30B").mangledNameHash());
-    ASSERT_EQ(0x000000ecu, ImmutableString("trunc(00B").mangledNameHash());
+    ASSERT_EQ(0x00000110u, ImmutableString("floor(30B").mangledNameHash());
+    ASSERT_EQ(0x000000ebu, ImmutableString("trunc(00B").mangledNameHash());
     ASSERT_EQ(0x0000037au, ImmutableString("trunc(10B").mangledNameHash());
     ASSERT_EQ(0x00000343u, ImmutableString("trunc(20B").mangledNameHash());
-    ASSERT_EQ(0x000001fbu, ImmutableString("trunc(30B").mangledNameHash());
-    ASSERT_EQ(0x000000d1u, ImmutableString("round(00B").mangledNameHash());
+    ASSERT_EQ(0x000001f9u, ImmutableString("trunc(30B").mangledNameHash());
+    ASSERT_EQ(0x000000d0u, ImmutableString("round(00B").mangledNameHash());
     ASSERT_EQ(0x00000363u, ImmutableString("round(10B").mangledNameHash());
     ASSERT_EQ(0x00000226u, ImmutableString("round(20B").mangledNameHash());
-    ASSERT_EQ(0x0000010du, ImmutableString("round(30B").mangledNameHash());
+    ASSERT_EQ(0x0000010cu, ImmutableString("round(30B").mangledNameHash());
     ASSERT_EQ(0x000002c8u, ImmutableString("roundEven(00B").mangledNameHash());
-    ASSERT_EQ(0x00000193u, ImmutableString("roundEven(10B").mangledNameHash());
-    ASSERT_EQ(0x0000013cu, ImmutableString("roundEven(20B").mangledNameHash());
+    ASSERT_EQ(0x00000191u, ImmutableString("roundEven(10B").mangledNameHash());
+    ASSERT_EQ(0x0000013bu, ImmutableString("roundEven(20B").mangledNameHash());
     ASSERT_EQ(0x0000001cu, ImmutableString("roundEven(30B").mangledNameHash());
     ASSERT_EQ(0x00000232u, ImmutableString("ceil(00B").mangledNameHash());
     ASSERT_EQ(0x00000325u, ImmutableString("ceil(10B").mangledNameHash());
     ASSERT_EQ(0x00000098u, ImmutableString("ceil(20B").mangledNameHash());
-    ASSERT_EQ(0x0000014du, ImmutableString("ceil(30B").mangledNameHash());
-    ASSERT_EQ(0x00000177u, ImmutableString("fract(00B").mangledNameHash());
+    ASSERT_EQ(0x0000014bu, ImmutableString("ceil(30B").mangledNameHash());
+    ASSERT_EQ(0x00000175u, ImmutableString("fract(00B").mangledNameHash());
     ASSERT_EQ(0x00000061u, ImmutableString("fract(10B").mangledNameHash());
     ASSERT_EQ(0x000002e9u, ImmutableString("fract(20B").mangledNameHash());
-    ASSERT_EQ(0x000001b8u, ImmutableString("fract(30B").mangledNameHash());
-    ASSERT_EQ(0x00000190u, ImmutableString("mod(00B00B").mangledNameHash());
-    ASSERT_EQ(0x00000156u, ImmutableString("mod(10B00B").mangledNameHash());
-    ASSERT_EQ(0x000000b4u, ImmutableString("mod(20B00B").mangledNameHash());
-    ASSERT_EQ(0x000001a1u, ImmutableString("mod(30B00B").mangledNameHash());
+    ASSERT_EQ(0x000001b6u, ImmutableString("fract(30B").mangledNameHash());
+    ASSERT_EQ(0x0000018eu, ImmutableString("mod(00B00B").mangledNameHash());
+    ASSERT_EQ(0x00000154u, ImmutableString("mod(10B00B").mangledNameHash());
+    ASSERT_EQ(0x000000b3u, ImmutableString("mod(20B00B").mangledNameHash());
+    ASSERT_EQ(0x0000019fu, ImmutableString("mod(30B00B").mangledNameHash());
     ASSERT_EQ(0x000002aau, ImmutableString("mod(10B10B").mangledNameHash());
     ASSERT_EQ(0x00000207u, ImmutableString("mod(20B20B").mangledNameHash());
-    ASSERT_EQ(0x0000018bu, ImmutableString("mod(30B30B").mangledNameHash());
-    ASSERT_EQ(0x000001d2u, ImmutableString("min(00B00B").mangledNameHash());
+    ASSERT_EQ(0x00000189u, ImmutableString("mod(30B30B").mangledNameHash());
+    ASSERT_EQ(0x000001d0u, ImmutableString("min(00B00B").mangledNameHash());
     ASSERT_EQ(0x00000319u, ImmutableString("min(10B00B").mangledNameHash());
     ASSERT_EQ(0x000000aeu, ImmutableString("min(20B00B").mangledNameHash());
     ASSERT_EQ(0x00000072u, ImmutableString("min(30B00B").mangledNameHash());
@@ -168,64 +168,64 @@
     ASSERT_EQ(0x0000030cu, ImmutableString("min(00E00E").mangledNameHash());
     ASSERT_EQ(0x0000035cu, ImmutableString("min(10E10E").mangledNameHash());
     ASSERT_EQ(0x00000017u, ImmutableString("min(20E20E").mangledNameHash());
-    ASSERT_EQ(0x000001ceu, ImmutableString("min(30E30E").mangledNameHash());
-    ASSERT_EQ(0x000000ccu, ImmutableString("min(10E00E").mangledNameHash());
-    ASSERT_EQ(0x000001dcu, ImmutableString("min(20E00E").mangledNameHash());
-    ASSERT_EQ(0x00000179u, ImmutableString("min(30E00E").mangledNameHash());
-    ASSERT_EQ(0x0000013bu, ImmutableString("max(00B00B").mangledNameHash());
+    ASSERT_EQ(0x000001ccu, ImmutableString("min(30E30E").mangledNameHash());
+    ASSERT_EQ(0x000000cbu, ImmutableString("min(10E00E").mangledNameHash());
+    ASSERT_EQ(0x000001dau, ImmutableString("min(20E00E").mangledNameHash());
+    ASSERT_EQ(0x00000177u, ImmutableString("min(30E00E").mangledNameHash());
+    ASSERT_EQ(0x0000013au, ImmutableString("max(00B00B").mangledNameHash());
     ASSERT_EQ(0x00000251u, ImmutableString("max(10B00B").mangledNameHash());
     ASSERT_EQ(0x00000032u, ImmutableString("max(20B00B").mangledNameHash());
     ASSERT_EQ(0x0000026fu, ImmutableString("max(30B00B").mangledNameHash());
     ASSERT_EQ(0x00000372u, ImmutableString("max(10B10B").mangledNameHash());
     ASSERT_EQ(0x00000290u, ImmutableString("max(20B20B").mangledNameHash());
-    ASSERT_EQ(0x0000011du, ImmutableString("max(30B30B").mangledNameHash());
-    ASSERT_EQ(0x0000014bu, ImmutableString("max(00D00D").mangledNameHash());
+    ASSERT_EQ(0x0000011cu, ImmutableString("max(30B30B").mangledNameHash());
+    ASSERT_EQ(0x00000149u, ImmutableString("max(00D00D").mangledNameHash());
     ASSERT_EQ(0x00000214u, ImmutableString("max(10D10D").mangledNameHash());
     ASSERT_EQ(0x00000212u, ImmutableString("max(20D20D").mangledNameHash());
     ASSERT_EQ(0x0000030du, ImmutableString("max(30D30D").mangledNameHash());
-    ASSERT_EQ(0x0000010bu, ImmutableString("max(10D00D").mangledNameHash());
-    ASSERT_EQ(0x000000bdu, ImmutableString("max(20D00D").mangledNameHash());
+    ASSERT_EQ(0x0000010au, ImmutableString("max(10D00D").mangledNameHash());
+    ASSERT_EQ(0x000000bcu, ImmutableString("max(20D00D").mangledNameHash());
     ASSERT_EQ(0x00000053u, ImmutableString("max(30D00D").mangledNameHash());
     ASSERT_EQ(0x0000038du, ImmutableString("max(00E00E").mangledNameHash());
-    ASSERT_EQ(0x0000011cu, ImmutableString("max(10E10E").mangledNameHash());
-    ASSERT_EQ(0x0000015du, ImmutableString("max(20E20E").mangledNameHash());
-    ASSERT_EQ(0x000001c5u, ImmutableString("max(30E30E").mangledNameHash());
-    ASSERT_EQ(0x000001ebu, ImmutableString("max(10E00E").mangledNameHash());
+    ASSERT_EQ(0x0000011bu, ImmutableString("max(10E10E").mangledNameHash());
+    ASSERT_EQ(0x0000015bu, ImmutableString("max(20E20E").mangledNameHash());
+    ASSERT_EQ(0x000001c3u, ImmutableString("max(30E30E").mangledNameHash());
+    ASSERT_EQ(0x000001e9u, ImmutableString("max(10E00E").mangledNameHash());
     ASSERT_EQ(0x000002c6u, ImmutableString("max(20E00E").mangledNameHash());
-    ASSERT_EQ(0x00000144u, ImmutableString("max(30E00E").mangledNameHash());
-    ASSERT_EQ(0x00000173u, ImmutableString("clamp(00B00B00B").mangledNameHash());
+    ASSERT_EQ(0x00000143u, ImmutableString("max(30E00E").mangledNameHash());
+    ASSERT_EQ(0x00000171u, ImmutableString("clamp(00B00B00B").mangledNameHash());
     ASSERT_EQ(0x00000383u, ImmutableString("clamp(10B00B00B").mangledNameHash());
     ASSERT_EQ(0x0000027bu, ImmutableString("clamp(20B00B00B").mangledNameHash());
-    ASSERT_EQ(0x00000101u, ImmutableString("clamp(30B00B00B").mangledNameHash());
+    ASSERT_EQ(0x00000100u, ImmutableString("clamp(30B00B00B").mangledNameHash());
     ASSERT_EQ(0x00000020u, ImmutableString("clamp(10B10B10B").mangledNameHash());
     ASSERT_EQ(0x0000033au, ImmutableString("clamp(20B20B20B").mangledNameHash());
     ASSERT_EQ(0x00000033u, ImmutableString("clamp(30B30B30B").mangledNameHash());
-    ASSERT_EQ(0x0000010fu, ImmutableString("clamp(00D00D00D").mangledNameHash());
+    ASSERT_EQ(0x0000010eu, ImmutableString("clamp(00D00D00D").mangledNameHash());
     ASSERT_EQ(0x00000002u, ImmutableString("clamp(10D00D00D").mangledNameHash());
     ASSERT_EQ(0x000002cdu, ImmutableString("clamp(20D00D00D").mangledNameHash());
     ASSERT_EQ(0x00000382u, ImmutableString("clamp(30D00D00D").mangledNameHash());
     ASSERT_EQ(0x0000009au, ImmutableString("clamp(10D10D10D").mangledNameHash());
-    ASSERT_EQ(0x000001e8u, ImmutableString("clamp(20D20D20D").mangledNameHash());
+    ASSERT_EQ(0x000001e6u, ImmutableString("clamp(20D20D20D").mangledNameHash());
     ASSERT_EQ(0x000002f1u, ImmutableString("clamp(30D30D30D").mangledNameHash());
     ASSERT_EQ(0x00000011u, ImmutableString("clamp(00E00E00E").mangledNameHash());
     ASSERT_EQ(0x000002ccu, ImmutableString("clamp(10E00E00E").mangledNameHash());
     ASSERT_EQ(0x000002f8u, ImmutableString("clamp(20E00E00E").mangledNameHash());
     ASSERT_EQ(0x00000230u, ImmutableString("clamp(30E00E00E").mangledNameHash());
-    ASSERT_EQ(0x0000011eu, ImmutableString("clamp(10E10E10E").mangledNameHash());
-    ASSERT_EQ(0x000000bbu, ImmutableString("clamp(20E20E20E").mangledNameHash());
+    ASSERT_EQ(0x0000011du, ImmutableString("clamp(10E10E10E").mangledNameHash());
+    ASSERT_EQ(0x000000bau, ImmutableString("clamp(20E20E20E").mangledNameHash());
     ASSERT_EQ(0x000000a3u, ImmutableString("clamp(30E30E30E").mangledNameHash());
     ASSERT_EQ(0x00000220u, ImmutableString("mix(00B00B00B").mangledNameHash());
     ASSERT_EQ(0x000002efu, ImmutableString("mix(10B10B00B").mangledNameHash());
     ASSERT_EQ(0x0000001fu, ImmutableString("mix(20B20B00B").mangledNameHash());
     ASSERT_EQ(0x0000031au, ImmutableString("mix(30B30B00B").mangledNameHash());
-    ASSERT_EQ(0x000001b1u, ImmutableString("mix(10B10B10B").mangledNameHash());
+    ASSERT_EQ(0x000001afu, ImmutableString("mix(10B10B10B").mangledNameHash());
     ASSERT_EQ(0x0000024fu, ImmutableString("mix(20B20B20B").mangledNameHash());
     ASSERT_EQ(0x00000357u, ImmutableString("mix(30B30B30B").mangledNameHash());
     ASSERT_EQ(0x00000055u, ImmutableString("mix(00B00B00F").mangledNameHash());
-    ASSERT_EQ(0x000001b0u, ImmutableString("mix(10B10B10F").mangledNameHash());
+    ASSERT_EQ(0x000001aeu, ImmutableString("mix(10B10B10F").mangledNameHash());
     ASSERT_EQ(0x0000024cu, ImmutableString("mix(20B20B20F").mangledNameHash());
     ASSERT_EQ(0x000002fbu, ImmutableString("mix(30B30B30F").mangledNameHash());
-    ASSERT_EQ(0x00000199u, ImmutableString("step(00B00B").mangledNameHash());
+    ASSERT_EQ(0x00000197u, ImmutableString("step(00B00B").mangledNameHash());
     ASSERT_EQ(0x00000271u, ImmutableString("step(10B10B").mangledNameHash());
     ASSERT_EQ(0x00000282u, ImmutableString("step(20B20B").mangledNameHash());
     ASSERT_EQ(0x00000273u, ImmutableString("step(30B30B").mangledNameHash());
@@ -236,101 +236,101 @@
     ASSERT_EQ(0x00000219u, ImmutableString("smoothstep(10B10B10B").mangledNameHash());
     ASSERT_EQ(0x00000390u, ImmutableString("smoothstep(20B20B20B").mangledNameHash());
     ASSERT_EQ(0x00000338u, ImmutableString("smoothstep(30B30B30B").mangledNameHash());
-    ASSERT_EQ(0x000001ecu, ImmutableString("smoothstep(00B00B10B").mangledNameHash());
-    ASSERT_EQ(0x000000d2u, ImmutableString("smoothstep(00B00B20B").mangledNameHash());
+    ASSERT_EQ(0x000001eau, ImmutableString("smoothstep(00B00B10B").mangledNameHash());
+    ASSERT_EQ(0x000000d1u, ImmutableString("smoothstep(00B00B20B").mangledNameHash());
     ASSERT_EQ(0x00000314u, ImmutableString("smoothstep(00B00B30B").mangledNameHash());
     ASSERT_EQ(0x00000005u, ImmutableString("modf(00B00B").mangledNameHash());
     ASSERT_EQ(0x00000071u, ImmutableString("modf(10B10B").mangledNameHash());
     ASSERT_EQ(0x00000239u, ImmutableString("modf(20B20B").mangledNameHash());
-    ASSERT_EQ(0x00000139u, ImmutableString("modf(30B30B").mangledNameHash());
+    ASSERT_EQ(0x00000138u, ImmutableString("modf(30B30B").mangledNameHash());
     ASSERT_EQ(0x0000022cu, ImmutableString("isnan(00B").mangledNameHash());
     ASSERT_EQ(0x00000370u, ImmutableString("isnan(10B").mangledNameHash());
-    ASSERT_EQ(0x0000013au, ImmutableString("isnan(20B").mangledNameHash());
-    ASSERT_EQ(0x000001c6u, ImmutableString("isnan(30B").mangledNameHash());
-    ASSERT_EQ(0x0000019cu, ImmutableString("isinf(00B").mangledNameHash());
+    ASSERT_EQ(0x00000139u, ImmutableString("isnan(20B").mangledNameHash());
+    ASSERT_EQ(0x000001c4u, ImmutableString("isnan(30B").mangledNameHash());
+    ASSERT_EQ(0x0000019au, ImmutableString("isinf(00B").mangledNameHash());
     ASSERT_EQ(0x000002cfu, ImmutableString("isinf(10B").mangledNameHash());
     ASSERT_EQ(0x00000355u, ImmutableString("isinf(20B").mangledNameHash());
-    ASSERT_EQ(0x000000c2u, ImmutableString("isinf(30B").mangledNameHash());
+    ASSERT_EQ(0x000000c1u, ImmutableString("isinf(30B").mangledNameHash());
     ASSERT_EQ(0x0000038bu, ImmutableString("floatBitsToInt(00B").mangledNameHash());
     ASSERT_EQ(0x00000250u, ImmutableString("floatBitsToInt(10B").mangledNameHash());
     ASSERT_EQ(0x00000315u, ImmutableString("floatBitsToInt(20B").mangledNameHash());
-    ASSERT_EQ(0x00000141u, ImmutableString("floatBitsToInt(30B").mangledNameHash());
+    ASSERT_EQ(0x00000140u, ImmutableString("floatBitsToInt(30B").mangledNameHash());
     ASSERT_EQ(0x00000395u, ImmutableString("floatBitsToUint(00B").mangledNameHash());
-    ASSERT_EQ(0x000000b7u, ImmutableString("floatBitsToUint(10B").mangledNameHash());
+    ASSERT_EQ(0x000000b6u, ImmutableString("floatBitsToUint(10B").mangledNameHash());
     ASSERT_EQ(0x00000041u, ImmutableString("floatBitsToUint(20B").mangledNameHash());
     ASSERT_EQ(0x0000025du, ImmutableString("floatBitsToUint(30B").mangledNameHash());
     ASSERT_EQ(0x00000063u, ImmutableString("intBitsToFloat(00D").mangledNameHash());
-    ASSERT_EQ(0x000001a9u, ImmutableString("intBitsToFloat(10D").mangledNameHash());
-    ASSERT_EQ(0x00000176u, ImmutableString("intBitsToFloat(20D").mangledNameHash());
+    ASSERT_EQ(0x000001a7u, ImmutableString("intBitsToFloat(10D").mangledNameHash());
+    ASSERT_EQ(0x00000174u, ImmutableString("intBitsToFloat(20D").mangledNameHash());
     ASSERT_EQ(0x00000058u, ImmutableString("intBitsToFloat(30D").mangledNameHash());
     ASSERT_EQ(0x0000003bu, ImmutableString("uintBitsToFloat(00E").mangledNameHash());
-    ASSERT_EQ(0x00000157u, ImmutableString("uintBitsToFloat(10E").mangledNameHash());
+    ASSERT_EQ(0x00000155u, ImmutableString("uintBitsToFloat(10E").mangledNameHash());
     ASSERT_EQ(0x000002a6u, ImmutableString("uintBitsToFloat(20E").mangledNameHash());
     ASSERT_EQ(0x00000026u, ImmutableString("uintBitsToFloat(30E").mangledNameHash());
     ASSERT_EQ(0x00000093u, ImmutableString("frexp(00B00D").mangledNameHash());
-    ASSERT_EQ(0x000001eau, ImmutableString("frexp(10B10D").mangledNameHash());
-    ASSERT_EQ(0x00000175u, ImmutableString("frexp(20B20D").mangledNameHash());
-    ASSERT_EQ(0x000001ccu, ImmutableString("frexp(30B30D").mangledNameHash());
+    ASSERT_EQ(0x000001e8u, ImmutableString("frexp(10B10D").mangledNameHash());
+    ASSERT_EQ(0x00000173u, ImmutableString("frexp(20B20D").mangledNameHash());
+    ASSERT_EQ(0x000001cau, ImmutableString("frexp(30B30D").mangledNameHash());
     ASSERT_EQ(0x00000013u, ImmutableString("ldexp(00B00D").mangledNameHash());
     ASSERT_EQ(0x00000318u, ImmutableString("ldexp(10B10D").mangledNameHash());
     ASSERT_EQ(0x00000350u, ImmutableString("ldexp(20B20D").mangledNameHash());
     ASSERT_EQ(0x0000026eu, ImmutableString("ldexp(30B30D").mangledNameHash());
     ASSERT_EQ(0x0000025cu, ImmutableString("packSnorm2x16(10B").mangledNameHash());
     ASSERT_EQ(0x000002d4u, ImmutableString("packHalf2x16(10B").mangledNameHash());
-    ASSERT_EQ(0x000001f1u, ImmutableString("unpackSnorm2x16(00E").mangledNameHash());
-    ASSERT_EQ(0x00000104u, ImmutableString("unpackHalf2x16(00E").mangledNameHash());
+    ASSERT_EQ(0x000001efu, ImmutableString("unpackSnorm2x16(00E").mangledNameHash());
+    ASSERT_EQ(0x00000103u, ImmutableString("unpackHalf2x16(00E").mangledNameHash());
     ASSERT_EQ(0x000002afu, ImmutableString("packUnorm2x16(10B").mangledNameHash());
     ASSERT_EQ(0x0000007cu, ImmutableString("unpackUnorm2x16(00E").mangledNameHash());
     ASSERT_EQ(0x00000091u, ImmutableString("packUnorm4x8(30B").mangledNameHash());
     ASSERT_EQ(0x000002eeu, ImmutableString("packSnorm4x8(30B").mangledNameHash());
     ASSERT_EQ(0x000002a7u, ImmutableString("unpackUnorm4x8(00E").mangledNameHash());
-    ASSERT_EQ(0x00000133u, ImmutableString("unpackSnorm4x8(00E").mangledNameHash());
-    ASSERT_EQ(0x000001fdu, ImmutableString("length(00B").mangledNameHash());
-    ASSERT_EQ(0x000000eeu, ImmutableString("length(10B").mangledNameHash());
+    ASSERT_EQ(0x00000132u, ImmutableString("unpackSnorm4x8(00E").mangledNameHash());
+    ASSERT_EQ(0x000001fbu, ImmutableString("length(00B").mangledNameHash());
+    ASSERT_EQ(0x000000edu, ImmutableString("length(10B").mangledNameHash());
     ASSERT_EQ(0x0000037eu, ImmutableString("length(20B").mangledNameHash());
     ASSERT_EQ(0x00000248u, ImmutableString("length(30B").mangledNameHash());
     ASSERT_EQ(0x00000234u, ImmutableString("distance(00B00B").mangledNameHash());
-    ASSERT_EQ(0x00000154u, ImmutableString("distance(10B10B").mangledNameHash());
-    ASSERT_EQ(0x0000019eu, ImmutableString("distance(20B20B").mangledNameHash());
-    ASSERT_EQ(0x000000e8u, ImmutableString("distance(30B30B").mangledNameHash());
-    ASSERT_EQ(0x000000f1u, ImmutableString("dot(00B00B").mangledNameHash());
-    ASSERT_EQ(0x00000103u, ImmutableString("dot(10B10B").mangledNameHash());
+    ASSERT_EQ(0x00000152u, ImmutableString("distance(10B10B").mangledNameHash());
+    ASSERT_EQ(0x0000019cu, ImmutableString("distance(20B20B").mangledNameHash());
+    ASSERT_EQ(0x000000e7u, ImmutableString("distance(30B30B").mangledNameHash());
+    ASSERT_EQ(0x000000f0u, ImmutableString("dot(00B00B").mangledNameHash());
+    ASSERT_EQ(0x00000102u, ImmutableString("dot(10B10B").mangledNameHash());
     ASSERT_EQ(0x0000032bu, ImmutableString("dot(20B20B").mangledNameHash());
-    ASSERT_EQ(0x000000f3u, ImmutableString("dot(30B30B").mangledNameHash());
+    ASSERT_EQ(0x000000f2u, ImmutableString("dot(30B30B").mangledNameHash());
     ASSERT_EQ(0x00000279u, ImmutableString("cross(20B20B").mangledNameHash());
     ASSERT_EQ(0x000000a7u, ImmutableString("normalize(00B").mangledNameHash());
-    ASSERT_EQ(0x000001f0u, ImmutableString("normalize(10B").mangledNameHash());
-    ASSERT_EQ(0x000001d7u, ImmutableString("normalize(20B").mangledNameHash());
+    ASSERT_EQ(0x000001eeu, ImmutableString("normalize(10B").mangledNameHash());
+    ASSERT_EQ(0x000001d5u, ImmutableString("normalize(20B").mangledNameHash());
     ASSERT_EQ(0x00000337u, ImmutableString("normalize(30B").mangledNameHash());
     ASSERT_EQ(0x000002b0u, ImmutableString("faceforward(00B00B00B").mangledNameHash());
     ASSERT_EQ(0x000002bbu, ImmutableString("faceforward(10B10B10B").mangledNameHash());
     ASSERT_EQ(0x00000286u, ImmutableString("faceforward(20B20B20B").mangledNameHash());
     ASSERT_EQ(0x0000022eu, ImmutableString("faceforward(30B30B30B").mangledNameHash());
-    ASSERT_EQ(0x000000b3u, ImmutableString("reflect(00B00B").mangledNameHash());
-    ASSERT_EQ(0x000000b6u, ImmutableString("reflect(10B10B").mangledNameHash());
-    ASSERT_EQ(0x00000155u, ImmutableString("reflect(20B20B").mangledNameHash());
-    ASSERT_EQ(0x00000182u, ImmutableString("reflect(30B30B").mangledNameHash());
-    ASSERT_EQ(0x000001adu, ImmutableString("refract(00B00B00B").mangledNameHash());
-    ASSERT_EQ(0x000000dau, ImmutableString("refract(10B10B00B").mangledNameHash());
-    ASSERT_EQ(0x000001abu, ImmutableString("refract(20B20B00B").mangledNameHash());
+    ASSERT_EQ(0x000000b2u, ImmutableString("reflect(00B00B").mangledNameHash());
+    ASSERT_EQ(0x000000b5u, ImmutableString("reflect(10B10B").mangledNameHash());
+    ASSERT_EQ(0x00000153u, ImmutableString("reflect(20B20B").mangledNameHash());
+    ASSERT_EQ(0x00000180u, ImmutableString("reflect(30B30B").mangledNameHash());
+    ASSERT_EQ(0x000001abu, ImmutableString("refract(00B00B00B").mangledNameHash());
+    ASSERT_EQ(0x000000d9u, ImmutableString("refract(10B10B00B").mangledNameHash());
+    ASSERT_EQ(0x000001a9u, ImmutableString("refract(20B20B00B").mangledNameHash());
     ASSERT_EQ(0x0000021cu, ImmutableString("refract(30B30B00B").mangledNameHash());
     ASSERT_EQ(0x00000367u, ImmutableString("matrixCompMult(50B50B").mangledNameHash());
-    ASSERT_EQ(0x00000105u, ImmutableString("matrixCompMult(A0BA0B").mangledNameHash());
+    ASSERT_EQ(0x00000104u, ImmutableString("matrixCompMult(A0BA0B").mangledNameHash());
     ASSERT_EQ(0x0000027eu, ImmutableString("matrixCompMult(F0BF0B").mangledNameHash());
     ASSERT_EQ(0x00000227u, ImmutableString("matrixCompMult(90B90B").mangledNameHash());
-    ASSERT_EQ(0x000001eeu, ImmutableString("matrixCompMult(60B60B").mangledNameHash());
+    ASSERT_EQ(0x000001ecu, ImmutableString("matrixCompMult(60B60B").mangledNameHash());
     ASSERT_EQ(0x0000004du, ImmutableString("matrixCompMult(D0BD0B").mangledNameHash());
-    ASSERT_EQ(0x0000015eu, ImmutableString("matrixCompMult(70B70B").mangledNameHash());
-    ASSERT_EQ(0x000001fcu, ImmutableString("matrixCompMult(E0BE0B").mangledNameHash());
+    ASSERT_EQ(0x0000015cu, ImmutableString("matrixCompMult(70B70B").mangledNameHash());
+    ASSERT_EQ(0x000001fau, ImmutableString("matrixCompMult(E0BE0B").mangledNameHash());
     ASSERT_EQ(0x00000277u, ImmutableString("matrixCompMult(B0BB0B").mangledNameHash());
     ASSERT_EQ(0x00000341u, ImmutableString("outerProduct(10B10B").mangledNameHash());
-    ASSERT_EQ(0x00000131u, ImmutableString("outerProduct(20B20B").mangledNameHash());
+    ASSERT_EQ(0x00000130u, ImmutableString("outerProduct(20B20B").mangledNameHash());
     ASSERT_EQ(0x00000292u, ImmutableString("outerProduct(30B30B").mangledNameHash());
-    ASSERT_EQ(0x00000186u, ImmutableString("outerProduct(20B10B").mangledNameHash());
-    ASSERT_EQ(0x000000fdu, ImmutableString("outerProduct(10B20B").mangledNameHash());
-    ASSERT_EQ(0x00000140u, ImmutableString("outerProduct(30B10B").mangledNameHash());
+    ASSERT_EQ(0x00000184u, ImmutableString("outerProduct(20B10B").mangledNameHash());
+    ASSERT_EQ(0x000000fcu, ImmutableString("outerProduct(10B20B").mangledNameHash());
+    ASSERT_EQ(0x0000013fu, ImmutableString("outerProduct(30B10B").mangledNameHash());
     ASSERT_EQ(0x0000020bu, ImmutableString("outerProduct(10B30B").mangledNameHash());
-    ASSERT_EQ(0x00000183u, ImmutableString("outerProduct(30B20B").mangledNameHash());
+    ASSERT_EQ(0x00000181u, ImmutableString("outerProduct(30B20B").mangledNameHash());
     ASSERT_EQ(0x00000019u, ImmutableString("outerProduct(20B30B").mangledNameHash());
     ASSERT_EQ(0x00000012u, ImmutableString("transpose(50B").mangledNameHash());
     ASSERT_EQ(0x000002fdu, ImmutableString("transpose(A0B").mangledNameHash());
@@ -338,23 +338,23 @@
     ASSERT_EQ(0x000002a0u, ImmutableString("transpose(60B").mangledNameHash());
     ASSERT_EQ(0x0000032cu, ImmutableString("transpose(90B").mangledNameHash());
     ASSERT_EQ(0x0000002au, ImmutableString("transpose(70B").mangledNameHash());
-    ASSERT_EQ(0x000001b4u, ImmutableString("transpose(D0B").mangledNameHash());
+    ASSERT_EQ(0x000001b2u, ImmutableString("transpose(D0B").mangledNameHash());
     ASSERT_EQ(0x00000311u, ImmutableString("transpose(B0B").mangledNameHash());
-    ASSERT_EQ(0x00000278u, ImmutableString("transpose(E0B").mangledNameHash());
+    ASSERT_EQ(0x00000062u, ImmutableString("transpose(E0B").mangledNameHash());
     ASSERT_EQ(0x00000073u, ImmutableString("determinant(50B").mangledNameHash());
     ASSERT_EQ(0x0000000bu, ImmutableString("determinant(A0B").mangledNameHash());
     ASSERT_EQ(0x000002fcu, ImmutableString("determinant(F0B").mangledNameHash());
-    ASSERT_EQ(0x00000102u, ImmutableString("inverse(50B").mangledNameHash());
-    ASSERT_EQ(0x000001c2u, ImmutableString("inverse(A0B").mangledNameHash());
-    ASSERT_EQ(0x000001dbu, ImmutableString("inverse(F0B").mangledNameHash());
+    ASSERT_EQ(0x00000101u, ImmutableString("inverse(50B").mangledNameHash());
+    ASSERT_EQ(0x000001c0u, ImmutableString("inverse(A0B").mangledNameHash());
+    ASSERT_EQ(0x000001d9u, ImmutableString("inverse(F0B").mangledNameHash());
     ASSERT_EQ(0x000002ebu, ImmutableString("lessThan(10B10B").mangledNameHash());
     ASSERT_EQ(0x00000074u, ImmutableString("lessThan(20B20B").mangledNameHash());
-    ASSERT_EQ(0x000000c4u, ImmutableString("lessThan(30B30B").mangledNameHash());
-    ASSERT_EQ(0x00000125u, ImmutableString("lessThan(10D10D").mangledNameHash());
-    ASSERT_EQ(0x000000b5u, ImmutableString("lessThan(20D20D").mangledNameHash());
-    ASSERT_EQ(0x000001f3u, ImmutableString("lessThan(30D30D").mangledNameHash());
+    ASSERT_EQ(0x000000c3u, ImmutableString("lessThan(30B30B").mangledNameHash());
+    ASSERT_EQ(0x00000124u, ImmutableString("lessThan(10D10D").mangledNameHash());
+    ASSERT_EQ(0x000000b4u, ImmutableString("lessThan(20D20D").mangledNameHash());
+    ASSERT_EQ(0x000001f1u, ImmutableString("lessThan(30D30D").mangledNameHash());
     ASSERT_EQ(0x00000097u, ImmutableString("lessThan(10E10E").mangledNameHash());
-    ASSERT_EQ(0x00000062u, ImmutableString("lessThan(20E20E").mangledNameHash());
+    ASSERT_EQ(0x00000278u, ImmutableString("lessThan(20E20E").mangledNameHash());
     ASSERT_EQ(0x00000025u, ImmutableString("lessThan(30E30E").mangledNameHash());
     ASSERT_EQ(0x0000004eu, ImmutableString("lessThanEqual(10B10B").mangledNameHash());
     ASSERT_EQ(0x0000003cu, ImmutableString("lessThanEqual(20B20B").mangledNameHash());
@@ -364,27 +364,27 @@
     ASSERT_EQ(0x0000025eu, ImmutableString("lessThanEqual(30D30D").mangledNameHash());
     ASSERT_EQ(0x0000023du, ImmutableString("lessThanEqual(10E10E").mangledNameHash());
     ASSERT_EQ(0x00000293u, ImmutableString("lessThanEqual(20E20E").mangledNameHash());
-    ASSERT_EQ(0x000000cau, ImmutableString("lessThanEqual(30E30E").mangledNameHash());
+    ASSERT_EQ(0x000000c9u, ImmutableString("lessThanEqual(30E30E").mangledNameHash());
     ASSERT_EQ(0x00000377u, ImmutableString("greaterThan(10B10B").mangledNameHash());
     ASSERT_EQ(0x00000069u, ImmutableString("greaterThan(20B20B").mangledNameHash());
-    ASSERT_EQ(0x000000ebu, ImmutableString("greaterThan(30B30B").mangledNameHash());
-    ASSERT_EQ(0x000000ddu, ImmutableString("greaterThan(10D10D").mangledNameHash());
-    ASSERT_EQ(0x000000e9u, ImmutableString("greaterThan(20D20D").mangledNameHash());
-    ASSERT_EQ(0x000000dcu, ImmutableString("greaterThan(30D30D").mangledNameHash());
+    ASSERT_EQ(0x000000eau, ImmutableString("greaterThan(30B30B").mangledNameHash());
+    ASSERT_EQ(0x000000dcu, ImmutableString("greaterThan(10D10D").mangledNameHash());
+    ASSERT_EQ(0x000000e8u, ImmutableString("greaterThan(20D20D").mangledNameHash());
+    ASSERT_EQ(0x000000dbu, ImmutableString("greaterThan(30D30D").mangledNameHash());
     ASSERT_EQ(0x00000387u, ImmutableString("greaterThan(10E10E").mangledNameHash());
-    ASSERT_EQ(0x000001a6u, ImmutableString("greaterThan(20E20E").mangledNameHash());
-    ASSERT_EQ(0x000001e9u, ImmutableString("greaterThan(30E30E").mangledNameHash());
+    ASSERT_EQ(0x000001a4u, ImmutableString("greaterThan(20E20E").mangledNameHash());
+    ASSERT_EQ(0x000001e7u, ImmutableString("greaterThan(30E30E").mangledNameHash());
     ASSERT_EQ(0x00000328u, ImmutableString("greaterThanEqual(10B10B").mangledNameHash());
     ASSERT_EQ(0x00000222u, ImmutableString("greaterThanEqual(20B20B").mangledNameHash());
     ASSERT_EQ(0x000002dau, ImmutableString("greaterThanEqual(30B30B").mangledNameHash());
-    ASSERT_EQ(0x00000161u, ImmutableString("greaterThanEqual(10D10D").mangledNameHash());
+    ASSERT_EQ(0x0000015fu, ImmutableString("greaterThanEqual(10D10D").mangledNameHash());
     ASSERT_EQ(0x00000016u, ImmutableString("greaterThanEqual(20D20D").mangledNameHash());
     ASSERT_EQ(0x00000351u, ImmutableString("greaterThanEqual(30D30D").mangledNameHash());
     ASSERT_EQ(0x00000263u, ImmutableString("greaterThanEqual(10E10E").mangledNameHash());
-    ASSERT_EQ(0x00000124u, ImmutableString("greaterThanEqual(20E20E").mangledNameHash());
+    ASSERT_EQ(0x00000123u, ImmutableString("greaterThanEqual(20E20E").mangledNameHash());
     ASSERT_EQ(0x00000249u, ImmutableString("greaterThanEqual(30E30E").mangledNameHash());
     ASSERT_EQ(0x0000036du, ImmutableString("equal(10B10B").mangledNameHash());
-    ASSERT_EQ(0x0000017bu, ImmutableString("equal(20B20B").mangledNameHash());
+    ASSERT_EQ(0x00000179u, ImmutableString("equal(20B20B").mangledNameHash());
     ASSERT_EQ(0x0000036au, ImmutableString("equal(30B30B").mangledNameHash());
     ASSERT_EQ(0x00000052u, ImmutableString("equal(10D10D").mangledNameHash());
     ASSERT_EQ(0x000002b8u, ImmutableString("equal(20D20D").mangledNameHash());
@@ -392,183 +392,183 @@
     ASSERT_EQ(0x0000035bu, ImmutableString("equal(10E10E").mangledNameHash());
     ASSERT_EQ(0x0000021fu, ImmutableString("equal(20E20E").mangledNameHash());
     ASSERT_EQ(0x0000029au, ImmutableString("equal(30E30E").mangledNameHash());
-    ASSERT_EQ(0x00000159u, ImmutableString("equal(10F10F").mangledNameHash());
+    ASSERT_EQ(0x00000157u, ImmutableString("equal(10F10F").mangledNameHash());
     ASSERT_EQ(0x00000368u, ImmutableString("equal(20F20F").mangledNameHash());
     ASSERT_EQ(0x000002deu, ImmutableString("equal(30F30F").mangledNameHash());
-    ASSERT_EQ(0x000001f7u, ImmutableString("notEqual(10B10B").mangledNameHash());
+    ASSERT_EQ(0x000001f5u, ImmutableString("notEqual(10B10B").mangledNameHash());
     ASSERT_EQ(0x00000352u, ImmutableString("notEqual(20B20B").mangledNameHash());
-    ASSERT_EQ(0x00000192u, ImmutableString("notEqual(30B30B").mangledNameHash());
+    ASSERT_EQ(0x00000190u, ImmutableString("notEqual(30B30B").mangledNameHash());
     ASSERT_EQ(0x000002acu, ImmutableString("notEqual(10D10D").mangledNameHash());
     ASSERT_EQ(0x00000007u, ImmutableString("notEqual(20D20D").mangledNameHash());
-    ASSERT_EQ(0x000000d9u, ImmutableString("notEqual(30D30D").mangledNameHash());
+    ASSERT_EQ(0x000000d8u, ImmutableString("notEqual(30D30D").mangledNameHash());
     ASSERT_EQ(0x00000365u, ImmutableString("notEqual(10E10E").mangledNameHash());
-    ASSERT_EQ(0x000001c0u, ImmutableString("notEqual(20E20E").mangledNameHash());
+    ASSERT_EQ(0x000001beu, ImmutableString("notEqual(20E20E").mangledNameHash());
     ASSERT_EQ(0x0000023bu, ImmutableString("notEqual(30E30E").mangledNameHash());
     ASSERT_EQ(0x0000032fu, ImmutableString("notEqual(10F10F").mangledNameHash());
-    ASSERT_EQ(0x0000018au, ImmutableString("notEqual(20F20F").mangledNameHash());
+    ASSERT_EQ(0x00000188u, ImmutableString("notEqual(20F20F").mangledNameHash());
     ASSERT_EQ(0x000002e1u, ImmutableString("notEqual(30F30F").mangledNameHash());
     ASSERT_EQ(0x00000254u, ImmutableString("any(10F").mangledNameHash());
-    ASSERT_EQ(0x000001feu, ImmutableString("any(20F").mangledNameHash());
-    ASSERT_EQ(0x000000e7u, ImmutableString("any(30F").mangledNameHash());
+    ASSERT_EQ(0x000001fcu, ImmutableString("any(20F").mangledNameHash());
+    ASSERT_EQ(0x000000e6u, ImmutableString("any(30F").mangledNameHash());
     ASSERT_EQ(0x0000027au, ImmutableString("all(10F").mangledNameHash());
     ASSERT_EQ(0x000002ceu, ImmutableString("all(20F").mangledNameHash());
     ASSERT_EQ(0x00000049u, ImmutableString("all(30F").mangledNameHash());
     ASSERT_EQ(0x00000095u, ImmutableString("not(10F").mangledNameHash());
-    ASSERT_EQ(0x0000012au, ImmutableString("not(20F").mangledNameHash());
+    ASSERT_EQ(0x00000129u, ImmutableString("not(20F").mangledNameHash());
     ASSERT_EQ(0x0000032du, ImmutableString("not(30F").mangledNameHash());
     ASSERT_EQ(0x000002dfu, ImmutableString("bitfieldExtract(00D00D00D").mangledNameHash());
-    ASSERT_EQ(0x0000018cu, ImmutableString("bitfieldExtract(10D00D00D").mangledNameHash());
-    ASSERT_EQ(0x000001f5u, ImmutableString("bitfieldExtract(20D00D00D").mangledNameHash());
+    ASSERT_EQ(0x0000018au, ImmutableString("bitfieldExtract(10D00D00D").mangledNameHash());
+    ASSERT_EQ(0x000001f3u, ImmutableString("bitfieldExtract(20D00D00D").mangledNameHash());
     ASSERT_EQ(0x000002c2u, ImmutableString("bitfieldExtract(30D00D00D").mangledNameHash());
-    ASSERT_EQ(0x000001f9u, ImmutableString("bitfieldExtract(00E00D00D").mangledNameHash());
-    ASSERT_EQ(0x000000e0u, ImmutableString("bitfieldExtract(10E00D00D").mangledNameHash());
+    ASSERT_EQ(0x000001f7u, ImmutableString("bitfieldExtract(00E00D00D").mangledNameHash());
+    ASSERT_EQ(0x000000dfu, ImmutableString("bitfieldExtract(10E00D00D").mangledNameHash());
     ASSERT_EQ(0x000002a5u, ImmutableString("bitfieldExtract(20E00D00D").mangledNameHash());
-    ASSERT_EQ(0x0000015fu, ImmutableString("bitfieldExtract(30E00D00D").mangledNameHash());
+    ASSERT_EQ(0x0000015du, ImmutableString("bitfieldExtract(30E00D00D").mangledNameHash());
     ASSERT_EQ(0x0000001au, ImmutableString("bitfieldInsert(00D00D00D00D").mangledNameHash());
     ASSERT_EQ(0x00000339u, ImmutableString("bitfieldInsert(10D10D00D00D").mangledNameHash());
     ASSERT_EQ(0x00000042u, ImmutableString("bitfieldInsert(20D20D00D00D").mangledNameHash());
-    ASSERT_EQ(0x000000d5u, ImmutableString("bitfieldInsert(30D30D00D00D").mangledNameHash());
+    ASSERT_EQ(0x000000d4u, ImmutableString("bitfieldInsert(30D30D00D00D").mangledNameHash());
     ASSERT_EQ(0x00000067u, ImmutableString("bitfieldInsert(00E00E00D00D").mangledNameHash());
     ASSERT_EQ(0x000002edu, ImmutableString("bitfieldInsert(10E10E00D00D").mangledNameHash());
     ASSERT_EQ(0x0000021du, ImmutableString("bitfieldInsert(20E20E00D00D").mangledNameHash());
     ASSERT_EQ(0x0000037fu, ImmutableString("bitfieldInsert(30E30E00D00D").mangledNameHash());
-    ASSERT_EQ(0x0000015bu, ImmutableString("bitfieldReverse(00D").mangledNameHash());
+    ASSERT_EQ(0x00000159u, ImmutableString("bitfieldReverse(00D").mangledNameHash());
     ASSERT_EQ(0x00000275u, ImmutableString("bitfieldReverse(10D").mangledNameHash());
     ASSERT_EQ(0x0000004fu, ImmutableString("bitfieldReverse(20D").mangledNameHash());
-    ASSERT_EQ(0x0000016fu, ImmutableString("bitfieldReverse(30D").mangledNameHash());
-    ASSERT_EQ(0x0000015cu, ImmutableString("bitfieldReverse(00E").mangledNameHash());
+    ASSERT_EQ(0x0000016du, ImmutableString("bitfieldReverse(30D").mangledNameHash());
+    ASSERT_EQ(0x0000015au, ImmutableString("bitfieldReverse(00E").mangledNameHash());
     ASSERT_EQ(0x00000274u, ImmutableString("bitfieldReverse(10E").mangledNameHash());
     ASSERT_EQ(0x00000050u, ImmutableString("bitfieldReverse(20E").mangledNameHash());
-    ASSERT_EQ(0x0000016eu, ImmutableString("bitfieldReverse(30E").mangledNameHash());
+    ASSERT_EQ(0x0000016cu, ImmutableString("bitfieldReverse(30E").mangledNameHash());
     ASSERT_EQ(0x00000023u, ImmutableString("bitCount(00D").mangledNameHash());
     ASSERT_EQ(0x00000299u, ImmutableString("bitCount(10D").mangledNameHash());
-    ASSERT_EQ(0x00000198u, ImmutableString("bitCount(20D").mangledNameHash());
+    ASSERT_EQ(0x00000196u, ImmutableString("bitCount(20D").mangledNameHash());
     ASSERT_EQ(0x0000007au, ImmutableString("bitCount(30D").mangledNameHash());
-    ASSERT_EQ(0x000000f4u, ImmutableString("bitCount(00E").mangledNameHash());
-    ASSERT_EQ(0x00000150u, ImmutableString("bitCount(10E").mangledNameHash());
+    ASSERT_EQ(0x000000f3u, ImmutableString("bitCount(00E").mangledNameHash());
+    ASSERT_EQ(0x0000014eu, ImmutableString("bitCount(10E").mangledNameHash());
     ASSERT_EQ(0x000002b6u, ImmutableString("bitCount(20E").mangledNameHash());
-    ASSERT_EQ(0x00000134u, ImmutableString("bitCount(30E").mangledNameHash());
+    ASSERT_EQ(0x00000133u, ImmutableString("bitCount(30E").mangledNameHash());
     ASSERT_EQ(0x000002d7u, ImmutableString("findLSB(00D").mangledNameHash());
-    ASSERT_EQ(0x000001aeu, ImmutableString("findLSB(10D").mangledNameHash());
+    ASSERT_EQ(0x000001acu, ImmutableString("findLSB(10D").mangledNameHash());
     ASSERT_EQ(0x0000008fu, ImmutableString("findLSB(20D").mangledNameHash());
     ASSERT_EQ(0x000002b4u, ImmutableString("findLSB(30D").mangledNameHash());
     ASSERT_EQ(0x000002d6u, ImmutableString("findLSB(00E").mangledNameHash());
-    ASSERT_EQ(0x000001afu, ImmutableString("findLSB(10E").mangledNameHash());
+    ASSERT_EQ(0x000001adu, ImmutableString("findLSB(10E").mangledNameHash());
     ASSERT_EQ(0x0000008eu, ImmutableString("findLSB(20E").mangledNameHash());
     ASSERT_EQ(0x000002b5u, ImmutableString("findLSB(30E").mangledNameHash());
     ASSERT_EQ(0x000002a1u, ImmutableString("findMSB(00D").mangledNameHash());
-    ASSERT_EQ(0x000000f0u, ImmutableString("findMSB(10D").mangledNameHash());
-    ASSERT_EQ(0x0000012cu, ImmutableString("findMSB(20D").mangledNameHash());
+    ASSERT_EQ(0x000000efu, ImmutableString("findMSB(10D").mangledNameHash());
+    ASSERT_EQ(0x0000012bu, ImmutableString("findMSB(20D").mangledNameHash());
     ASSERT_EQ(0x00000246u, ImmutableString("findMSB(30D").mangledNameHash());
     ASSERT_EQ(0x000002a4u, ImmutableString("findMSB(00E").mangledNameHash());
-    ASSERT_EQ(0x000000efu, ImmutableString("findMSB(10E").mangledNameHash());
-    ASSERT_EQ(0x0000012du, ImmutableString("findMSB(20E").mangledNameHash());
+    ASSERT_EQ(0x000000eeu, ImmutableString("findMSB(10E").mangledNameHash());
+    ASSERT_EQ(0x0000012cu, ImmutableString("findMSB(20E").mangledNameHash());
     ASSERT_EQ(0x00000245u, ImmutableString("findMSB(30E").mangledNameHash());
     ASSERT_EQ(0x00000223u, ImmutableString("uaddCarry(00E00E00E").mangledNameHash());
     ASSERT_EQ(0x0000034cu, ImmutableString("uaddCarry(10E10E10E").mangledNameHash());
     ASSERT_EQ(0x00000371u, ImmutableString("uaddCarry(20E20E20E").mangledNameHash());
-    ASSERT_EQ(0x000001a0u, ImmutableString("uaddCarry(30E30E30E").mangledNameHash());
-    ASSERT_EQ(0x000001cau, ImmutableString("usubBorrow(00E00E00E").mangledNameHash());
+    ASSERT_EQ(0x0000019eu, ImmutableString("uaddCarry(30E30E30E").mangledNameHash());
+    ASSERT_EQ(0x000001c8u, ImmutableString("usubBorrow(00E00E00E").mangledNameHash());
     ASSERT_EQ(0x0000036cu, ImmutableString("usubBorrow(10E10E10E").mangledNameHash());
-    ASSERT_EQ(0x000000f7u, ImmutableString("usubBorrow(20E20E20E").mangledNameHash());
+    ASSERT_EQ(0x000000f6u, ImmutableString("usubBorrow(20E20E20E").mangledNameHash());
     ASSERT_EQ(0x0000026bu, ImmutableString("usubBorrow(30E30E30E").mangledNameHash());
     ASSERT_EQ(0x0000030eu, ImmutableString("umulExtended(00E00E00E00E").mangledNameHash());
-    ASSERT_EQ(0x00000187u, ImmutableString("umulExtended(10E10E10E10E").mangledNameHash());
+    ASSERT_EQ(0x00000185u, ImmutableString("umulExtended(10E10E10E10E").mangledNameHash());
     ASSERT_EQ(0x000002b1u, ImmutableString("umulExtended(20E20E20E20E").mangledNameHash());
     ASSERT_EQ(0x0000022du, ImmutableString("umulExtended(30E30E30E30E").mangledNameHash());
-    ASSERT_EQ(0x000001c7u, ImmutableString("imulExtended(00D00D00D00D").mangledNameHash());
+    ASSERT_EQ(0x000001c5u, ImmutableString("imulExtended(00D00D00D00D").mangledNameHash());
     ASSERT_EQ(0x00000085u, ImmutableString("imulExtended(10D10D10D10D").mangledNameHash());
-    ASSERT_EQ(0x000000e6u, ImmutableString("imulExtended(20D20D20D20D").mangledNameHash());
+    ASSERT_EQ(0x000000e5u, ImmutableString("imulExtended(20D20D20D20D").mangledNameHash());
     ASSERT_EQ(0x00000027u, ImmutableString("imulExtended(30D30D30D30D").mangledNameHash());
     ASSERT_EQ(0x00000094u, ImmutableString("texture2D(00I10B").mangledNameHash());
-    ASSERT_EQ(0x00000128u, ImmutableString("texture2DProj(00I20B").mangledNameHash());
+    ASSERT_EQ(0x00000127u, ImmutableString("texture2DProj(00I20B").mangledNameHash());
     ASSERT_EQ(0x00000238u, ImmutableString("texture2DProj(00I30B").mangledNameHash());
     ASSERT_EQ(0x0000020cu, ImmutableString("textureCube(00K20B").mangledNameHash());
     ASSERT_EQ(0x0000033fu, ImmutableString("texture2D(00M10B").mangledNameHash());
     ASSERT_EQ(0x000002a8u, ImmutableString("texture2DProj(00M20B").mangledNameHash());
     ASSERT_EQ(0x000002adu, ImmutableString("texture2DProj(00M30B").mangledNameHash());
-    ASSERT_EQ(0x000000e5u, ImmutableString("texture2DRect(00O10B").mangledNameHash());
+    ASSERT_EQ(0x000000e4u, ImmutableString("texture2DRect(00O10B").mangledNameHash());
     ASSERT_EQ(0x0000039cu, ImmutableString("texture2DRectProj(00O20B").mangledNameHash());
-    ASSERT_EQ(0x00000108u, ImmutableString("texture2DRectProj(00O30B").mangledNameHash());
+    ASSERT_EQ(0x00000107u, ImmutableString("texture2DRectProj(00O30B").mangledNameHash());
     ASSERT_EQ(0x0000009cu, ImmutableString("texture(00O10B").mangledNameHash());
-    ASSERT_EQ(0x000000fbu, ImmutableString("textureProj(00O20B").mangledNameHash());
+    ASSERT_EQ(0x000000fau, ImmutableString("textureProj(00O20B").mangledNameHash());
     ASSERT_EQ(0x0000021au, ImmutableString("textureProj(00O30B").mangledNameHash());
     ASSERT_EQ(0x00000066u, ImmutableString("texture2DGradEXT(00I10B10B10B").mangledNameHash());
     ASSERT_EQ(0x000002ffu, ImmutableString("texture2DProjGradEXT(00I20B10B10B").mangledNameHash());
     ASSERT_EQ(0x0000006cu, ImmutableString("texture2DProjGradEXT(00I30B10B10B").mangledNameHash());
-    ASSERT_EQ(0x000001d0u, ImmutableString("textureCubeGradEXT(00K20B20B20B").mangledNameHash());
-    ASSERT_EQ(0x000001e6u, ImmutableString("texture2D(00I10B00B").mangledNameHash());
+    ASSERT_EQ(0x000001ceu, ImmutableString("textureCubeGradEXT(00K20B20B20B").mangledNameHash());
+    ASSERT_EQ(0x000001e4u, ImmutableString("texture2D(00I10B00B").mangledNameHash());
     ASSERT_EQ(0x000002d5u, ImmutableString("texture2DProj(00I20B00B").mangledNameHash());
-    ASSERT_EQ(0x000001cfu, ImmutableString("texture2DProj(00I30B00B").mangledNameHash());
+    ASSERT_EQ(0x000001cdu, ImmutableString("texture2DProj(00I30B00B").mangledNameHash());
     ASSERT_EQ(0x0000032au, ImmutableString("textureCube(00K20B00B").mangledNameHash());
     ASSERT_EQ(0x0000027du, ImmutableString("dFdx(00B").mangledNameHash());
-    ASSERT_EQ(0x0000016cu, ImmutableString("dFdx(10B").mangledNameHash());
-    ASSERT_EQ(0x0000011au, ImmutableString("dFdx(20B").mangledNameHash());
+    ASSERT_EQ(0x0000016au, ImmutableString("dFdx(10B").mangledNameHash());
+    ASSERT_EQ(0x00000119u, ImmutableString("dFdx(20B").mangledNameHash());
     ASSERT_EQ(0x00000010u, ImmutableString("dFdx(30B").mangledNameHash());
     ASSERT_EQ(0x00000389u, ImmutableString("dFdy(00B").mangledNameHash());
-    ASSERT_EQ(0x0000013fu, ImmutableString("dFdy(10B").mangledNameHash());
-    ASSERT_EQ(0x00000196u, ImmutableString("dFdy(20B").mangledNameHash());
+    ASSERT_EQ(0x0000013eu, ImmutableString("dFdy(10B").mangledNameHash());
+    ASSERT_EQ(0x00000194u, ImmutableString("dFdy(20B").mangledNameHash());
     ASSERT_EQ(0x000002cau, ImmutableString("dFdy(30B").mangledNameHash());
-    ASSERT_EQ(0x0000013du, ImmutableString("fwidth(00B").mangledNameHash());
-    ASSERT_EQ(0x000000d7u, ImmutableString("fwidth(10B").mangledNameHash());
+    ASSERT_EQ(0x0000013cu, ImmutableString("fwidth(00B").mangledNameHash());
+    ASSERT_EQ(0x000000d6u, ImmutableString("fwidth(10B").mangledNameHash());
     ASSERT_EQ(0x00000312u, ImmutableString("fwidth(20B").mangledNameHash());
     ASSERT_EQ(0x0000024au, ImmutableString("fwidth(30B").mangledNameHash());
     ASSERT_EQ(0x000002c9u, ImmutableString("texture2DLodEXT(00I10B00B").mangledNameHash());
     ASSERT_EQ(0x000002e0u, ImmutableString("texture2DProjLodEXT(00I20B00B").mangledNameHash());
-    ASSERT_EQ(0x00000194u, ImmutableString("texture2DProjLodEXT(00I30B00B").mangledNameHash());
+    ASSERT_EQ(0x00000192u, ImmutableString("texture2DProjLodEXT(00I30B00B").mangledNameHash());
     ASSERT_EQ(0x00000349u, ImmutableString("textureCubeLodEXT(00K20B00B").mangledNameHash());
-    ASSERT_EQ(0x000001b3u, ImmutableString("texture3D(00J20B").mangledNameHash());
+    ASSERT_EQ(0x000001b1u, ImmutableString("texture3D(00J20B").mangledNameHash());
     ASSERT_EQ(0x00000276u, ImmutableString("texture3DProj(00J30B").mangledNameHash());
     ASSERT_EQ(0x00000233u, ImmutableString("texture3D(00J20B00B").mangledNameHash());
     ASSERT_EQ(0x0000025bu, ImmutableString("texture3DProj(00J30B00B").mangledNameHash());
     ASSERT_EQ(0x000003a6u, ImmutableString("texture3DLod(00J20B00B").mangledNameHash());
-    ASSERT_EQ(0x00000129u, ImmutableString("texture3DProjLod(00J30B00B").mangledNameHash());
+    ASSERT_EQ(0x00000128u, ImmutableString("texture3DProjLod(00J30B00B").mangledNameHash());
     ASSERT_EQ(0x0000028cu, ImmutableString("texture2DLod(00I10B00B").mangledNameHash());
-    ASSERT_EQ(0x00000106u, ImmutableString("texture2DProjLod(00I20B00B").mangledNameHash());
+    ASSERT_EQ(0x00000105u, ImmutableString("texture2DProjLod(00I20B00B").mangledNameHash());
     ASSERT_EQ(0x0000036fu, ImmutableString("texture2DProjLod(00I30B00B").mangledNameHash());
     ASSERT_EQ(0x00000391u, ImmutableString("textureCubeLod(00K20B00B").mangledNameHash());
-    ASSERT_EQ(0x000001d1u, ImmutableString("texture(00I10B").mangledNameHash());
+    ASSERT_EQ(0x000001cfu, ImmutableString("texture(00I10B").mangledNameHash());
     ASSERT_EQ(0x00000269u, ImmutableString("texture(00R10B").mangledNameHash());
     ASSERT_EQ(0x000002f9u, ImmutableString("texture(00X10B").mangledNameHash());
-    ASSERT_EQ(0x00000118u, ImmutableString("texture(00J20B").mangledNameHash());
-    ASSERT_EQ(0x00000185u, ImmutableString("texture(00S20B").mangledNameHash());
+    ASSERT_EQ(0x00000117u, ImmutableString("texture(00J20B").mangledNameHash());
+    ASSERT_EQ(0x00000183u, ImmutableString("texture(00S20B").mangledNameHash());
     ASSERT_EQ(0x00000090u, ImmutableString("texture(00Y20B").mangledNameHash());
     ASSERT_EQ(0x0000031fu, ImmutableString("texture(00K20B").mangledNameHash());
     ASSERT_EQ(0x00000089u, ImmutableString("texture(00T20B").mangledNameHash());
     ASSERT_EQ(0x00000044u, ImmutableString("texture(00Z20B").mangledNameHash());
-    ASSERT_EQ(0x00000121u, ImmutableString("texture(00L20B").mangledNameHash());
-    ASSERT_EQ(0x000000deu, ImmutableString("texture(00U20B").mangledNameHash());
+    ASSERT_EQ(0x00000120u, ImmutableString("texture(00L20B").mangledNameHash());
+    ASSERT_EQ(0x000000ddu, ImmutableString("texture(00U20B").mangledNameHash());
     ASSERT_EQ(0x00000235u, ImmutableString("texture(00a20B").mangledNameHash());
     ASSERT_EQ(0x0000002fu, ImmutableString("texture(00d20B").mangledNameHash());
     ASSERT_EQ(0x00000358u, ImmutableString("texture(00e30B").mangledNameHash());
     ASSERT_EQ(0x00000331u, ImmutableString("texture(00f30B").mangledNameHash());
     ASSERT_EQ(0x00000059u, ImmutableString("textureProj(00I20B").mangledNameHash());
     ASSERT_EQ(0x00000384u, ImmutableString("textureProj(00R20B").mangledNameHash());
-    ASSERT_EQ(0x0000011bu, ImmutableString("textureProj(00X20B").mangledNameHash());
+    ASSERT_EQ(0x0000011au, ImmutableString("textureProj(00X20B").mangledNameHash());
     ASSERT_EQ(0x00000213u, ImmutableString("textureProj(00I30B").mangledNameHash());
     ASSERT_EQ(0x00000366u, ImmutableString("textureProj(00R30B").mangledNameHash());
     ASSERT_EQ(0x0000037cu, ImmutableString("textureProj(00X30B").mangledNameHash());
-    ASSERT_EQ(0x00000142u, ImmutableString("textureProj(00J30B").mangledNameHash());
+    ASSERT_EQ(0x00000141u, ImmutableString("textureProj(00J30B").mangledNameHash());
     ASSERT_EQ(0x000002c7u, ImmutableString("textureProj(00S30B").mangledNameHash());
-    ASSERT_EQ(0x00000197u, ImmutableString("textureProj(00Y30B").mangledNameHash());
+    ASSERT_EQ(0x00000195u, ImmutableString("textureProj(00Y30B").mangledNameHash());
     ASSERT_EQ(0x000002fau, ImmutableString("textureProj(00d30B").mangledNameHash());
-    ASSERT_EQ(0x00000160u, ImmutableString("textureLod(00I10B00B").mangledNameHash());
+    ASSERT_EQ(0x0000015eu, ImmutableString("textureLod(00I10B00B").mangledNameHash());
     ASSERT_EQ(0x00000281u, ImmutableString("textureLod(00R10B00B").mangledNameHash());
     ASSERT_EQ(0x00000294u, ImmutableString("textureLod(00X10B00B").mangledNameHash());
-    ASSERT_EQ(0x000000b8u, ImmutableString("textureLod(00J20B00B").mangledNameHash());
+    ASSERT_EQ(0x000000b7u, ImmutableString("textureLod(00J20B00B").mangledNameHash());
     ASSERT_EQ(0x00000304u, ImmutableString("textureLod(00S20B00B").mangledNameHash());
     ASSERT_EQ(0x00000035u, ImmutableString("textureLod(00Y20B00B").mangledNameHash());
     ASSERT_EQ(0x00000397u, ImmutableString("textureLod(00K20B00B").mangledNameHash());
-    ASSERT_EQ(0x000000f6u, ImmutableString("textureLod(00T20B00B").mangledNameHash());
+    ASSERT_EQ(0x000000f5u, ImmutableString("textureLod(00T20B00B").mangledNameHash());
     ASSERT_EQ(0x0000029du, ImmutableString("textureLod(00Z20B00B").mangledNameHash());
     ASSERT_EQ(0x00000009u, ImmutableString("textureLod(00L20B00B").mangledNameHash());
     ASSERT_EQ(0x0000036bu, ImmutableString("textureLod(00U20B00B").mangledNameHash());
     ASSERT_EQ(0x00000253u, ImmutableString("textureLod(00a20B00B").mangledNameHash());
-    ASSERT_EQ(0x00000146u, ImmutableString("textureLod(00d20B00B").mangledNameHash());
-    ASSERT_EQ(0x000000beu, ImmutableString("textureSize(00I00D").mangledNameHash());
+    ASSERT_EQ(0x00000145u, ImmutableString("textureLod(00d20B00B").mangledNameHash());
+    ASSERT_EQ(0x000000bdu, ImmutableString("textureSize(00I00D").mangledNameHash());
     ASSERT_EQ(0x000000a5u, ImmutableString("textureSize(00R00D").mangledNameHash());
     ASSERT_EQ(0x00000376u, ImmutableString("textureSize(00X00D").mangledNameHash());
-    ASSERT_EQ(0x000001bau, ImmutableString("textureSize(00J00D").mangledNameHash());
+    ASSERT_EQ(0x000001b8u, ImmutableString("textureSize(00J00D").mangledNameHash());
     ASSERT_EQ(0x00000326u, ImmutableString("textureSize(00S00D").mangledNameHash());
     ASSERT_EQ(0x0000002du, ImmutableString("textureSize(00Y00D").mangledNameHash());
     ASSERT_EQ(0x00000028u, ImmutableString("textureSize(00K00D").mangledNameHash());
@@ -576,18 +576,18 @@
     ASSERT_EQ(0x000002c0u, ImmutableString("textureSize(00Z00D").mangledNameHash());
     ASSERT_EQ(0x000002bcu, ImmutableString("textureSize(00L00D").mangledNameHash());
     ASSERT_EQ(0x000002dbu, ImmutableString("textureSize(00U00D").mangledNameHash());
-    ASSERT_EQ(0x000000dfu, ImmutableString("textureSize(00a00D").mangledNameHash());
+    ASSERT_EQ(0x000000deu, ImmutableString("textureSize(00a00D").mangledNameHash());
     ASSERT_EQ(0x00000346u, ImmutableString("textureSize(00d00D").mangledNameHash());
-    ASSERT_EQ(0x000001bfu, ImmutableString("textureSize(00e00D").mangledNameHash());
+    ASSERT_EQ(0x000001bdu, ImmutableString("textureSize(00e00D").mangledNameHash());
     ASSERT_EQ(0x000002f3u, ImmutableString("textureSize(00f00D").mangledNameHash());
     ASSERT_EQ(0x0000007bu, ImmutableString("textureProjLod(00I20B00B").mangledNameHash());
-    ASSERT_EQ(0x000000d8u, ImmutableString("textureProjLod(00R20B00B").mangledNameHash());
+    ASSERT_EQ(0x000000d7u, ImmutableString("textureProjLod(00R20B00B").mangledNameHash());
     ASSERT_EQ(0x0000022au, ImmutableString("textureProjLod(00X20B00B").mangledNameHash());
-    ASSERT_EQ(0x000001acu, ImmutableString("textureProjLod(00I30B00B").mangledNameHash());
-    ASSERT_EQ(0x000001ddu, ImmutableString("textureProjLod(00R30B00B").mangledNameHash());
+    ASSERT_EQ(0x000001aau, ImmutableString("textureProjLod(00I30B00B").mangledNameHash());
+    ASSERT_EQ(0x000001dbu, ImmutableString("textureProjLod(00R30B00B").mangledNameHash());
     ASSERT_EQ(0x0000002cu, ImmutableString("textureProjLod(00X30B00B").mangledNameHash());
-    ASSERT_EQ(0x000000e4u, ImmutableString("textureProjLod(00J30B00B").mangledNameHash());
-    ASSERT_EQ(0x000000bau, ImmutableString("textureProjLod(00S30B00B").mangledNameHash());
+    ASSERT_EQ(0x000000e3u, ImmutableString("textureProjLod(00J30B00B").mangledNameHash());
+    ASSERT_EQ(0x000000b9u, ImmutableString("textureProjLod(00S30B00B").mangledNameHash());
     ASSERT_EQ(0x00000305u, ImmutableString("textureProjLod(00Y30B00B").mangledNameHash());
     ASSERT_EQ(0x00000228u, ImmutableString("textureProjLod(00d30B00B").mangledNameHash());
     ASSERT_EQ(0x0000005au, ImmutableString("texelFetch(00I10D00D").mangledNameHash());
@@ -596,69 +596,69 @@
     ASSERT_EQ(0x00000393u, ImmutableString("texelFetch(00J20D00D").mangledNameHash());
     ASSERT_EQ(0x0000024du, ImmutableString("texelFetch(00S20D00D").mangledNameHash());
     ASSERT_EQ(0x0000006bu, ImmutableString("texelFetch(00Y20D00D").mangledNameHash());
-    ASSERT_EQ(0x0000019au, ImmutableString("texelFetch(00L20D00D").mangledNameHash());
-    ASSERT_EQ(0x00000148u, ImmutableString("texelFetch(00U20D00D").mangledNameHash());
+    ASSERT_EQ(0x00000198u, ImmutableString("texelFetch(00L20D00D").mangledNameHash());
+    ASSERT_EQ(0x00000147u, ImmutableString("texelFetch(00U20D00D").mangledNameHash());
     ASSERT_EQ(0x00000038u, ImmutableString("texelFetch(00a20D00D").mangledNameHash());
     ASSERT_EQ(0x00000021u, ImmutableString("textureGrad(00I10B10B10B").mangledNameHash());
     ASSERT_EQ(0x0000033cu, ImmutableString("textureGrad(00R10B10B10B").mangledNameHash());
     ASSERT_EQ(0x00000247u, ImmutableString("textureGrad(00X10B10B10B").mangledNameHash());
-    ASSERT_EQ(0x000001b6u, ImmutableString("textureGrad(00J20B20B20B").mangledNameHash());
-    ASSERT_EQ(0x0000010au, ImmutableString("textureGrad(00S20B20B20B").mangledNameHash());
-    ASSERT_EQ(0x00000113u, ImmutableString("textureGrad(00Y20B20B20B").mangledNameHash());
+    ASSERT_EQ(0x000001b4u, ImmutableString("textureGrad(00J20B20B20B").mangledNameHash());
+    ASSERT_EQ(0x00000109u, ImmutableString("textureGrad(00S20B20B20B").mangledNameHash());
+    ASSERT_EQ(0x00000112u, ImmutableString("textureGrad(00Y20B20B20B").mangledNameHash());
     ASSERT_EQ(0x0000024bu, ImmutableString("textureGrad(00K20B20B20B").mangledNameHash());
     ASSERT_EQ(0x0000035eu, ImmutableString("textureGrad(00T20B20B20B").mangledNameHash());
-    ASSERT_EQ(0x00000158u, ImmutableString("textureGrad(00Z20B20B20B").mangledNameHash());
+    ASSERT_EQ(0x00000156u, ImmutableString("textureGrad(00Z20B20B20B").mangledNameHash());
     ASSERT_EQ(0x0000006du, ImmutableString("textureGrad(00d20B10B10B").mangledNameHash());
     ASSERT_EQ(0x00000242u, ImmutableString("textureGrad(00e30B20B20B").mangledNameHash());
     ASSERT_EQ(0x0000033bu, ImmutableString("textureGrad(00L20B10B10B").mangledNameHash());
-    ASSERT_EQ(0x0000019fu, ImmutableString("textureGrad(00U20B10B10B").mangledNameHash());
-    ASSERT_EQ(0x000001a7u, ImmutableString("textureGrad(00a20B10B10B").mangledNameHash());
+    ASSERT_EQ(0x0000019du, ImmutableString("textureGrad(00U20B10B10B").mangledNameHash());
+    ASSERT_EQ(0x000001a5u, ImmutableString("textureGrad(00a20B10B10B").mangledNameHash());
     ASSERT_EQ(0x00000237u, ImmutableString("textureGrad(00f30B10B10B").mangledNameHash());
     ASSERT_EQ(0x0000033du, ImmutableString("textureProjGrad(00I20B10B10B").mangledNameHash());
     ASSERT_EQ(0x00000330u, ImmutableString("textureProjGrad(00R20B10B10B").mangledNameHash());
-    ASSERT_EQ(0x000001c4u, ImmutableString("textureProjGrad(00X20B10B10B").mangledNameHash());
+    ASSERT_EQ(0x000001c2u, ImmutableString("textureProjGrad(00X20B10B10B").mangledNameHash());
     ASSERT_EQ(0x0000000cu, ImmutableString("textureProjGrad(00I30B10B10B").mangledNameHash());
-    ASSERT_EQ(0x000000f9u, ImmutableString("textureProjGrad(00R30B10B10B").mangledNameHash());
+    ASSERT_EQ(0x000000f8u, ImmutableString("textureProjGrad(00R30B10B10B").mangledNameHash());
     ASSERT_EQ(0x000003a2u, ImmutableString("textureProjGrad(00X30B10B10B").mangledNameHash());
-    ASSERT_EQ(0x0000013eu, ImmutableString("textureProjGrad(00J30B20B20B").mangledNameHash());
+    ASSERT_EQ(0x0000013du, ImmutableString("textureProjGrad(00J30B20B20B").mangledNameHash());
     ASSERT_EQ(0x00000051u, ImmutableString("textureProjGrad(00S30B20B20B").mangledNameHash());
     ASSERT_EQ(0x0000001bu, ImmutableString("textureProjGrad(00Y30B20B20B").mangledNameHash());
-    ASSERT_EQ(0x000001b7u, ImmutableString("textureProjGrad(00d30B10B10B").mangledNameHash());
-    ASSERT_EQ(0x000001deu, ImmutableString("textureSize(00P").mangledNameHash());
+    ASSERT_EQ(0x000001b5u, ImmutableString("textureProjGrad(00d30B10B10B").mangledNameHash());
+    ASSERT_EQ(0x000001dcu, ImmutableString("textureSize(00P").mangledNameHash());
     ASSERT_EQ(0x000002aeu, ImmutableString("textureSize(00V").mangledNameHash());
     ASSERT_EQ(0x0000020eu, ImmutableString("textureSize(00b").mangledNameHash());
     ASSERT_EQ(0x00000225u, ImmutableString("textureSize(00Q").mangledNameHash());
     ASSERT_EQ(0x00000229u, ImmutableString("textureSize(00W").mangledNameHash());
     ASSERT_EQ(0x0000020du, ImmutableString("textureSize(00c").mangledNameHash());
     ASSERT_EQ(0x00000096u, ImmutableString("texelFetch(00P10D00D").mangledNameHash());
-    ASSERT_EQ(0x00000130u, ImmutableString("texelFetch(00V10D00D").mangledNameHash());
+    ASSERT_EQ(0x0000012fu, ImmutableString("texelFetch(00V10D00D").mangledNameHash());
     ASSERT_EQ(0x0000028du, ImmutableString("texelFetch(00b10D00D").mangledNameHash());
     ASSERT_EQ(0x000002c5u, ImmutableString("texelFetch(00Q20D00D").mangledNameHash());
-    ASSERT_EQ(0x00000107u, ImmutableString("texelFetch(00W20D00D").mangledNameHash());
-    ASSERT_EQ(0x000001d4u, ImmutableString("texelFetch(00c20D00D").mangledNameHash());
-    ASSERT_EQ(0x000000b2u, ImmutableString("texture(00I10B00B").mangledNameHash());
+    ASSERT_EQ(0x00000106u, ImmutableString("texelFetch(00W20D00D").mangledNameHash());
+    ASSERT_EQ(0x000001d2u, ImmutableString("texelFetch(00c20D00D").mangledNameHash());
+    ASSERT_EQ(0x000000b1u, ImmutableString("texture(00I10B00B").mangledNameHash());
     ASSERT_EQ(0x00000004u, ImmutableString("texture(00R10B00B").mangledNameHash());
     ASSERT_EQ(0x00000092u, ImmutableString("texture(00X10B00B").mangledNameHash());
-    ASSERT_EQ(0x000001aau, ImmutableString("texture(00J20B00B").mangledNameHash());
-    ASSERT_EQ(0x00000151u, ImmutableString("texture(00S20B00B").mangledNameHash());
-    ASSERT_EQ(0x00000191u, ImmutableString("texture(00Y20B00B").mangledNameHash());
-    ASSERT_EQ(0x000001a2u, ImmutableString("texture(00K20B00B").mangledNameHash());
-    ASSERT_EQ(0x000000c8u, ImmutableString("texture(00T20B00B").mangledNameHash());
-    ASSERT_EQ(0x00000188u, ImmutableString("texture(00Z20B00B").mangledNameHash());
-    ASSERT_EQ(0x000001f6u, ImmutableString("texture(00L20B00B").mangledNameHash());
-    ASSERT_EQ(0x00000184u, ImmutableString("texture(00U20B00B").mangledNameHash());
+    ASSERT_EQ(0x000001a8u, ImmutableString("texture(00J20B00B").mangledNameHash());
+    ASSERT_EQ(0x0000014fu, ImmutableString("texture(00S20B00B").mangledNameHash());
+    ASSERT_EQ(0x0000018fu, ImmutableString("texture(00Y20B00B").mangledNameHash());
+    ASSERT_EQ(0x000001a0u, ImmutableString("texture(00K20B00B").mangledNameHash());
+    ASSERT_EQ(0x000000c7u, ImmutableString("texture(00T20B00B").mangledNameHash());
+    ASSERT_EQ(0x00000186u, ImmutableString("texture(00Z20B00B").mangledNameHash());
+    ASSERT_EQ(0x000001f4u, ImmutableString("texture(00L20B00B").mangledNameHash());
+    ASSERT_EQ(0x00000182u, ImmutableString("texture(00U20B00B").mangledNameHash());
     ASSERT_EQ(0x0000038eu, ImmutableString("texture(00a20B00B").mangledNameHash());
     ASSERT_EQ(0x00000386u, ImmutableString("textureProj(00I20B00B").mangledNameHash());
     ASSERT_EQ(0x00000285u, ImmutableString("textureProj(00R20B00B").mangledNameHash());
-    ASSERT_EQ(0x000001e7u, ImmutableString("textureProj(00X20B00B").mangledNameHash());
+    ASSERT_EQ(0x000001e5u, ImmutableString("textureProj(00X20B00B").mangledNameHash());
     ASSERT_EQ(0x000000aau, ImmutableString("textureProj(00I30B00B").mangledNameHash());
     ASSERT_EQ(0x00000000u, ImmutableString("textureProj(00R30B00B").mangledNameHash());
-    ASSERT_EQ(0x00000200u, ImmutableString("textureProj(00X30B00B").mangledNameHash());
+    ASSERT_EQ(0x000001ffu, ImmutableString("textureProj(00X30B00B").mangledNameHash());
     ASSERT_EQ(0x00000030u, ImmutableString("textureProj(00J30B00B").mangledNameHash());
-    ASSERT_EQ(0x00000112u, ImmutableString("textureProj(00S30B00B").mangledNameHash());
-    ASSERT_EQ(0x000001b2u, ImmutableString("textureProj(00Y30B00B").mangledNameHash());
+    ASSERT_EQ(0x00000111u, ImmutableString("textureProj(00S30B00B").mangledNameHash());
+    ASSERT_EQ(0x000001b0u, ImmutableString("textureProj(00Y30B00B").mangledNameHash());
     ASSERT_EQ(0x000002abu, ImmutableString("texture(00d20B00B").mangledNameHash());
-    ASSERT_EQ(0x00000162u, ImmutableString("texture(00e30B00B").mangledNameHash());
+    ASSERT_EQ(0x00000160u, ImmutableString("texture(00e30B00B").mangledNameHash());
     ASSERT_EQ(0x000002f7u, ImmutableString("textureProj(00d30B00B").mangledNameHash());
     ASSERT_EQ(0x0000038fu, ImmutableString("texture(00M10B00B").mangledNameHash());
     ASSERT_EQ(0x00000394u, ImmutableString("textureProj(00M20B00B").mangledNameHash());
@@ -673,92 +673,92 @@
     ASSERT_EQ(0x00000380u, ImmutableString("textureOffset(00S20B20D").mangledNameHash());
     ASSERT_EQ(0x0000029fu, ImmutableString("textureOffset(00Y20B20D").mangledNameHash());
     ASSERT_EQ(0x0000000fu, ImmutableString("textureOffset(00d20B10D").mangledNameHash());
-    ASSERT_EQ(0x000000c9u, ImmutableString("textureOffset(00L20B10D").mangledNameHash());
+    ASSERT_EQ(0x000000c8u, ImmutableString("textureOffset(00L20B10D").mangledNameHash());
     ASSERT_EQ(0x0000006fu, ImmutableString("textureOffset(00U20B10D").mangledNameHash());
-    ASSERT_EQ(0x000000eau, ImmutableString("textureOffset(00a20B10D").mangledNameHash());
-    ASSERT_EQ(0x000000dbu, ImmutableString("textureProjOffset(00I20B10D").mangledNameHash());
+    ASSERT_EQ(0x000000e9u, ImmutableString("textureOffset(00a20B10D").mangledNameHash());
+    ASSERT_EQ(0x000000dau, ImmutableString("textureProjOffset(00I20B10D").mangledNameHash());
     ASSERT_EQ(0x000000a1u, ImmutableString("textureProjOffset(00R20B10D").mangledNameHash());
     ASSERT_EQ(0x00000381u, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash());
-    ASSERT_EQ(0x0000016du, ImmutableString("textureProjOffset(00I30B10D").mangledNameHash());
+    ASSERT_EQ(0x0000016bu, ImmutableString("textureProjOffset(00I30B10D").mangledNameHash());
     ASSERT_EQ(0x0000006eu, ImmutableString("textureProjOffset(00R30B10D").mangledNameHash());
     ASSERT_EQ(0x000002d8u, ImmutableString("textureProjOffset(00X30B10D").mangledNameHash());
     ASSERT_EQ(0x00000360u, ImmutableString("textureProjOffset(00J30B20D").mangledNameHash());
-    ASSERT_EQ(0x000000cfu, ImmutableString("textureProjOffset(00S30B20D").mangledNameHash());
+    ASSERT_EQ(0x000000ceu, ImmutableString("textureProjOffset(00S30B20D").mangledNameHash());
     ASSERT_EQ(0x00000321u, ImmutableString("textureProjOffset(00Y30B20D").mangledNameHash());
     ASSERT_EQ(0x00000364u, ImmutableString("textureProjOffset(00d30B10D").mangledNameHash());
     ASSERT_EQ(0x0000006au, ImmutableString("textureLodOffset(00I10B00B10D").mangledNameHash());
     ASSERT_EQ(0x00000099u, ImmutableString("textureLodOffset(00R10B00B10D").mangledNameHash());
-    ASSERT_EQ(0x000000c7u, ImmutableString("textureLodOffset(00X10B00B10D").mangledNameHash());
+    ASSERT_EQ(0x000000c6u, ImmutableString("textureLodOffset(00X10B00B10D").mangledNameHash());
     ASSERT_EQ(0x0000023fu, ImmutableString("textureLodOffset(00J20B00B20D").mangledNameHash());
     ASSERT_EQ(0x0000005eu, ImmutableString("textureLodOffset(00S20B00B20D").mangledNameHash());
-    ASSERT_EQ(0x00000163u, ImmutableString("textureLodOffset(00Y20B00B20D").mangledNameHash());
-    ASSERT_EQ(0x000001c1u, ImmutableString("textureLodOffset(00d20B00B10D").mangledNameHash());
+    ASSERT_EQ(0x00000161u, ImmutableString("textureLodOffset(00Y20B00B20D").mangledNameHash());
+    ASSERT_EQ(0x000001bfu, ImmutableString("textureLodOffset(00d20B00B10D").mangledNameHash());
     ASSERT_EQ(0x0000034eu, ImmutableString("textureLodOffset(00L20B00B10D").mangledNameHash());
     ASSERT_EQ(0x00000284u, ImmutableString("textureLodOffset(00U20B00B10D").mangledNameHash());
     ASSERT_EQ(0x00000036u, ImmutableString("textureLodOffset(00a20B00B10D").mangledNameHash());
     ASSERT_EQ(0x0000032eu, ImmutableString("textureProjLodOffset(00I20B00B10D").mangledNameHash());
-    ASSERT_EQ(0x00000135u, ImmutableString("textureProjLodOffset(00R20B00B10D").mangledNameHash());
-    ASSERT_EQ(0x0000017cu, ImmutableString("textureProjLodOffset(00X20B00B10D").mangledNameHash());
+    ASSERT_EQ(0x00000134u, ImmutableString("textureProjLodOffset(00R20B00B10D").mangledNameHash());
+    ASSERT_EQ(0x0000017au, ImmutableString("textureProjLodOffset(00X20B00B10D").mangledNameHash());
     ASSERT_EQ(0x00000336u, ImmutableString("textureProjLodOffset(00I30B00B10D").mangledNameHash());
-    ASSERT_EQ(0x000001e0u, ImmutableString("textureProjLodOffset(00R30B00B10D").mangledNameHash());
+    ASSERT_EQ(0x000001deu, ImmutableString("textureProjLodOffset(00R30B00B10D").mangledNameHash());
     ASSERT_EQ(0x00000354u, ImmutableString("textureProjLodOffset(00X30B00B10D").mangledNameHash());
-    ASSERT_EQ(0x000001cbu, ImmutableString("textureProjLodOffset(00J30B00B20D").mangledNameHash());
-    ASSERT_EQ(0x0000017fu, ImmutableString("textureProjLodOffset(00S30B00B20D").mangledNameHash());
-    ASSERT_EQ(0x000001beu, ImmutableString("textureProjLodOffset(00Y30B00B20D").mangledNameHash());
+    ASSERT_EQ(0x000001c9u, ImmutableString("textureProjLodOffset(00J30B00B20D").mangledNameHash());
+    ASSERT_EQ(0x0000017du, ImmutableString("textureProjLodOffset(00S30B00B20D").mangledNameHash());
+    ASSERT_EQ(0x000001bcu, ImmutableString("textureProjLodOffset(00Y30B00B20D").mangledNameHash());
     ASSERT_EQ(0x00000333u, ImmutableString("textureProjLodOffset(00d30B00B10D").mangledNameHash());
-    ASSERT_EQ(0x0000012eu, ImmutableString("texelFetchOffset(00I10D00D10D").mangledNameHash());
-    ASSERT_EQ(0x000000c1u, ImmutableString("texelFetchOffset(00R10D00D10D").mangledNameHash());
+    ASSERT_EQ(0x0000012du, ImmutableString("texelFetchOffset(00I10D00D10D").mangledNameHash());
+    ASSERT_EQ(0x000000c0u, ImmutableString("texelFetchOffset(00R10D00D10D").mangledNameHash());
     ASSERT_EQ(0x000002a9u, ImmutableString("texelFetchOffset(00X10D00D10D").mangledNameHash());
     ASSERT_EQ(0x00000205u, ImmutableString("texelFetchOffset(00J20D00D20D").mangledNameHash());
-    ASSERT_EQ(0x0000011fu, ImmutableString("texelFetchOffset(00S20D00D20D").mangledNameHash());
+    ASSERT_EQ(0x0000011eu, ImmutableString("texelFetchOffset(00S20D00D20D").mangledNameHash());
     ASSERT_EQ(0x00000037u, ImmutableString("texelFetchOffset(00Y20D00D20D").mangledNameHash());
     ASSERT_EQ(0x00000259u, ImmutableString("texelFetchOffset(00L20D00D10D").mangledNameHash());
-    ASSERT_EQ(0x000001bdu, ImmutableString("texelFetchOffset(00U20D00D10D").mangledNameHash());
-    ASSERT_EQ(0x00000126u, ImmutableString("texelFetchOffset(00a20D00D10D").mangledNameHash());
+    ASSERT_EQ(0x000001bbu, ImmutableString("texelFetchOffset(00U20D00D10D").mangledNameHash());
+    ASSERT_EQ(0x00000125u, ImmutableString("texelFetchOffset(00a20D00D10D").mangledNameHash());
     ASSERT_EQ(0x0000023au, ImmutableString("textureGradOffset(00I10B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x000002dcu, ImmutableString("textureGradOffset(00R10B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x00000083u, ImmutableString("textureGradOffset(00X10B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x00000064u, ImmutableString("textureGradOffset(00J20B20B20B20D").mangledNameHash());
     ASSERT_EQ(0x0000009fu, ImmutableString("textureGradOffset(00S20B20B20B20D").mangledNameHash());
     ASSERT_EQ(0x0000022fu, ImmutableString("textureGradOffset(00Y20B20B20B20D").mangledNameHash());
-    ASSERT_EQ(0x000001dfu, ImmutableString("textureGradOffset(00d20B10B10B10D").mangledNameHash());
+    ASSERT_EQ(0x000001ddu, ImmutableString("textureGradOffset(00d20B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x00000324u, ImmutableString("textureGradOffset(00L20B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x0000024eu, ImmutableString("textureGradOffset(00U20B10B10B10D").mangledNameHash());
-    ASSERT_EQ(0x00000189u, ImmutableString("textureGradOffset(00a20B10B10B10D").mangledNameHash());
+    ASSERT_EQ(0x00000187u, ImmutableString("textureGradOffset(00a20B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x00000211u, ImmutableString("textureGradOffset(00f30B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x0000036eu,
               ImmutableString("textureProjGradOffset(00I20B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x00000056u,
               ImmutableString("textureProjGradOffset(00R20B10B10B10D").mangledNameHash());
-    ASSERT_EQ(0x00000127u,
+    ASSERT_EQ(0x00000126u,
               ImmutableString("textureProjGradOffset(00X20B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x00000264u,
               ImmutableString("textureProjGradOffset(00I30B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x00000396u,
               ImmutableString("textureProjGradOffset(00R30B10B10B10D").mangledNameHash());
-    ASSERT_EQ(0x000000ffu,
+    ASSERT_EQ(0x000000feu,
               ImmutableString("textureProjGradOffset(00X30B10B10B10D").mangledNameHash());
     ASSERT_EQ(0x000003a0u,
               ImmutableString("textureProjGradOffset(00J30B20B20B20D").mangledNameHash());
-    ASSERT_EQ(0x00000116u,
+    ASSERT_EQ(0x00000115u,
               ImmutableString("textureProjGradOffset(00S30B20B20B20D").mangledNameHash());
     ASSERT_EQ(0x0000035du,
               ImmutableString("textureProjGradOffset(00Y30B20B20B20D").mangledNameHash());
     ASSERT_EQ(0x00000255u,
               ImmutableString("textureProjGradOffset(00d30B10B10B10D").mangledNameHash());
-    ASSERT_EQ(0x00000100u, ImmutableString("textureOffset(00I10B10D00B").mangledNameHash());
+    ASSERT_EQ(0x000000ffu, ImmutableString("textureOffset(00I10B10D00B").mangledNameHash());
     ASSERT_EQ(0x00000241u, ImmutableString("textureOffset(00R10B10D00B").mangledNameHash());
     ASSERT_EQ(0x000002b2u, ImmutableString("textureOffset(00X10B10D00B").mangledNameHash());
-    ASSERT_EQ(0x000000cbu, ImmutableString("textureOffset(00J20B20D00B").mangledNameHash());
+    ASSERT_EQ(0x000000cau, ImmutableString("textureOffset(00J20B20D00B").mangledNameHash());
     ASSERT_EQ(0x0000026au, ImmutableString("textureOffset(00S20B20D00B").mangledNameHash());
     ASSERT_EQ(0x0000009eu, ImmutableString("textureOffset(00Y20B20D00B").mangledNameHash());
     ASSERT_EQ(0x00000268u, ImmutableString("textureOffset(00d20B10D00B").mangledNameHash());
-    ASSERT_EQ(0x000000c6u, ImmutableString("textureOffset(00L20B10D00B").mangledNameHash());
-    ASSERT_EQ(0x000001a8u, ImmutableString("textureOffset(00U20B10D00B").mangledNameHash());
+    ASSERT_EQ(0x000000c5u, ImmutableString("textureOffset(00L20B10D00B").mangledNameHash());
+    ASSERT_EQ(0x000001a6u, ImmutableString("textureOffset(00U20B10D00B").mangledNameHash());
     ASSERT_EQ(0x00000215u, ImmutableString("textureOffset(00a20B10D00B").mangledNameHash());
     ASSERT_EQ(0x00000078u, ImmutableString("textureProjOffset(00I20B10D00B").mangledNameHash());
     ASSERT_EQ(0x0000026du, ImmutableString("textureProjOffset(00R20B10D00B").mangledNameHash());
-    ASSERT_EQ(0x000000fcu, ImmutableString("textureProjOffset(00X20B10D00B").mangledNameHash());
+    ASSERT_EQ(0x000000fbu, ImmutableString("textureProjOffset(00X20B10D00B").mangledNameHash());
     ASSERT_EQ(0x00000345u, ImmutableString("textureProjOffset(00I30B10D00B").mangledNameHash());
     ASSERT_EQ(0x00000388u, ImmutableString("textureProjOffset(00R30B10D00B").mangledNameHash());
     ASSERT_EQ(0x00000398u, ImmutableString("textureProjOffset(00X30B10D00B").mangledNameHash());
@@ -767,76 +767,76 @@
     ASSERT_EQ(0x000002b9u, ImmutableString("textureProjOffset(00Y30B20D00B").mangledNameHash());
     ASSERT_EQ(0x00000362u, ImmutableString("textureProjOffset(00d30B10D00B").mangledNameHash());
     ASSERT_EQ(0x00000087u, ImmutableString("texture(00M10B").mangledNameHash());
-    ASSERT_EQ(0x000000b1u, ImmutableString("textureProj(00M20B").mangledNameHash());
+    ASSERT_EQ(0x000000b0u, ImmutableString("textureProj(00M20B").mangledNameHash());
     ASSERT_EQ(0x0000030au, ImmutableString("textureProj(00M30B").mangledNameHash());
     ASSERT_EQ(0x00000316u, ImmutableString("textureSize(00M00D").mangledNameHash());
     ASSERT_EQ(0x0000009bu, ImmutableString("texelFetch(00M10D00D").mangledNameHash());
-    ASSERT_EQ(0x00000120u, ImmutableString("texture(00N10B").mangledNameHash());
+    ASSERT_EQ(0x0000011fu, ImmutableString("texture(00N10B").mangledNameHash());
     ASSERT_EQ(0x0000034bu, ImmutableString("textureProj(00N20B").mangledNameHash());
     ASSERT_EQ(0x00000256u, ImmutableString("textureProj(00N30B").mangledNameHash());
     ASSERT_EQ(0x0000007du, ImmutableString("rgb_2_yuv(20B00H").mangledNameHash());
-    ASSERT_EQ(0x000001a4u, ImmutableString("yuv_2_rgb(20B00H").mangledNameHash());
+    ASSERT_EQ(0x000001a2u, ImmutableString("yuv_2_rgb(20B00H").mangledNameHash());
     ASSERT_EQ(0x00000204u, ImmutableString("textureSize(00N00D").mangledNameHash());
     ASSERT_EQ(0x0000003du, ImmutableString("texelFetch(00N10D00D").mangledNameHash());
     ASSERT_EQ(0x0000023cu, ImmutableString("textureGather(00I10B").mangledNameHash());
     ASSERT_EQ(0x00000302u, ImmutableString("textureGather(00R10B").mangledNameHash());
     ASSERT_EQ(0x00000216u, ImmutableString("textureGather(00X10B").mangledNameHash());
-    ASSERT_EQ(0x0000012fu, ImmutableString("textureGather(00I10B00D").mangledNameHash());
+    ASSERT_EQ(0x0000012eu, ImmutableString("textureGather(00I10B00D").mangledNameHash());
     ASSERT_EQ(0x000002beu, ImmutableString("textureGather(00R10B00D").mangledNameHash());
-    ASSERT_EQ(0x000001bcu, ImmutableString("textureGather(00X10B00D").mangledNameHash());
-    ASSERT_EQ(0x00000181u, ImmutableString("textureGather(00L20B").mangledNameHash());
+    ASSERT_EQ(0x000001bau, ImmutableString("textureGather(00X10B00D").mangledNameHash());
+    ASSERT_EQ(0x0000017fu, ImmutableString("textureGather(00L20B").mangledNameHash());
     ASSERT_EQ(0x000002c1u, ImmutableString("textureGather(00U20B").mangledNameHash());
     ASSERT_EQ(0x00000218u, ImmutableString("textureGather(00a20B").mangledNameHash());
-    ASSERT_EQ(0x00000115u, ImmutableString("textureGather(00L20B00D").mangledNameHash());
+    ASSERT_EQ(0x00000114u, ImmutableString("textureGather(00L20B00D").mangledNameHash());
     ASSERT_EQ(0x000002f2u, ImmutableString("textureGather(00U20B00D").mangledNameHash());
     ASSERT_EQ(0x0000039fu, ImmutableString("textureGather(00a20B00D").mangledNameHash());
-    ASSERT_EQ(0x000000d4u, ImmutableString("textureGather(00K20B").mangledNameHash());
+    ASSERT_EQ(0x000000d3u, ImmutableString("textureGather(00K20B").mangledNameHash());
     ASSERT_EQ(0x0000039eu, ImmutableString("textureGather(00T20B").mangledNameHash());
     ASSERT_EQ(0x00000265u, ImmutableString("textureGather(00Z20B").mangledNameHash());
     ASSERT_EQ(0x00000014u, ImmutableString("textureGather(00K20B00D").mangledNameHash());
     ASSERT_EQ(0x0000034au, ImmutableString("textureGather(00T20B00D").mangledNameHash());
     ASSERT_EQ(0x00000301u, ImmutableString("textureGather(00Z20B00D").mangledNameHash());
-    ASSERT_EQ(0x00000174u, ImmutableString("textureGather(00d10B").mangledNameHash());
+    ASSERT_EQ(0x00000172u, ImmutableString("textureGather(00d10B").mangledNameHash());
     ASSERT_EQ(0x00000379u, ImmutableString("textureGather(00d10B00B").mangledNameHash());
-    ASSERT_EQ(0x00000138u, ImmutableString("textureGather(00f20B").mangledNameHash());
-    ASSERT_EQ(0x000001a5u, ImmutableString("textureGather(00f20B00B").mangledNameHash());
+    ASSERT_EQ(0x00000137u, ImmutableString("textureGather(00f20B").mangledNameHash());
+    ASSERT_EQ(0x000001a3u, ImmutableString("textureGather(00f20B00B").mangledNameHash());
     ASSERT_EQ(0x0000033eu, ImmutableString("textureGather(00e20B").mangledNameHash());
-    ASSERT_EQ(0x00000152u, ImmutableString("textureGather(00e20B00B").mangledNameHash());
-    ASSERT_EQ(0x000000c5u, ImmutableString("textureGatherOffset(00I10B10D").mangledNameHash());
+    ASSERT_EQ(0x00000150u, ImmutableString("textureGather(00e20B00B").mangledNameHash());
+    ASSERT_EQ(0x000000c4u, ImmutableString("textureGatherOffset(00I10B10D").mangledNameHash());
     ASSERT_EQ(0x0000005fu, ImmutableString("textureGatherOffset(00R10B10D").mangledNameHash());
     ASSERT_EQ(0x000002ecu, ImmutableString("textureGatherOffset(00X10B10D").mangledNameHash());
-    ASSERT_EQ(0x000001bbu, ImmutableString("textureGatherOffset(00I10B10D00D").mangledNameHash());
-    ASSERT_EQ(0x000001e3u, ImmutableString("textureGatherOffset(00R10B10D00D").mangledNameHash());
+    ASSERT_EQ(0x000001b9u, ImmutableString("textureGatherOffset(00I10B10D00D").mangledNameHash());
+    ASSERT_EQ(0x000001e1u, ImmutableString("textureGatherOffset(00R10B10D00D").mangledNameHash());
     ASSERT_EQ(0x0000035au, ImmutableString("textureGatherOffset(00X10B10D00D").mangledNameHash());
     ASSERT_EQ(0x00000252u, ImmutableString("textureGatherOffset(00L20B10D").mangledNameHash());
     ASSERT_EQ(0x000002bau, ImmutableString("textureGatherOffset(00U20B10D").mangledNameHash());
     ASSERT_EQ(0x00000236u, ImmutableString("textureGatherOffset(00a20B10D").mangledNameHash());
     ASSERT_EQ(0x00000022u, ImmutableString("textureGatherOffset(00L20B10D00D").mangledNameHash());
-    ASSERT_EQ(0x000000e2u, ImmutableString("textureGatherOffset(00U20B10D00D").mangledNameHash());
-    ASSERT_EQ(0x000000c3u, ImmutableString("textureGatherOffset(00a20B10D00D").mangledNameHash());
+    ASSERT_EQ(0x000000e1u, ImmutableString("textureGatherOffset(00U20B10D00D").mangledNameHash());
+    ASSERT_EQ(0x000000c2u, ImmutableString("textureGatherOffset(00a20B10D00D").mangledNameHash());
     ASSERT_EQ(0x0000021bu, ImmutableString("textureGatherOffset(00d10B00B10D").mangledNameHash());
     ASSERT_EQ(0x00000291u, ImmutableString("textureGatherOffset(00f20B00B10D").mangledNameHash());
-    ASSERT_EQ(0x000000ceu, ImmutableString("atomicCounter(00G").mangledNameHash());
+    ASSERT_EQ(0x000000cdu, ImmutableString("atomicCounter(00G").mangledNameHash());
     ASSERT_EQ(0x0000034fu, ImmutableString("atomicCounterIncrement(00G").mangledNameHash());
     ASSERT_EQ(0x00000329u, ImmutableString("atomicCounterDecrement(00G").mangledNameHash());
     ASSERT_EQ(0x00000243u, ImmutableString("atomicAdd(00E00E").mangledNameHash());
     ASSERT_EQ(0x0000003eu, ImmutableString("atomicAdd(00D00D").mangledNameHash());
-    ASSERT_EQ(0x0000014eu, ImmutableString("atomicMin(00E00E").mangledNameHash());
+    ASSERT_EQ(0x0000014cu, ImmutableString("atomicMin(00E00E").mangledNameHash());
     ASSERT_EQ(0x00000375u, ImmutableString("atomicMin(00D00D").mangledNameHash());
     ASSERT_EQ(0x00000373u, ImmutableString("atomicMax(00E00E").mangledNameHash());
-    ASSERT_EQ(0x000000b0u, ImmutableString("atomicMax(00D00D").mangledNameHash());
-    ASSERT_EQ(0x000000bcu, ImmutableString("atomicAnd(00E00E").mangledNameHash());
+    ASSERT_EQ(0x00000200u, ImmutableString("atomicMax(00D00D").mangledNameHash());
+    ASSERT_EQ(0x000000bbu, ImmutableString("atomicAnd(00E00E").mangledNameHash());
     ASSERT_EQ(0x00000075u, ImmutableString("atomicAnd(00D00D").mangledNameHash());
     ASSERT_EQ(0x000000adu, ImmutableString("atomicOr(00E00E").mangledNameHash());
     ASSERT_EQ(0x000003a5u, ImmutableString("atomicOr(00D00D").mangledNameHash());
     ASSERT_EQ(0x000000a0u, ImmutableString("atomicXor(00E00E").mangledNameHash());
     ASSERT_EQ(0x00000068u, ImmutableString("atomicXor(00D00D").mangledNameHash());
     ASSERT_EQ(0x000000a9u, ImmutableString("atomicExchange(00E00E").mangledNameHash());
-    ASSERT_EQ(0x000001e2u, ImmutableString("atomicExchange(00D00D").mangledNameHash());
+    ASSERT_EQ(0x000001e0u, ImmutableString("atomicExchange(00D00D").mangledNameHash());
     ASSERT_EQ(0x00000320u, ImmutableString("atomicCompSwap(00E00E00E").mangledNameHash());
-    ASSERT_EQ(0x000001fau, ImmutableString("atomicCompSwap(00D00D00D").mangledNameHash());
-    ASSERT_EQ(0x0000019bu, ImmutableString("imageSize(00y").mangledNameHash());
-    ASSERT_EQ(0x0000019du, ImmutableString("imageSize(00z").mangledNameHash());
+    ASSERT_EQ(0x000001f8u, ImmutableString("atomicCompSwap(00D00D00D").mangledNameHash());
+    ASSERT_EQ(0x00000199u, ImmutableString("imageSize(00y").mangledNameHash());
+    ASSERT_EQ(0x0000019bu, ImmutableString("imageSize(00z").mangledNameHash());
     ASSERT_EQ(0x0000028bu, ImmutableString("imageSize(01A").mangledNameHash());
     ASSERT_EQ(0x00000221u, ImmutableString("imageSize(01B").mangledNameHash());
     ASSERT_EQ(0x000002d9u, ImmutableString("imageSize(01C").mangledNameHash());
@@ -848,72 +848,72 @@
     ASSERT_EQ(0x000002d3u, ImmutableString("imageSize(01I").mangledNameHash());
     ASSERT_EQ(0x000002d1u, ImmutableString("imageSize(01J").mangledNameHash());
     ASSERT_EQ(0x00000260u, ImmutableString("imageLoad(00y10D").mangledNameHash());
-    ASSERT_EQ(0x000001f2u, ImmutableString("imageLoad(00z10D").mangledNameHash());
+    ASSERT_EQ(0x000001f0u, ImmutableString("imageLoad(00z10D").mangledNameHash());
     ASSERT_EQ(0x00000057u, ImmutableString("imageLoad(01A10D").mangledNameHash());
     ASSERT_EQ(0x000002f6u, ImmutableString("imageLoad(01B20D").mangledNameHash());
     ASSERT_EQ(0x000002d0u, ImmutableString("imageLoad(01C20D").mangledNameHash());
     ASSERT_EQ(0x00000353u, ImmutableString("imageLoad(01D20D").mangledNameHash());
     ASSERT_EQ(0x000002f0u, ImmutableString("imageLoad(01E20D").mangledNameHash());
     ASSERT_EQ(0x0000003au, ImmutableString("imageLoad(01F20D").mangledNameHash());
-    ASSERT_EQ(0x000001f8u, ImmutableString("imageLoad(01G20D").mangledNameHash());
-    ASSERT_EQ(0x000000d3u, ImmutableString("imageLoad(01H20D").mangledNameHash());
-    ASSERT_EQ(0x000000d0u, ImmutableString("imageLoad(01I20D").mangledNameHash());
+    ASSERT_EQ(0x000001f6u, ImmutableString("imageLoad(01G20D").mangledNameHash());
+    ASSERT_EQ(0x000000d2u, ImmutableString("imageLoad(01H20D").mangledNameHash());
+    ASSERT_EQ(0x000000cfu, ImmutableString("imageLoad(01I20D").mangledNameHash());
     ASSERT_EQ(0x00000208u, ImmutableString("imageLoad(01J20D").mangledNameHash());
-    ASSERT_EQ(0x000001e4u, ImmutableString("imageStore(00y10D30B").mangledNameHash());
-    ASSERT_EQ(0x000000f8u, ImmutableString("imageStore(00z10D30D").mangledNameHash());
-    ASSERT_EQ(0x00000117u, ImmutableString("imageStore(01A10D30E").mangledNameHash());
+    ASSERT_EQ(0x000001e2u, ImmutableString("imageStore(00y10D30B").mangledNameHash());
+    ASSERT_EQ(0x000000f7u, ImmutableString("imageStore(00z10D30D").mangledNameHash());
+    ASSERT_EQ(0x00000116u, ImmutableString("imageStore(01A10D30E").mangledNameHash());
     ASSERT_EQ(0x00000080u, ImmutableString("imageStore(01B20D30B").mangledNameHash());
     ASSERT_EQ(0x000002e5u, ImmutableString("imageStore(01C20D30D").mangledNameHash());
     ASSERT_EQ(0x00000327u, ImmutableString("imageStore(01D20D30E").mangledNameHash());
-    ASSERT_EQ(0x000001c3u, ImmutableString("imageStore(01E20D30B").mangledNameHash());
+    ASSERT_EQ(0x000001c1u, ImmutableString("imageStore(01E20D30B").mangledNameHash());
     ASSERT_EQ(0x00000385u, ImmutableString("imageStore(01F20D30D").mangledNameHash());
-    ASSERT_EQ(0x000000d6u, ImmutableString("imageStore(01G20D30E").mangledNameHash());
+    ASSERT_EQ(0x000000d5u, ImmutableString("imageStore(01G20D30E").mangledNameHash());
     ASSERT_EQ(0x000002c4u, ImmutableString("imageStore(01H20D30B").mangledNameHash());
     ASSERT_EQ(0x0000005cu, ImmutableString("imageStore(01I20D30D").mangledNameHash());
-    ASSERT_EQ(0x0000010cu, ImmutableString("imageStore(01J20D30E").mangledNameHash());
-    ASSERT_EQ(0x00000296u, ImmutableString("memoryBarrier(").mangledNameHash());
+    ASSERT_EQ(0x0000010bu, ImmutableString("imageStore(01J20D30E").mangledNameHash());
+    ASSERT_EQ(0x000001fdu, ImmutableString("memoryBarrier(").mangledNameHash());
     ASSERT_EQ(0x00000065u, ImmutableString("memoryBarrierAtomicCounter(").mangledNameHash());
     ASSERT_EQ(0x000002bfu, ImmutableString("memoryBarrierBuffer(").mangledNameHash());
     ASSERT_EQ(0x0000035fu, ImmutableString("memoryBarrierImage(").mangledNameHash());
-    ASSERT_EQ(0x00000122u, ImmutableString("barrier(").mangledNameHash());
-    ASSERT_EQ(0x000001efu, ImmutableString("memoryBarrierShared(").mangledNameHash());
+    ASSERT_EQ(0x00000121u, ImmutableString("barrier(").mangledNameHash());
+    ASSERT_EQ(0x000001edu, ImmutableString("memoryBarrierShared(").mangledNameHash());
     ASSERT_EQ(0x00000054u, ImmutableString("groupMemoryBarrier(").mangledNameHash());
     ASSERT_EQ(0x00000361u, ImmutableString("EmitVertex(").mangledNameHash());
     ASSERT_EQ(0x00000034u, ImmutableString("EndPrimitive(").mangledNameHash());
-    ASSERT_EQ(0x00000153u, ImmutableString("gl_DepthRangeParameters").mangledNameHash());
+    ASSERT_EQ(0x00000151u, ImmutableString("gl_DepthRangeParameters").mangledNameHash());
     ASSERT_EQ(0x00000084u, ImmutableString("gl_DepthRange").mangledNameHash());
     ASSERT_EQ(0x0000030fu, ImmutableString("gl_MaxVertexAttribs").mangledNameHash());
     ASSERT_EQ(0x00000348u, ImmutableString("gl_MaxVertexUniformVectors").mangledNameHash());
     ASSERT_EQ(0x00000043u, ImmutableString("gl_MaxVertexTextureImageUnits").mangledNameHash());
-    ASSERT_EQ(0x0000014fu, ImmutableString("gl_MaxCombinedTextureImageUnits").mangledNameHash());
+    ASSERT_EQ(0x0000014du, ImmutableString("gl_MaxCombinedTextureImageUnits").mangledNameHash());
     ASSERT_EQ(0x0000031du, ImmutableString("gl_MaxTextureImageUnits").mangledNameHash());
     ASSERT_EQ(0x000002e8u, ImmutableString("gl_MaxFragmentUniformVectors").mangledNameHash());
     ASSERT_EQ(0x00000344u, ImmutableString("gl_MaxVaryingVectors").mangledNameHash());
-    ASSERT_EQ(0x000000e1u, ImmutableString("gl_MaxDrawBuffers").mangledNameHash());
+    ASSERT_EQ(0x000000e0u, ImmutableString("gl_MaxDrawBuffers").mangledNameHash());
     ASSERT_EQ(0x00000272u, ImmutableString("gl_MaxDualSourceDrawBuffersEXT").mangledNameHash());
     ASSERT_EQ(0x00000088u, ImmutableString("gl_MaxVertexOutputVectors").mangledNameHash());
     ASSERT_EQ(0x00000369u, ImmutableString("gl_MaxFragmentInputVectors").mangledNameHash());
     ASSERT_EQ(0x0000002eu, ImmutableString("gl_MinProgramTexelOffset").mangledNameHash());
     ASSERT_EQ(0x00000257u, ImmutableString("gl_MaxProgramTexelOffset").mangledNameHash());
     ASSERT_EQ(0x0000008cu, ImmutableString("gl_MaxImageUnits").mangledNameHash());
-    ASSERT_EQ(0x000001d5u, ImmutableString("gl_MaxVertexImageUniforms").mangledNameHash());
+    ASSERT_EQ(0x000001d3u, ImmutableString("gl_MaxVertexImageUniforms").mangledNameHash());
     ASSERT_EQ(0x000000a6u, ImmutableString("gl_MaxFragmentImageUniforms").mangledNameHash());
     ASSERT_EQ(0x00000008u, ImmutableString("gl_MaxComputeImageUniforms").mangledNameHash());
-    ASSERT_EQ(0x000001a3u, ImmutableString("gl_MaxCombinedImageUniforms").mangledNameHash());
+    ASSERT_EQ(0x000001a1u, ImmutableString("gl_MaxCombinedImageUniforms").mangledNameHash());
     ASSERT_EQ(0x000000acu,
               ImmutableString("gl_MaxCombinedShaderOutputResources").mangledNameHash());
-    ASSERT_EQ(0x000000e3u, ImmutableString("gl_MaxComputeWorkGroupCount").mangledNameHash());
-    ASSERT_EQ(0x00000149u, ImmutableString("gl_MaxComputeWorkGroupSize").mangledNameHash());
+    ASSERT_EQ(0x000000e2u, ImmutableString("gl_MaxComputeWorkGroupCount").mangledNameHash());
+    ASSERT_EQ(0x00000148u, ImmutableString("gl_MaxComputeWorkGroupSize").mangledNameHash());
     ASSERT_EQ(0x000002bdu, ImmutableString("gl_MaxComputeUniformComponents").mangledNameHash());
-    ASSERT_EQ(0x0000010eu, ImmutableString("gl_MaxComputeTextureImageUnits").mangledNameHash());
+    ASSERT_EQ(0x0000010du, ImmutableString("gl_MaxComputeTextureImageUnits").mangledNameHash());
     ASSERT_EQ(0x0000037bu, ImmutableString("gl_MaxComputeAtomicCounters").mangledNameHash());
-    ASSERT_EQ(0x000000bfu, ImmutableString("gl_MaxComputeAtomicCounterBuffers").mangledNameHash());
+    ASSERT_EQ(0x000000beu, ImmutableString("gl_MaxComputeAtomicCounterBuffers").mangledNameHash());
     ASSERT_EQ(0x0000037du, ImmutableString("gl_MaxVertexAtomicCounters").mangledNameHash());
     ASSERT_EQ(0x00000283u, ImmutableString("gl_MaxFragmentAtomicCounters").mangledNameHash());
-    ASSERT_EQ(0x00000114u, ImmutableString("gl_MaxCombinedAtomicCounters").mangledNameHash());
+    ASSERT_EQ(0x00000113u, ImmutableString("gl_MaxCombinedAtomicCounters").mangledNameHash());
     ASSERT_EQ(0x00000006u, ImmutableString("gl_MaxAtomicCounterBindings").mangledNameHash());
     ASSERT_EQ(0x0000005du, ImmutableString("gl_MaxVertexAtomicCounterBuffers").mangledNameHash());
-    ASSERT_EQ(0x000001d8u, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").mangledNameHash());
+    ASSERT_EQ(0x000001d6u, ImmutableString("gl_MaxFragmentAtomicCounterBuffers").mangledNameHash());
     ASSERT_EQ(0x0000022bu, ImmutableString("gl_MaxCombinedAtomicCounterBuffers").mangledNameHash());
     ASSERT_EQ(0x0000028fu, ImmutableString("gl_MaxAtomicCounterBufferSize").mangledNameHash());
     ASSERT_EQ(0x00000244u, ImmutableString("gl_MaxGeometryInputComponents").mangledNameHash());
@@ -923,138 +923,138 @@
     ASSERT_EQ(0x00000029u, ImmutableString("gl_MaxGeometryOutputVertices").mangledNameHash());
     ASSERT_EQ(0x000002a2u,
               ImmutableString("gl_MaxGeometryTotalOutputComponents").mangledNameHash());
-    ASSERT_EQ(0x00000123u, ImmutableString("gl_MaxGeometryUniformComponents").mangledNameHash());
-    ASSERT_EQ(0x000001e5u, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash());
-    ASSERT_EQ(0x000000feu, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash());
+    ASSERT_EQ(0x00000122u, ImmutableString("gl_MaxGeometryUniformComponents").mangledNameHash());
+    ASSERT_EQ(0x000001e3u, ImmutableString("gl_MaxGeometryAtomicCounters").mangledNameHash());
+    ASSERT_EQ(0x000000fdu, ImmutableString("gl_MaxGeometryAtomicCounterBuffers").mangledNameHash());
     ASSERT_EQ(0x000000a2u, ImmutableString("gl_FragCoord").mangledNameHash());
     ASSERT_EQ(0x000002e2u, ImmutableString("gl_FrontFacing").mangledNameHash());
-    ASSERT_EQ(0x00000119u, ImmutableString("gl_PointCoord").mangledNameHash());
+    ASSERT_EQ(0x00000118u, ImmutableString("gl_PointCoord").mangledNameHash());
     ASSERT_EQ(0x00000076u, ImmutableString("gl_FragColor").mangledNameHash());
     ASSERT_EQ(0x000002f5u, ImmutableString("gl_FragData").mangledNameHash());
-    ASSERT_EQ(0x00000178u, ImmutableString("gl_FragDepth").mangledNameHash());
+    ASSERT_EQ(0x00000176u, ImmutableString("gl_FragDepth").mangledNameHash());
     ASSERT_EQ(0x000002e3u, ImmutableString("gl_SecondaryFragColorEXT").mangledNameHash());
-    ASSERT_EQ(0x000001cdu, ImmutableString("gl_SecondaryFragDataEXT").mangledNameHash());
-    ASSERT_EQ(0x0000016bu, ImmutableString("gl_FragDepthEXT").mangledNameHash());
-    ASSERT_EQ(0x0000014cu, ImmutableString("gl_LastFragData").mangledNameHash());
-    ASSERT_EQ(0x00000165u, ImmutableString("gl_LastFragColor").mangledNameHash());
+    ASSERT_EQ(0x000001cbu, ImmutableString("gl_SecondaryFragDataEXT").mangledNameHash());
+    ASSERT_EQ(0x00000169u, ImmutableString("gl_FragDepthEXT").mangledNameHash());
+    ASSERT_EQ(0x0000014au, ImmutableString("gl_LastFragData").mangledNameHash());
+    ASSERT_EQ(0x00000163u, ImmutableString("gl_LastFragColor").mangledNameHash());
     ASSERT_EQ(0x00000300u, ImmutableString("gl_LastFragColorARM").mangledNameHash());
     ASSERT_EQ(0x00000003u, ImmutableString("gl_PrimitiveID").mangledNameHash());
     ASSERT_EQ(0x0000000eu, ImmutableString("gl_Layer").mangledNameHash());
     ASSERT_EQ(0x0000031eu, ImmutableString("gl_Position").mangledNameHash());
     ASSERT_EQ(0x00000374u, ImmutableString("gl_PointSize").mangledNameHash());
-    ASSERT_EQ(0x000001d3u, ImmutableString("gl_InstanceID").mangledNameHash());
+    ASSERT_EQ(0x000001d1u, ImmutableString("gl_InstanceID").mangledNameHash());
     ASSERT_EQ(0x00000308u, ImmutableString("gl_VertexID").mangledNameHash());
     ASSERT_EQ(0x000003a4u, ImmutableString("gl_DrawID").mangledNameHash());
-    ASSERT_EQ(0x0000014au, ImmutableString("gl_BaseVertex").mangledNameHash());
+    ASSERT_EQ(0x00000296u, ImmutableString("gl_BaseVertex").mangledNameHash());
     ASSERT_EQ(0x00000310u, ImmutableString("gl_BaseInstance").mangledNameHash());
     ASSERT_EQ(0x0000000au, ImmutableString("angle_BaseVertex").mangledNameHash());
     ASSERT_EQ(0x0000031bu, ImmutableString("angle_BaseInstance").mangledNameHash());
     ASSERT_EQ(0x000002b7u, ImmutableString("gl_NumWorkGroups").mangledNameHash());
     ASSERT_EQ(0x00000209u, ImmutableString("gl_WorkGroupSize").mangledNameHash());
-    ASSERT_EQ(0x000001d9u, ImmutableString("gl_WorkGroupID").mangledNameHash());
-    ASSERT_EQ(0x00000171u, ImmutableString("gl_LocalInvocationID").mangledNameHash());
-    ASSERT_EQ(0x000001edu, ImmutableString("gl_GlobalInvocationID").mangledNameHash());
-    ASSERT_EQ(0x000001b9u, ImmutableString("gl_LocalInvocationIndex").mangledNameHash());
-    ASSERT_EQ(0x000000c0u, ImmutableString("gl_PrimitiveIDIn").mangledNameHash());
-    ASSERT_EQ(0x00000143u, ImmutableString("gl_InvocationID").mangledNameHash());
-    ASSERT_EQ(0x000001ffu, ImmutableString("gl_PerVertex").mangledNameHash());
-    ASSERT_EQ(0x000001c8u, ImmutableString("gl_in").mangledNameHash());
+    ASSERT_EQ(0x000001d7u, ImmutableString("gl_WorkGroupID").mangledNameHash());
+    ASSERT_EQ(0x0000016fu, ImmutableString("gl_LocalInvocationID").mangledNameHash());
+    ASSERT_EQ(0x000001ebu, ImmutableString("gl_GlobalInvocationID").mangledNameHash());
+    ASSERT_EQ(0x000001b7u, ImmutableString("gl_LocalInvocationIndex").mangledNameHash());
+    ASSERT_EQ(0x000000bfu, ImmutableString("gl_PrimitiveIDIn").mangledNameHash());
+    ASSERT_EQ(0x00000142u, ImmutableString("gl_InvocationID").mangledNameHash());
+    ASSERT_EQ(0x000001feu, ImmutableString("gl_PerVertex").mangledNameHash());
+    ASSERT_EQ(0x000001c6u, ImmutableString("gl_in").mangledNameHash());
     ASSERT_EQ(0x00000201u, ImmutableString("gl_ViewID_OVR").mangledNameHash());
     ASSERT_EQ(0x0000001cu, ImmutableString("radians").unmangledNameHash());
     ASSERT_EQ(0x0000000fu, ImmutableString("degrees").unmangledNameHash());
-    ASSERT_EQ(0x0000007eu, ImmutableString("sin").unmangledNameHash());
+    ASSERT_EQ(0x0000007du, ImmutableString("sin").unmangledNameHash());
     ASSERT_EQ(0x00000042u, ImmutableString("cos").unmangledNameHash());
-    ASSERT_EQ(0x00000073u, ImmutableString("tan").unmangledNameHash());
+    ASSERT_EQ(0x00000072u, 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(0x00000029u, ImmutableString("cosh").unmangledNameHash());
-    ASSERT_EQ(0x00000068u, ImmutableString("tanh").unmangledNameHash());
-    ASSERT_EQ(0x00000070u, ImmutableString("asinh").unmangledNameHash());
+    ASSERT_EQ(0x00000067u, ImmutableString("tanh").unmangledNameHash());
+    ASSERT_EQ(0x0000006fu, ImmutableString("asinh").unmangledNameHash());
     ASSERT_EQ(0x00000028u, ImmutableString("acosh").unmangledNameHash());
-    ASSERT_EQ(0x0000007au, ImmutableString("atanh").unmangledNameHash());
+    ASSERT_EQ(0x00000079u, 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(0x00000057u, ImmutableString("log").unmangledNameHash());
+    ASSERT_EQ(0x00000059u, 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("sqrt").unmangledNameHash());
+    ASSERT_EQ(0x00000065u, ImmutableString("inversesqrt").unmangledNameHash());
     ASSERT_EQ(0x00000034u, ImmutableString("abs").unmangledNameHash());
-    ASSERT_EQ(0x00000065u, ImmutableString("sign").unmangledNameHash());
-    ASSERT_EQ(0x00000078u, ImmutableString("floor").unmangledNameHash());
+    ASSERT_EQ(0x00000064u, ImmutableString("sign").unmangledNameHash());
+    ASSERT_EQ(0x00000077u, ImmutableString("floor").unmangledNameHash());
     ASSERT_EQ(0x00000041u, 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(0x0000005bu, ImmutableString("fract").unmangledNameHash());
     ASSERT_EQ(0x0000001au, ImmutableString("mod").unmangledNameHash());
     ASSERT_EQ(0x0000008du, ImmutableString("min").unmangledNameHash());
     ASSERT_EQ(0x00000035u, ImmutableString("max").unmangledNameHash());
     ASSERT_EQ(0x00000025u, ImmutableString("clamp").unmangledNameHash());
-    ASSERT_EQ(0x0000007du, ImmutableString("mix").unmangledNameHash());
+    ASSERT_EQ(0x0000007cu, ImmutableString("mix").unmangledNameHash());
     ASSERT_EQ(0x0000003eu, 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(0x0000001bu, ImmutableString("floatBitsToInt").unmangledNameHash());
-    ASSERT_EQ(0x00000052u, ImmutableString("floatBitsToUint").unmangledNameHash());
-    ASSERT_EQ(0x0000006cu, ImmutableString("intBitsToFloat").unmangledNameHash());
+    ASSERT_EQ(0x00000051u, ImmutableString("floatBitsToUint").unmangledNameHash());
+    ASSERT_EQ(0x0000006bu, ImmutableString("intBitsToFloat").unmangledNameHash());
     ASSERT_EQ(0x0000004au, ImmutableString("uintBitsToFloat").unmangledNameHash());
     ASSERT_EQ(0x0000000eu, ImmutableString("frexp").unmangledNameHash());
-    ASSERT_EQ(0x00000051u, ImmutableString("ldexp").unmangledNameHash());
+    ASSERT_EQ(0x00000050u, 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(0x00000063u, 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(0x00000066u, ImmutableString("distance").unmangledNameHash());
     ASSERT_EQ(0x00000095u, ImmutableString("dot").unmangledNameHash());
-    ASSERT_EQ(0x0000007bu, ImmutableString("cross").unmangledNameHash());
-    ASSERT_EQ(0x00000076u, ImmutableString("normalize").unmangledNameHash());
+    ASSERT_EQ(0x0000007au, ImmutableString("cross").unmangledNameHash());
+    ASSERT_EQ(0x00000075u, 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(0x0000005du, 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(0x00000060u, ImmutableString("greaterThan").unmangledNameHash());
+    ASSERT_EQ(0x0000005fu, ImmutableString("greaterThanEqual").unmangledNameHash());
     ASSERT_EQ(0x00000043u, ImmutableString("equal").unmangledNameHash());
     ASSERT_EQ(0x00000089u, ImmutableString("notEqual").unmangledNameHash());
-    ASSERT_EQ(0x00000074u, ImmutableString("any").unmangledNameHash());
+    ASSERT_EQ(0x00000073u, 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(0x0000006cu, ImmutableString("bitfieldExtract").unmangledNameHash());
+    ASSERT_EQ(0x00000061u, ImmutableString("bitfieldInsert").unmangledNameHash());
     ASSERT_EQ(0x0000002eu, ImmutableString("bitfieldReverse").unmangledNameHash());
-    ASSERT_EQ(0x00000059u, ImmutableString("bitCount").unmangledNameHash());
+    ASSERT_EQ(0x00000058u, 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(0x00000010u, ImmutableString("imulExtended").unmangledNameHash());
-    ASSERT_EQ(0x00000071u, ImmutableString("texture2D").unmangledNameHash());
+    ASSERT_EQ(0x00000070u, ImmutableString("texture2D").unmangledNameHash());
     ASSERT_EQ(0x0000003au, ImmutableString("texture2DProj").unmangledNameHash());
     ASSERT_EQ(0x0000008eu, 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(0x00000068u, ImmutableString("texture2DGradEXT").unmangledNameHash());
     ASSERT_EQ(0x00000011u, ImmutableString("texture2DProjGradEXT").unmangledNameHash());
     ASSERT_EQ(0x00000008u, ImmutableString("textureCubeGradEXT").unmangledNameHash());
     ASSERT_EQ(0x0000002fu, ImmutableString("dFdx").unmangledNameHash());
@@ -1062,53 +1062,53 @@
     ASSERT_EQ(0x00000003u, ImmutableString("fwidth").unmangledNameHash());
     ASSERT_EQ(0x00000044u, ImmutableString("texture2DLodEXT").unmangledNameHash());
     ASSERT_EQ(0x00000015u, ImmutableString("texture2DProjLodEXT").unmangledNameHash());
-    ASSERT_EQ(0x00000054u, ImmutableString("textureCubeLodEXT").unmangledNameHash());
+    ASSERT_EQ(0x00000053u, ImmutableString("textureCubeLodEXT").unmangledNameHash());
     ASSERT_EQ(0x00000084u, ImmutableString("texture3D").unmangledNameHash());
-    ASSERT_EQ(0x00000063u, ImmutableString("texture3DProj").unmangledNameHash());
+    ASSERT_EQ(0x00000062u, ImmutableString("texture3DProj").unmangledNameHash());
     ASSERT_EQ(0x00000031u, ImmutableString("texture3DLod").unmangledNameHash());
-    ASSERT_EQ(0x0000006eu, ImmutableString("texture3DProjLod").unmangledNameHash());
+    ASSERT_EQ(0x0000006du, ImmutableString("texture3DProjLod").unmangledNameHash());
     ASSERT_EQ(0x00000094u, ImmutableString("texture2DLod").unmangledNameHash());
-    ASSERT_EQ(0x00000050u, ImmutableString("texture2DProjLod").unmangledNameHash());
+    ASSERT_EQ(0x0000004fu, 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(0x00000052u, ImmutableString("textureProjLod").unmangledNameHash());
     ASSERT_EQ(0x00000087u, ImmutableString("texelFetch").unmangledNameHash());
     ASSERT_EQ(0x00000038u, 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(0x00000078u, ImmutableString("textureLodOffset").unmangledNameHash());
+    ASSERT_EQ(0x00000056u, ImmutableString("textureProjLodOffset").unmangledNameHash());
     ASSERT_EQ(0x00000046u, ImmutableString("texelFetchOffset").unmangledNameHash());
     ASSERT_EQ(0x0000007fu, 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(0x0000005eu, ImmutableString("textureGather").unmangledNameHash());
+    ASSERT_EQ(0x00000055u, ImmutableString("textureGatherOffset").unmangledNameHash());
+    ASSERT_EQ(0x0000006au, ImmutableString("atomicCounter").unmangledNameHash());
     ASSERT_EQ(0x00000005u, ImmutableString("atomicCounterIncrement").unmangledNameHash());
     ASSERT_EQ(0x0000003bu, ImmutableString("atomicCounterDecrement").unmangledNameHash());
-    ASSERT_EQ(0x0000006fu, ImmutableString("atomicAdd").unmangledNameHash());
+    ASSERT_EQ(0x0000006eu, ImmutableString("atomicAdd").unmangledNameHash());
     ASSERT_EQ(0x00000092u, 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(0x00000074u, ImmutableString("atomicXor").unmangledNameHash());
+    ASSERT_EQ(0x0000007eu, ImmutableString("atomicExchange").unmangledNameHash());
+    ASSERT_EQ(0x0000005au, 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(0x00000076u, ImmutableString("imageLoad").unmangledNameHash());
+    ASSERT_EQ(0x00000054u, ImmutableString("imageStore").unmangledNameHash());
+    ASSERT_EQ(0x00000069u, ImmutableString("memoryBarrier").unmangledNameHash());
     ASSERT_EQ(0x00000016u, ImmutableString("memoryBarrierAtomicCounter").unmangledNameHash());
-    ASSERT_EQ(0x00000072u, ImmutableString("memoryBarrierBuffer").unmangledNameHash());
+    ASSERT_EQ(0x00000071u, ImmutableString("memoryBarrierBuffer").unmangledNameHash());
     ASSERT_EQ(0x00000009u, ImmutableString("memoryBarrierImage").unmangledNameHash());
     ASSERT_EQ(0x00000039u, ImmutableString("barrier").unmangledNameHash());
     ASSERT_EQ(0x00000030u, ImmutableString("memoryBarrierShared").unmangledNameHash());
     ASSERT_EQ(0x00000091u, ImmutableString("groupMemoryBarrier").unmangledNameHash());
-    ASSERT_EQ(0x0000005du, ImmutableString("EmitVertex").unmangledNameHash());
+    ASSERT_EQ(0x0000005cu, ImmutableString("EmitVertex").unmangledNameHash());
     ASSERT_EQ(0x00000088u, ImmutableString("EndPrimitive").unmangledNameHash());
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
index ebc50f9..0790030 100644
--- a/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/compiler_tests/ImmutableString_test_autogen.cpp
@@ -287,7 +287,7 @@
     ASSERT_EQ(0x0000001bu, ImmutableString("mix(20B20B00B").mangledNameHash());
     ASSERT_EQ(0x00000690u, ImmutableString("mix(30B30B00B").mangledNameHash());
     ASSERT_EQ(0x00000550u, ImmutableString("mix(10B10B10B").mangledNameHash());
-    ASSERT_EQ(0x00000841u, ImmutableString("mix(20B20B20B").mangledNameHash());
+    ASSERT_EQ(0x0000016au, ImmutableString("mix(20B20B20B").mangledNameHash());
     ASSERT_EQ(0x000003d6u, ImmutableString("mix(30B30B30B").mangledNameHash());
     ASSERT_EQ(0x00000429u, ImmutableString("mix(00C00C00C").mangledNameHash());
     ASSERT_EQ(0x00000628u, ImmutableString("mix(10C10C00C").mangledNameHash());
@@ -612,7 +612,7 @@
     ASSERT_EQ(0x00000249u, ImmutableString("bitCount(00E").mangledNameHash());
     ASSERT_EQ(0x0000018fu, ImmutableString("bitCount(10E").mangledNameHash());
     ASSERT_EQ(0x0000053bu, ImmutableString("bitCount(20E").mangledNameHash());
-    ASSERT_EQ(0x000001d2u, ImmutableString("bitCount(30E").mangledNameHash());
+    ASSERT_EQ(0x00000480u, ImmutableString("bitCount(30E").mangledNameHash());
     ASSERT_EQ(0x000005bbu, ImmutableString("findLSB(00D").mangledNameHash());
     ASSERT_EQ(0x0000074au, ImmutableString("findLSB(10D").mangledNameHash());
     ASSERT_EQ(0x000006b6u, ImmutableString("findLSB(20D").mangledNameHash());
@@ -757,7 +757,7 @@
     ASSERT_EQ(0x00000127u, ImmutableString("textureProj(00o30B").mangledNameHash());
     ASSERT_EQ(0x00000772u, ImmutableString("textureProj(00t30B").mangledNameHash());
     ASSERT_EQ(0x00000102u, ImmutableString("textureProj(00m30B").mangledNameHash());
-    ASSERT_EQ(0x000004b3u, ImmutableString("textureProj(00q20B").mangledNameHash());
+    ASSERT_EQ(0x00000515u, ImmutableString("textureProj(00q20B").mangledNameHash());
     ASSERT_EQ(0x000006abu, ImmutableString("textureProj(00v20B").mangledNameHash());
     ASSERT_EQ(0x000005abu, ImmutableString("textureProj(00q30B").mangledNameHash());
     ASSERT_EQ(0x00000608u, ImmutableString("textureProj(00v30B").mangledNameHash());
@@ -856,7 +856,7 @@
     ASSERT_EQ(0x000007efu, ImmutableString("texelFetch(00p10D00D").mangledNameHash());
     ASSERT_EQ(0x0000064au, ImmutableString("texelFetch(00u10D00D").mangledNameHash());
     ASSERT_EQ(0x00000078u, ImmutableString("texelFetch(00j00D").mangledNameHash());
-    ASSERT_EQ(0x000003b5u, ImmutableString("texelFetch(00r00D").mangledNameHash());
+    ASSERT_EQ(0x000005bfu, ImmutableString("texelFetch(00r00D").mangledNameHash());
     ASSERT_EQ(0x0000015au, ImmutableString("texelFetch(00w00D").mangledNameHash());
     ASSERT_EQ(0x00000456u, ImmutableString("textureGrad(00I10B10B10B").mangledNameHash());
     ASSERT_EQ(0x000001e2u, ImmutableString("textureGrad(00R10B10B10B").mangledNameHash());
@@ -1046,7 +1046,7 @@
     ASSERT_EQ(0x000003f8u, ImmutableString("textureOffset(00O10B10D").mangledNameHash());
     ASSERT_EQ(0x00000718u, ImmutableString("textureOffset(00q10B10D").mangledNameHash());
     ASSERT_EQ(0x000002b7u, ImmutableString("textureOffset(00v10B10D").mangledNameHash());
-    ASSERT_EQ(0x00000480u, ImmutableString("textureOffset(00n20B10D").mangledNameHash());
+    ASSERT_EQ(0x000001d2u, ImmutableString("textureOffset(00n20B10D").mangledNameHash());
     ASSERT_EQ(0x0000006cu, ImmutableString("textureOffset(00m20B00D").mangledNameHash());
     ASSERT_EQ(0x00000205u, ImmutableString("textureOffset(00h10B00D").mangledNameHash());
     ASSERT_EQ(0x000000bfu, ImmutableString("textureOffset(00p10B00D").mangledNameHash());
@@ -1055,7 +1055,7 @@
     ASSERT_EQ(0x0000076cu, ImmutableString("textureOffset(00f30B10D").mangledNameHash());
     ASSERT_EQ(0x000004beu, ImmutableString("textureProjOffset(00I20B10D").mangledNameHash());
     ASSERT_EQ(0x00000296u, ImmutableString("textureProjOffset(00R20B10D").mangledNameHash());
-    ASSERT_EQ(0x0000016au, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash());
+    ASSERT_EQ(0x00000841u, ImmutableString("textureProjOffset(00X20B10D").mangledNameHash());
     ASSERT_EQ(0x0000016eu, ImmutableString("textureProjOffset(00I30B10D").mangledNameHash());
     ASSERT_EQ(0x0000083du, ImmutableString("textureProjOffset(00R30B10D").mangledNameHash());
     ASSERT_EQ(0x000005ecu, ImmutableString("textureProjOffset(00X30B10D").mangledNameHash());
@@ -1070,7 +1070,7 @@
     ASSERT_EQ(0x00000450u, ImmutableString("textureProjOffset(00o30B00D").mangledNameHash());
     ASSERT_EQ(0x0000071du, ImmutableString("textureProjOffset(00t30B00D").mangledNameHash());
     ASSERT_EQ(0x000006e3u, ImmutableString("textureProjOffset(00O20B10D").mangledNameHash());
-    ASSERT_EQ(0x00000347u, ImmutableString("textureProjOffset(00q20B10D").mangledNameHash());
+    ASSERT_EQ(0x00000305u, ImmutableString("textureProjOffset(00q20B10D").mangledNameHash());
     ASSERT_EQ(0x0000022au, ImmutableString("textureProjOffset(00v20B10D").mangledNameHash());
     ASSERT_EQ(0x00000135u, ImmutableString("textureProjOffset(00O30B10D").mangledNameHash());
     ASSERT_EQ(0x00000081u, ImmutableString("textureProjOffset(00q30B10D").mangledNameHash());
@@ -1327,7 +1327,7 @@
     ASSERT_EQ(0x00000697u, ImmutableString("textureGatherOffsets(00v10B70D00D").mangledNameHash());
     ASSERT_EQ(0x00000330u, ImmutableString("textureGatherOffsets(00d10B00B70D").mangledNameHash());
     ASSERT_EQ(0x00000053u, ImmutableString("textureGatherOffsets(00f20B00B70D").mangledNameHash());
-    ASSERT_EQ(0x00000515u, ImmutableString("textureGatherOffsets(00n10B00B70D").mangledNameHash());
+    ASSERT_EQ(0x000004b3u, ImmutableString("textureGatherOffsets(00n10B00B70D").mangledNameHash());
     ASSERT_EQ(0x0000053du, ImmutableString("dFdxFine(00B").mangledNameHash());
     ASSERT_EQ(0x000004aeu, ImmutableString("dFdxFine(10B").mangledNameHash());
     ASSERT_EQ(0x0000068cu, ImmutableString("dFdxFine(20B").mangledNameHash());
@@ -1344,7 +1344,7 @@
     ASSERT_EQ(0x0000082au, ImmutableString("dFdyCoarse(10B").mangledNameHash());
     ASSERT_EQ(0x0000056fu, ImmutableString("dFdyCoarse(20B").mangledNameHash());
     ASSERT_EQ(0x000004bau, ImmutableString("dFdyCoarse(30B").mangledNameHash());
-    ASSERT_EQ(0x00000305u, ImmutableString("fwidthFine(00B").mangledNameHash());
+    ASSERT_EQ(0x00000347u, ImmutableString("fwidthFine(00B").mangledNameHash());
     ASSERT_EQ(0x0000009du, ImmutableString("fwidthFine(10B").mangledNameHash());
     ASSERT_EQ(0x00000497u, ImmutableString("fwidthFine(20B").mangledNameHash());
     ASSERT_EQ(0x000003feu, ImmutableString("fwidthFine(30B").mangledNameHash());
@@ -1394,7 +1394,7 @@
     ASSERT_EQ(0x00000365u, ImmutableString("atomicCompSwap(00D00D00D").mangledNameHash());
     ASSERT_EQ(0x00000311u, ImmutableString("imageSize(00y").mangledNameHash());
     ASSERT_EQ(0x00000313u, ImmutableString("imageSize(00z").mangledNameHash());
-    ASSERT_EQ(0x000005bfu, ImmutableString("imageSize(01A").mangledNameHash());
+    ASSERT_EQ(0x000003b5u, ImmutableString("imageSize(01A").mangledNameHash());
     ASSERT_EQ(0x000003b3u, ImmutableString("imageSize(01B").mangledNameHash());
     ASSERT_EQ(0x000003b4u, ImmutableString("imageSize(01C").mangledNameHash());
     ASSERT_EQ(0x000003b8u, ImmutableString("imageSize(01D").mangledNameHash());
@@ -2188,209 +2188,209 @@
     ASSERT_EQ(0x00000221u, ImmutableString("gl_ViewID_OVR").mangledNameHash());
     ASSERT_EQ(0x00000022u, ImmutableString("radians").unmangledNameHash());
     ASSERT_EQ(0x00000012u, ImmutableString("degrees").unmangledNameHash());
-    ASSERT_EQ(0x000000a8u, ImmutableString("sin").unmangledNameHash());
+    ASSERT_EQ(0x000000a7u, ImmutableString("sin").unmangledNameHash());
     ASSERT_EQ(0x00000052u, ImmutableString("cos").unmangledNameHash());
-    ASSERT_EQ(0x00000096u, ImmutableString("tan").unmangledNameHash());
+    ASSERT_EQ(0x00000095u, ImmutableString("tan").unmangledNameHash());
     ASSERT_EQ(0x00000038u, ImmutableString("asin").unmangledNameHash());
     ASSERT_EQ(0x0000005cu, ImmutableString("acos").unmangledNameHash());
     ASSERT_EQ(0x000000afu, ImmutableString("atan").unmangledNameHash());
     ASSERT_EQ(0x0000004fu, ImmutableString("sinh").unmangledNameHash());
     ASSERT_EQ(0x00000033u, ImmutableString("cosh").unmangledNameHash());
-    ASSERT_EQ(0x00000087u, ImmutableString("tanh").unmangledNameHash());
-    ASSERT_EQ(0x00000093u, ImmutableString("asinh").unmangledNameHash());
+    ASSERT_EQ(0x00000086u, ImmutableString("tanh").unmangledNameHash());
+    ASSERT_EQ(0x00000092u, ImmutableString("asinh").unmangledNameHash());
     ASSERT_EQ(0x00000031u, ImmutableString("acosh").unmangledNameHash());
-    ASSERT_EQ(0x000000a0u, ImmutableString("atanh").unmangledNameHash());
+    ASSERT_EQ(0x0000009fu, ImmutableString("atanh").unmangledNameHash());
     ASSERT_EQ(0x00000061u, ImmutableString("pow").unmangledNameHash());
     ASSERT_EQ(0x000000c8u, ImmutableString("exp").unmangledNameHash());
-    ASSERT_EQ(0x0000006bu, ImmutableString("log").unmangledNameHash());
-    ASSERT_EQ(0x0000006eu, ImmutableString("exp2").unmangledNameHash());
+    ASSERT_EQ(0x0000006au, ImmutableString("log").unmangledNameHash());
+    ASSERT_EQ(0x0000006du, ImmutableString("exp2").unmangledNameHash());
     ASSERT_EQ(0x00000047u, ImmutableString("log2").unmangledNameHash());
-    ASSERT_EQ(0x000000a3u, ImmutableString("sqrt").unmangledNameHash());
-    ASSERT_EQ(0x00000082u, ImmutableString("inversesqrt").unmangledNameHash());
+    ASSERT_EQ(0x000000a2u, ImmutableString("sqrt").unmangledNameHash());
+    ASSERT_EQ(0x00000081u, ImmutableString("inversesqrt").unmangledNameHash());
     ASSERT_EQ(0x00000041u, ImmutableString("abs").unmangledNameHash());
-    ASSERT_EQ(0x00000081u, ImmutableString("sign").unmangledNameHash());
-    ASSERT_EQ(0x0000009du, ImmutableString("floor").unmangledNameHash());
+    ASSERT_EQ(0x00000080u, ImmutableString("sign").unmangledNameHash());
+    ASSERT_EQ(0x0000009cu, ImmutableString("floor").unmangledNameHash());
     ASSERT_EQ(0x00000051u, ImmutableString("trunc").unmangledNameHash());
     ASSERT_EQ(0x0000002au, ImmutableString("round").unmangledNameHash());
     ASSERT_EQ(0x00000017u, ImmutableString("roundEven").unmangledNameHash());
     ASSERT_EQ(0x0000001bu, ImmutableString("ceil").unmangledNameHash());
-    ASSERT_EQ(0x00000071u, ImmutableString("fract").unmangledNameHash());
+    ASSERT_EQ(0x00000070u, ImmutableString("fract").unmangledNameHash());
     ASSERT_EQ(0x00000020u, ImmutableString("mod").unmangledNameHash());
     ASSERT_EQ(0x000000c4u, ImmutableString("min").unmangledNameHash());
     ASSERT_EQ(0x00000043u, ImmutableString("max").unmangledNameHash());
     ASSERT_EQ(0x0000002cu, ImmutableString("clamp").unmangledNameHash());
-    ASSERT_EQ(0x000000a5u, ImmutableString("mix").unmangledNameHash());
+    ASSERT_EQ(0x000000a4u, ImmutableString("mix").unmangledNameHash());
     ASSERT_EQ(0x0000004eu, ImmutableString("step").unmangledNameHash());
     ASSERT_EQ(0x00000023u, ImmutableString("smoothstep").unmangledNameHash());
     ASSERT_EQ(0x00000028u, ImmutableString("modf").unmangledNameHash());
     ASSERT_EQ(0x00000039u, ImmutableString("isnan").unmangledNameHash());
     ASSERT_EQ(0x000000b6u, ImmutableString("isinf").unmangledNameHash());
     ASSERT_EQ(0x00000021u, ImmutableString("floatBitsToInt").unmangledNameHash());
-    ASSERT_EQ(0x00000065u, ImmutableString("floatBitsToUint").unmangledNameHash());
-    ASSERT_EQ(0x0000008fu, ImmutableString("intBitsToFloat").unmangledNameHash());
+    ASSERT_EQ(0x00000064u, ImmutableString("floatBitsToUint").unmangledNameHash());
+    ASSERT_EQ(0x0000008eu, ImmutableString("intBitsToFloat").unmangledNameHash());
     ASSERT_EQ(0x0000005du, ImmutableString("uintBitsToFloat").unmangledNameHash());
-    ASSERT_EQ(0x00000076u, ImmutableString("fma").unmangledNameHash());
+    ASSERT_EQ(0x00000075u, ImmutableString("fma").unmangledNameHash());
     ASSERT_EQ(0x00000011u, ImmutableString("frexp").unmangledNameHash());
-    ASSERT_EQ(0x00000064u, ImmutableString("ldexp").unmangledNameHash());
+    ASSERT_EQ(0x00000063u, ImmutableString("ldexp").unmangledNameHash());
     ASSERT_EQ(0x000000c6u, ImmutableString("packSnorm2x16").unmangledNameHash());
     ASSERT_EQ(0x000000ccu, ImmutableString("packHalf2x16").unmangledNameHash());
     ASSERT_EQ(0x00000046u, ImmutableString("unpackSnorm2x16").unmangledNameHash());
     ASSERT_EQ(0x0000005fu, ImmutableString("unpackHalf2x16").unmangledNameHash());
     ASSERT_EQ(0x0000005eu, ImmutableString("packUnorm2x16").unmangledNameHash());
     ASSERT_EQ(0x000000b0u, ImmutableString("unpackUnorm2x16").unmangledNameHash());
-    ASSERT_EQ(0x00000080u, ImmutableString("packUnorm4x8").unmangledNameHash());
+    ASSERT_EQ(0x0000007fu, ImmutableString("packUnorm4x8").unmangledNameHash());
     ASSERT_EQ(0x0000000cu, ImmutableString("packSnorm4x8").unmangledNameHash());
     ASSERT_EQ(0x00000002u, ImmutableString("unpackUnorm4x8").unmangledNameHash());
     ASSERT_EQ(0x00000029u, ImmutableString("unpackSnorm4x8").unmangledNameHash());
     ASSERT_EQ(0x000000c0u, ImmutableString("packDouble2x32").unmangledNameHash());
     ASSERT_EQ(0x0000002du, ImmutableString("unpackDouble2x32").unmangledNameHash());
     ASSERT_EQ(0x0000005au, ImmutableString("length").unmangledNameHash());
-    ASSERT_EQ(0x00000084u, ImmutableString("distance").unmangledNameHash());
+    ASSERT_EQ(0x00000083u, ImmutableString("distance").unmangledNameHash());
     ASSERT_EQ(0x000000ceu, ImmutableString("dot").unmangledNameHash());
-    ASSERT_EQ(0x000000a2u, ImmutableString("cross").unmangledNameHash());
-    ASSERT_EQ(0x00000099u, ImmutableString("normalize").unmangledNameHash());
+    ASSERT_EQ(0x000000a1u, ImmutableString("cross").unmangledNameHash());
+    ASSERT_EQ(0x00000098u, ImmutableString("normalize").unmangledNameHash());
     ASSERT_EQ(0x00000040u, ImmutableString("faceforward").unmangledNameHash());
     ASSERT_EQ(0x000000b5u, ImmutableString("reflect").unmangledNameHash());
     ASSERT_EQ(0x000000c2u, ImmutableString("refract").unmangledNameHash());
-    ASSERT_EQ(0x000000a6u, ImmutableString("ftransform").unmangledNameHash());
+    ASSERT_EQ(0x000000a5u, ImmutableString("ftransform").unmangledNameHash());
     ASSERT_EQ(0x00000060u, ImmutableString("matrixCompMult").unmangledNameHash());
     ASSERT_EQ(0x000000bfu, ImmutableString("outerProduct").unmangledNameHash());
     ASSERT_EQ(0x0000004du, ImmutableString("transpose").unmangledNameHash());
-    ASSERT_EQ(0x00000078u, ImmutableString("determinant").unmangledNameHash());
+    ASSERT_EQ(0x00000077u, ImmutableString("determinant").unmangledNameHash());
     ASSERT_EQ(0x0000000du, ImmutableString("inverse").unmangledNameHash());
     ASSERT_EQ(0x00000026u, ImmutableString("lessThan").unmangledNameHash());
     ASSERT_EQ(0x0000004cu, ImmutableString("lessThanEqual").unmangledNameHash());
-    ASSERT_EQ(0x0000007du, ImmutableString("greaterThan").unmangledNameHash());
-    ASSERT_EQ(0x0000007bu, ImmutableString("greaterThanEqual").unmangledNameHash());
+    ASSERT_EQ(0x0000007cu, ImmutableString("greaterThan").unmangledNameHash());
+    ASSERT_EQ(0x0000007au, ImmutableString("greaterThanEqual").unmangledNameHash());
     ASSERT_EQ(0x00000056u, ImmutableString("equal").unmangledNameHash());
     ASSERT_EQ(0x000000beu, ImmutableString("notEqual").unmangledNameHash());
-    ASSERT_EQ(0x00000097u, ImmutableString("any").unmangledNameHash());
+    ASSERT_EQ(0x00000096u, ImmutableString("any").unmangledNameHash());
     ASSERT_EQ(0x00000000u, ImmutableString("all").unmangledNameHash());
     ASSERT_EQ(0x0000001eu, ImmutableString("not").unmangledNameHash());
-    ASSERT_EQ(0x00000090u, ImmutableString("bitfieldExtract").unmangledNameHash());
-    ASSERT_EQ(0x0000007eu, ImmutableString("bitfieldInsert").unmangledNameHash());
+    ASSERT_EQ(0x0000008fu, ImmutableString("bitfieldExtract").unmangledNameHash());
+    ASSERT_EQ(0x0000007du, ImmutableString("bitfieldInsert").unmangledNameHash());
     ASSERT_EQ(0x0000003bu, ImmutableString("bitfieldReverse").unmangledNameHash());
-    ASSERT_EQ(0x0000006cu, ImmutableString("bitCount").unmangledNameHash());
+    ASSERT_EQ(0x0000006bu, ImmutableString("bitCount").unmangledNameHash());
     ASSERT_EQ(0x00000008u, ImmutableString("findLSB").unmangledNameHash());
     ASSERT_EQ(0x0000002fu, ImmutableString("findMSB").unmangledNameHash());
     ASSERT_EQ(0x00000035u, ImmutableString("uaddCarry").unmangledNameHash());
     ASSERT_EQ(0x00000058u, ImmutableString("usubBorrow").unmangledNameHash());
     ASSERT_EQ(0x000000b8u, ImmutableString("umulExtended").unmangledNameHash());
     ASSERT_EQ(0x00000013u, ImmutableString("imulExtended").unmangledNameHash());
-    ASSERT_EQ(0x00000094u, ImmutableString("texture2D").unmangledNameHash());
+    ASSERT_EQ(0x00000093u, ImmutableString("texture2D").unmangledNameHash());
     ASSERT_EQ(0x0000004au, ImmutableString("texture2DProj").unmangledNameHash());
     ASSERT_EQ(0x000000c5u, ImmutableString("textureCube").unmangledNameHash());
     ASSERT_EQ(0x0000001cu, ImmutableString("texture1D").unmangledNameHash());
     ASSERT_EQ(0x000000b3u, ImmutableString("texture1DProj").unmangledNameHash());
     ASSERT_EQ(0x000000b7u, ImmutableString("texture3D").unmangledNameHash());
-    ASSERT_EQ(0x0000007fu, ImmutableString("texture3DProj").unmangledNameHash());
-    ASSERT_EQ(0x0000007cu, ImmutableString("shadow1D").unmangledNameHash());
-    ASSERT_EQ(0x0000009au, ImmutableString("shadow1DProj").unmangledNameHash());
-    ASSERT_EQ(0x000000a9u, ImmutableString("shadow2D").unmangledNameHash());
+    ASSERT_EQ(0x0000007eu, ImmutableString("texture3DProj").unmangledNameHash());
+    ASSERT_EQ(0x0000007bu, ImmutableString("shadow1D").unmangledNameHash());
+    ASSERT_EQ(0x00000099u, ImmutableString("shadow1DProj").unmangledNameHash());
+    ASSERT_EQ(0x000000a8u, ImmutableString("shadow2D").unmangledNameHash());
     ASSERT_EQ(0x0000003eu, ImmutableString("shadow2DProj").unmangledNameHash());
     ASSERT_EQ(0x00000030u, ImmutableString("texture2DRect").unmangledNameHash());
     ASSERT_EQ(0x0000001fu, ImmutableString("texture2DRectProj").unmangledNameHash());
     ASSERT_EQ(0x00000010u, ImmutableString("texture").unmangledNameHash());
     ASSERT_EQ(0x00000001u, ImmutableString("textureProj").unmangledNameHash());
-    ASSERT_EQ(0x00000088u, ImmutableString("texture2DGradEXT").unmangledNameHash());
+    ASSERT_EQ(0x00000087u, ImmutableString("texture2DGradEXT").unmangledNameHash());
     ASSERT_EQ(0x00000014u, ImmutableString("texture2DProjGradEXT").unmangledNameHash());
     ASSERT_EQ(0x0000000au, ImmutableString("textureCubeGradEXT").unmangledNameHash());
-    ASSERT_EQ(0x0000007au, ImmutableString("texture3DLod").unmangledNameHash());
-    ASSERT_EQ(0x00000091u, ImmutableString("texture3DProjLod").unmangledNameHash());
+    ASSERT_EQ(0x00000079u, ImmutableString("texture3DLod").unmangledNameHash());
+    ASSERT_EQ(0x00000090u, ImmutableString("texture3DProjLod").unmangledNameHash());
     ASSERT_EQ(0x0000003cu, ImmutableString("dFdx").unmangledNameHash());
     ASSERT_EQ(0x00000027u, ImmutableString("dFdy").unmangledNameHash());
     ASSERT_EQ(0x00000004u, ImmutableString("fwidth").unmangledNameHash());
     ASSERT_EQ(0x00000057u, ImmutableString("texture2DLodEXT").unmangledNameHash());
     ASSERT_EQ(0x00000018u, ImmutableString("texture2DProjLodEXT").unmangledNameHash());
-    ASSERT_EQ(0x00000067u, ImmutableString("textureCubeLodEXT").unmangledNameHash());
+    ASSERT_EQ(0x00000066u, ImmutableString("textureCubeLodEXT").unmangledNameHash());
     ASSERT_EQ(0x000000cdu, ImmutableString("texture2DLod").unmangledNameHash());
-    ASSERT_EQ(0x00000063u, ImmutableString("texture2DProjLod").unmangledNameHash());
+    ASSERT_EQ(0x00000062u, ImmutableString("texture2DProjLod").unmangledNameHash());
     ASSERT_EQ(0x0000000eu, ImmutableString("textureCubeLod").unmangledNameHash());
     ASSERT_EQ(0x000000c7u, ImmutableString("texture1DLod").unmangledNameHash());
-    ASSERT_EQ(0x0000008au, ImmutableString("texture1DProjLod").unmangledNameHash());
-    ASSERT_EQ(0x00000074u, ImmutableString("shadow1DLod").unmangledNameHash());
+    ASSERT_EQ(0x00000089u, ImmutableString("texture1DProjLod").unmangledNameHash());
+    ASSERT_EQ(0x00000073u, ImmutableString("shadow1DLod").unmangledNameHash());
     ASSERT_EQ(0x00000009u, ImmutableString("shadow1DProjLod").unmangledNameHash());
-    ASSERT_EQ(0x000000abu, ImmutableString("shadow2DLod").unmangledNameHash());
+    ASSERT_EQ(0x000000aau, ImmutableString("shadow2DLod").unmangledNameHash());
     ASSERT_EQ(0x00000055u, ImmutableString("shadow2DProjLod").unmangledNameHash());
     ASSERT_EQ(0x0000003fu, ImmutableString("textureLod").unmangledNameHash());
     ASSERT_EQ(0x0000005bu, ImmutableString("textureSize").unmangledNameHash());
-    ASSERT_EQ(0x00000066u, ImmutableString("textureProjLod").unmangledNameHash());
+    ASSERT_EQ(0x00000065u, ImmutableString("textureProjLod").unmangledNameHash());
     ASSERT_EQ(0x000000bau, ImmutableString("texelFetch").unmangledNameHash());
     ASSERT_EQ(0x00000048u, ImmutableString("textureGrad").unmangledNameHash());
     ASSERT_EQ(0x00000024u, ImmutableString("textureProjGrad").unmangledNameHash());
     ASSERT_EQ(0x00000025u, ImmutableString("textureQueryLevels").unmangledNameHash());
-    ASSERT_EQ(0x000000a1u, ImmutableString("textureSamples").unmangledNameHash());
+    ASSERT_EQ(0x000000a0u, ImmutableString("textureSamples").unmangledNameHash());
     ASSERT_EQ(0x000000b1u, ImmutableString("textureQueryLod").unmangledNameHash());
     ASSERT_EQ(0x0000002bu, ImmutableString("textureOffset").unmangledNameHash());
     ASSERT_EQ(0x00000050u, ImmutableString("textureProjOffset").unmangledNameHash());
-    ASSERT_EQ(0x0000009eu, ImmutableString("textureLodOffset").unmangledNameHash());
-    ASSERT_EQ(0x0000006au, ImmutableString("textureProjLodOffset").unmangledNameHash());
+    ASSERT_EQ(0x0000009du, ImmutableString("textureLodOffset").unmangledNameHash());
+    ASSERT_EQ(0x00000069u, ImmutableString("textureProjLodOffset").unmangledNameHash());
     ASSERT_EQ(0x00000059u, ImmutableString("texelFetchOffset").unmangledNameHash());
     ASSERT_EQ(0x000000aeu, ImmutableString("textureGradOffset").unmangledNameHash());
     ASSERT_EQ(0x00000016u, ImmutableString("textureProjGradOffset").unmangledNameHash());
     ASSERT_EQ(0x00000005u, ImmutableString("rgb_2_yuv").unmangledNameHash());
     ASSERT_EQ(0x00000007u, ImmutableString("yuv_2_rgb").unmangledNameHash());
-    ASSERT_EQ(0x00000079u, ImmutableString("textureGather").unmangledNameHash());
-    ASSERT_EQ(0x00000069u, ImmutableString("textureGatherOffset").unmangledNameHash());
-    ASSERT_EQ(0x00000075u, ImmutableString("textureGatherOffsets").unmangledNameHash());
+    ASSERT_EQ(0x00000078u, ImmutableString("textureGather").unmangledNameHash());
+    ASSERT_EQ(0x00000068u, ImmutableString("textureGatherOffset").unmangledNameHash());
+    ASSERT_EQ(0x00000074u, ImmutableString("textureGatherOffsets").unmangledNameHash());
     ASSERT_EQ(0x0000001au, ImmutableString("dFdxFine").unmangledNameHash());
-    ASSERT_EQ(0x0000006du, ImmutableString("dFdyFine").unmangledNameHash());
-    ASSERT_EQ(0x00000085u, ImmutableString("dFdxCoarse").unmangledNameHash());
-    ASSERT_EQ(0x0000009cu, ImmutableString("dFdyCoarse").unmangledNameHash());
-    ASSERT_EQ(0x0000009fu, ImmutableString("fwidthFine").unmangledNameHash());
-    ASSERT_EQ(0x0000008bu, ImmutableString("fwidthCoarse").unmangledNameHash());
+    ASSERT_EQ(0x0000006cu, ImmutableString("dFdyFine").unmangledNameHash());
+    ASSERT_EQ(0x00000084u, ImmutableString("dFdxCoarse").unmangledNameHash());
+    ASSERT_EQ(0x0000009bu, ImmutableString("dFdyCoarse").unmangledNameHash());
+    ASSERT_EQ(0x0000009eu, ImmutableString("fwidthFine").unmangledNameHash());
+    ASSERT_EQ(0x0000008au, ImmutableString("fwidthCoarse").unmangledNameHash());
     ASSERT_EQ(0x000000b4u, ImmutableString("interpolateAtCentroid").unmangledNameHash());
     ASSERT_EQ(0x00000053u, ImmutableString("interpolateAtSample").unmangledNameHash());
     ASSERT_EQ(0x00000032u, ImmutableString("interpolateAtOffset").unmangledNameHash());
-    ASSERT_EQ(0x0000008eu, ImmutableString("atomicCounter").unmangledNameHash());
+    ASSERT_EQ(0x0000008du, ImmutableString("atomicCounter").unmangledNameHash());
     ASSERT_EQ(0x00000006u, ImmutableString("atomicCounterIncrement").unmangledNameHash());
     ASSERT_EQ(0x0000004bu, ImmutableString("atomicCounterDecrement").unmangledNameHash());
-    ASSERT_EQ(0x000000a7u, ImmutableString("atomicCounterAdd").unmangledNameHash());
-    ASSERT_EQ(0x00000072u, ImmutableString("atomicCounterSubtract").unmangledNameHash());
-    ASSERT_EQ(0x0000008du, ImmutableString("atomicCounterMin").unmangledNameHash());
-    ASSERT_EQ(0x0000008cu, ImmutableString("atomicCounterMax").unmangledNameHash());
+    ASSERT_EQ(0x000000a6u, ImmutableString("atomicCounterAdd").unmangledNameHash());
+    ASSERT_EQ(0x00000071u, ImmutableString("atomicCounterSubtract").unmangledNameHash());
+    ASSERT_EQ(0x0000008cu, ImmutableString("atomicCounterMin").unmangledNameHash());
+    ASSERT_EQ(0x0000008bu, ImmutableString("atomicCounterMax").unmangledNameHash());
     ASSERT_EQ(0x00000045u, ImmutableString("atomicCounterAnd").unmangledNameHash());
     ASSERT_EQ(0x0000002eu, ImmutableString("atomicCounterOr").unmangledNameHash());
     ASSERT_EQ(0x0000001du, ImmutableString("atomicCounterXor").unmangledNameHash());
     ASSERT_EQ(0x000000bcu, ImmutableString("atomicCounterExchange").unmangledNameHash());
-    ASSERT_EQ(0x000000a4u, ImmutableString("atomicCounterCompSwap").unmangledNameHash());
-    ASSERT_EQ(0x00000092u, ImmutableString("atomicAdd").unmangledNameHash());
+    ASSERT_EQ(0x000000a3u, ImmutableString("atomicCounterCompSwap").unmangledNameHash());
+    ASSERT_EQ(0x00000091u, ImmutableString("atomicAdd").unmangledNameHash());
     ASSERT_EQ(0x000000cau, ImmutableString("atomicMin").unmangledNameHash());
     ASSERT_EQ(0x0000003au, ImmutableString("atomicMax").unmangledNameHash());
     ASSERT_EQ(0x00000015u, ImmutableString("atomicAnd").unmangledNameHash());
     ASSERT_EQ(0x000000b9u, ImmutableString("atomicOr").unmangledNameHash());
-    ASSERT_EQ(0x00000098u, ImmutableString("atomicXor").unmangledNameHash());
-    ASSERT_EQ(0x00000062u, ImmutableString("atomicExchange").unmangledNameHash());
-    ASSERT_EQ(0x0000006fu, ImmutableString("atomicCompSwap").unmangledNameHash());
+    ASSERT_EQ(0x00000097u, ImmutableString("atomicXor").unmangledNameHash());
+    ASSERT_EQ(0x000000abu, ImmutableString("atomicExchange").unmangledNameHash());
+    ASSERT_EQ(0x0000006eu, ImmutableString("atomicCompSwap").unmangledNameHash());
     ASSERT_EQ(0x000000c1u, ImmutableString("imageSize").unmangledNameHash());
-    ASSERT_EQ(0x00000070u, ImmutableString("imageSamples").unmangledNameHash());
+    ASSERT_EQ(0x0000006fu, ImmutableString("imageSamples").unmangledNameHash());
     ASSERT_EQ(0x0000000fu, ImmutableString("imageAtomicAdd").unmangledNameHash());
     ASSERT_EQ(0x000000acu, ImmutableString("imageAtomicMin").unmangledNameHash());
     ASSERT_EQ(0x000000b2u, ImmutableString("imageAtomicMax").unmangledNameHash());
-    ASSERT_EQ(0x0000009bu, ImmutableString("imageAtomicAnd").unmangledNameHash());
+    ASSERT_EQ(0x0000009au, ImmutableString("imageAtomicAnd").unmangledNameHash());
     ASSERT_EQ(0x00000036u, ImmutableString("imageAtomicOr").unmangledNameHash());
     ASSERT_EQ(0x00000034u, ImmutableString("imageAtomicXor").unmangledNameHash());
     ASSERT_EQ(0x000000cbu, ImmutableString("imageAtomicExchange").unmangledNameHash());
     ASSERT_EQ(0x00000003u, ImmutableString("imageAtomicCompSwap").unmangledNameHash());
     ASSERT_EQ(0x00000037u, ImmutableString("imageLoad").unmangledNameHash());
-    ASSERT_EQ(0x00000068u, ImmutableString("imageStore").unmangledNameHash());
-    ASSERT_EQ(0x00000083u, ImmutableString("noise1").unmangledNameHash());
-    ASSERT_EQ(0x00000086u, ImmutableString("noise2").unmangledNameHash());
+    ASSERT_EQ(0x00000067u, ImmutableString("imageStore").unmangledNameHash());
+    ASSERT_EQ(0x00000082u, ImmutableString("noise1").unmangledNameHash());
+    ASSERT_EQ(0x00000085u, ImmutableString("noise2").unmangledNameHash());
     ASSERT_EQ(0x000000c3u, ImmutableString("noise3").unmangledNameHash());
     ASSERT_EQ(0x000000bdu, ImmutableString("noise4").unmangledNameHash());
-    ASSERT_EQ(0x00000089u, ImmutableString("memoryBarrier").unmangledNameHash());
+    ASSERT_EQ(0x00000088u, ImmutableString("memoryBarrier").unmangledNameHash());
     ASSERT_EQ(0x00000019u, ImmutableString("memoryBarrierAtomicCounter").unmangledNameHash());
-    ASSERT_EQ(0x00000095u, ImmutableString("memoryBarrierBuffer").unmangledNameHash());
+    ASSERT_EQ(0x00000094u, ImmutableString("memoryBarrierBuffer").unmangledNameHash());
     ASSERT_EQ(0x0000000bu, ImmutableString("memoryBarrierImage").unmangledNameHash());
     ASSERT_EQ(0x00000049u, ImmutableString("barrier").unmangledNameHash());
     ASSERT_EQ(0x0000003du, ImmutableString("memoryBarrierShared").unmangledNameHash());
     ASSERT_EQ(0x000000c9u, ImmutableString("groupMemoryBarrier").unmangledNameHash());
-    ASSERT_EQ(0x00000073u, ImmutableString("EmitVertex").unmangledNameHash());
+    ASSERT_EQ(0x00000072u, ImmutableString("EmitVertex").unmangledNameHash());
     ASSERT_EQ(0x000000bbu, ImmutableString("EndPrimitive").unmangledNameHash());
     ASSERT_EQ(0x00000054u, ImmutableString("EmitStreamVertex").unmangledNameHash());
-    ASSERT_EQ(0x00000077u, ImmutableString("EndStreamPrimitive").unmangledNameHash());
+    ASSERT_EQ(0x00000076u, ImmutableString("EndStreamPrimitive").unmangledNameHash());
     ASSERT_EQ(0x00000044u, ImmutableString("subpassLoad").unmangledNameHash());
-    ASSERT_EQ(0x000000aau, ImmutableString("anyInvocation").unmangledNameHash());
+    ASSERT_EQ(0x000000a9u, ImmutableString("anyInvocation").unmangledNameHash());
     ASSERT_EQ(0x00000042u, ImmutableString("allInvocations").unmangledNameHash());
     ASSERT_EQ(0x000000adu, ImmutableString("allInvocationsEqual").unmangledNameHash());
 }
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp
index ddbf442..e6e65ef 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_gtest.cpp
@@ -19,10 +19,11 @@
 #include "common/debug.h"
 #include "common/platform.h"
 #include "common/string_utils.h"
+#include "common/system_utils.h"
 #include "platform/Platform.h"
 #include "tests/test_expectations/GPUTestConfig.h"
 #include "tests/test_expectations/GPUTestExpectationsParser.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 namespace angle
 {
@@ -90,15 +91,19 @@
 
 using APIInfo = std::pair<const char *, GPUTestConfig::API>;
 
-const APIInfo gEGLDisplayAPIs[] = {
-    {"angle-d3d9", GPUTestConfig::kAPID3D9},    {"angle-d3d11", GPUTestConfig::kAPID3D11},
-    {"angle-gl", GPUTestConfig::kAPIGLDesktop}, {"angle-gles", GPUTestConfig::kAPIGLES},
-    {"angle-null", GPUTestConfig::kAPIUnknown}, {"angle-vulkan", GPUTestConfig::kAPIVulkan},
+constexpr APIInfo kEGLDisplayAPIs[] = {
+    {"angle-d3d9", GPUTestConfig::kAPID3D9},
+    {"angle-d3d11", GPUTestConfig::kAPID3D11},
+    {"angle-gl", GPUTestConfig::kAPIGLDesktop},
+    {"angle-gles", GPUTestConfig::kAPIGLES},
+    {"angle-null", GPUTestConfig::kAPIUnknown},
+    {"angle-vulkan", GPUTestConfig::kAPIVulkan},
+    {"angle-swiftshader", GPUTestConfig::kAPISwiftShader},
 };
 
-const char *gdEQPEGLString  = "--deqp-egl-display-type=";
-const char *gANGLEEGLString = "--use-angle=";
-const char *gdEQPCaseString = "--deqp-case=";
+constexpr char kdEQPEGLString[]  = "--deqp-egl-display-type=";
+constexpr char kANGLEEGLString[] = "--use-angle=";
+constexpr char kdEQPCaseString[] = "--deqp-case=";
 
 std::array<char, 500> gCaseStringBuffer;
 
@@ -125,7 +130,7 @@
 
 const APIInfo *FindAPIInfo(const std::string &arg)
 {
-    for (auto &displayAPI : gEGLDisplayAPIs)
+    for (auto &displayAPI : kEGLDisplayAPIs)
     {
         if (arg == displayAPI.first)
         {
@@ -487,7 +492,7 @@
 
     // Add init api.
     const char *targetApi    = gInitAPI ? gInitAPI->first : GetDefaultAPIName();
-    std::string apiArgString = std::string(gdEQPEGLString) + targetApi;
+    std::string apiArgString = std::string(kdEQPEGLString) + targetApi;
     argv.push_back(apiArgString.c_str());
 
     // Add config name
@@ -616,14 +621,14 @@
     int argIndex = 0;
     while (argIndex < *argc)
     {
-        if (strncmp(argv[argIndex], gdEQPEGLString, strlen(gdEQPEGLString)) == 0)
+        if (strncmp(argv[argIndex], kdEQPEGLString, strlen(kdEQPEGLString)) == 0)
         {
-            HandleDisplayType(argv[argIndex] + strlen(gdEQPEGLString));
+            HandleDisplayType(argv[argIndex] + strlen(kdEQPEGLString));
             DeleteArg(argc, argIndex, argv);
         }
-        else if (strncmp(argv[argIndex], gANGLEEGLString, strlen(gANGLEEGLString)) == 0)
+        else if (strncmp(argv[argIndex], kANGLEEGLString, strlen(kANGLEEGLString)) == 0)
         {
-            HandleDisplayType(argv[argIndex] + strlen(gANGLEEGLString));
+            HandleDisplayType(argv[argIndex] + strlen(kANGLEEGLString));
             DeleteArg(argc, argIndex, argv);
         }
         else if (strncmp(argv[argIndex], gdEQPEGLConfigNameString,
@@ -632,9 +637,9 @@
             HandleEGLConfigName(argv[argIndex] + strlen(gdEQPEGLConfigNameString));
             DeleteArg(argc, argIndex, argv);
         }
-        else if (strncmp(argv[argIndex], gdEQPCaseString, strlen(gdEQPCaseString)) == 0)
+        else if (strncmp(argv[argIndex], kdEQPCaseString, strlen(kdEQPCaseString)) == 0)
         {
-            HandleCaseName(argv[argIndex] + strlen(gdEQPCaseString), argc, argIndex, argv);
+            HandleCaseName(argv[argIndex] + strlen(kdEQPCaseString), argc, argIndex, argv);
             argIndex++;
         }
         else
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp
index 6222eb0..ea9f09b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/angle_deqp_libtester_main.cpp
@@ -10,6 +10,7 @@
 
 #include "angle_deqp_libtester.h"
 #include "common/angleutils.h"
+#include "common/system_utils.h"
 #include "deMath.h"
 #include "deUniquePtr.hpp"
 #include "platform/Platform.h"
@@ -20,7 +21,6 @@
 #include "tcuRandomOrderExecutor.h"
 #include "tcuResource.hpp"
 #include "tcuTestLog.hpp"
-#include "util/system_utils.h"
 
 tcu::Platform *CreateANGLEPlatform(angle::LogErrorFunc logErrorFunc);
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_TestExpectations
deleted file mode 100644
index 40d3696..0000000
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_egl_TestExpectations
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright 2015 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains a list of defective dEQP conformance tests. The expected
-// format is:
-//  {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
-//
-// MODIFIERS can be a combination of the below list, combined with a logical AND:
-//  WIN XP VISTA WIN7 WIN8 WIN10
-//  MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
-//  LINUX CHROMEOS ANDROID
-//  NVIDIA AMD INTEL
-//  DEBUG RELEASE
-//  D3D9 D3D11 OPENGL GLES VULKAN
-//  NEXUS5X PIXEL2
-//  QUADROP400
-//
-//
-// TEST_NAME can be a specific test name, or have a '*' in the end, which
-// indicates a prefix matching.
-//
-// Examples:
-// fails on both windows and mac (crash)
-//  91530 WIN : context_lost_restored = SKIP
-//  91530 MAC : context_lost_restored = SKIP
-// fails on windows using NVIDIA GPUs
-//  91533 WIN NVIDIA : gl_min_uniforms = FAIL
-// fails on Nexus5X with GLES backend (hangs)
-//  91531 NEXUS5X GLES : conformance_more_* = SKIP
-
-// ANGLE does not yet support multithreading
-1340 : dEQP-EGL.functional.sharing.gles2.multithread.* = SKIP
-1340 : dEQP-EGL.functional.multithread.* = SKIP
-1340 : dEQP-EGL.functional.render.multi_thread.* = SKIP
-
-// dEQP doesn't handle configs created for extensions
-1662 WIN : dEQP-EGL.functional.color_clears.single_context.gles2.other = FAIL
-1662 WIN : dEQP-EGL.functional.color_clears.single_context.gles3.other = FAIL
-1662 WIN : dEQP-EGL.functional.color_clears.multi_context.gles2.other = FAIL
-1662 WIN : dEQP-EGL.functional.color_clears.multi_context.gles3.other = FAIL
-1662 WIN : dEQP-EGL.functional.color_clears.multi_thread.gles2.other = FAIL
-1662 WIN : dEQP-EGL.functional.color_clears.multi_thread.gles3.other = FAIL
-1662 WIN : dEQP-EGL.functional.render.single_context.gles2.other = FAIL
-1662 WIN : dEQP-EGL.functional.render.single_context.gles3.other = FAIL
-1662 WIN : dEQP-EGL.functional.render.multi_context.gles2.other = FAIL
-1662 WIN : dEQP-EGL.functional.render.multi_context.gles3.other = FAIL
-1662 WIN : dEQP-EGL.functional.render.multi_context.gles2_gles3.other = FAIL
-1662 WIN : dEQP-EGL.functional.render.multi_thread.gles2.other = FAIL
-1662 WIN : dEQP-EGL.functional.render.multi_thread.gles3.other = FAIL
-1662 WIN : dEQP-EGL.functional.native_coord_mapping.native_window.other_clear = FAIL
-1662 WIN : dEQP-EGL.functional.native_coord_mapping.native_window.other_render = FAIL
-1662 WIN : dEQP-EGL.functional.query_context.get_current_context.other = FAIL
-1662 WIN : dEQP-EGL.functional.query_context.get_current_surface.other = FAIL
-1662 WIN : dEQP-EGL.functional.query_context.get_current_display.other = FAIL
-1662 WIN : dEQP-EGL.functional.query_context.query_context.other = FAIL
-1662 WIN : dEQP-EGL.functional.native_color_mapping.native_window.other_clear = SKIP
-1662 WIN : dEQP-EGL.functional.native_color_mapping.native_window.other_render = SKIP
-
-// Intentionally causes TDRs that eventually blacklist the application
-2319 : dEQP-EGL.functional.robustness.reset_context.shaders.infinite_loop.* = SKIP
-
-////////////////////////////////////////////////////////////////////////////////
-//
-//  Temprory entries: they should be removed once the bugs are fixed.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// Flaky since we enabled depth/stencil backbuffer in all tests.
-2429 WIN NVIDIA : dEQP-EGL.functional.query_context.query_context.rgba8888_window = FAIL
-
-// TODO(jmadill): Triage these into permananent and temporary failures.
-1340 WIN : dEQP-EGL.functional.query_config.get_configs.get_configs_bounds = FAIL
-3270 WIN : dEQP-EGL.functional.choose_config.simple.selection_only.config_id = FAIL
-3270 WIN : dEQP-EGL.functional.choose_config.simple.selection_and_sort.config_id = FAIL
-1340 WIN : dEQP-EGL.functional.render.single_context.gles2.rgba5551_window = FAIL
-1340 WIN : dEQP-EGL.functional.render.single_context.gles2.rgba5551_pbuffer = FAIL
-1340 WIN : dEQP-EGL.functional.render.single_context.gles3.rgba5551_window = FAIL
-1340 WIN : dEQP-EGL.functional.render.single_context.gles3.rgba5551_pbuffer = FAIL
-1340 WIN : dEQP-EGL.functional.render.multi_context.gles2.rgba5551_window = FAIL
-1340 WIN : dEQP-EGL.functional.render.multi_context.gles2.rgba5551_pbuffer = FAIL
-1340 WIN : dEQP-EGL.functional.render.multi_context.gles3.rgba5551_window = FAIL
-1340 WIN : dEQP-EGL.functional.render.multi_context.gles3.rgba5551_pbuffer = FAIL
-1340 WIN : dEQP-EGL.functional.render.multi_context.gles2_gles3.rgba5551_window = FAIL
-1340 WIN : dEQP-EGL.functional.render.multi_context.gles2_gles3.rgba5551_pbuffer = FAIL
-1340 WIN : dEQP-EGL.functional.negative_api.choose_config = SKIP
-1340 WIN : dEQP-EGL.functional.negative_api.surface_attrib = SKIP
-1340 WIN : dEQP-EGL.functional.negative_api.swap_interval = FAIL
-2382 WIN : dEQP-EGL.functional.native_color_mapping.native_window.* = SKIP
-1340 WIN : dEQP-EGL.functional.native_coord_mapping.native_window.* = FAIL
-2716 WIN : dEQP-EGL.functional.preserve_swap.preserve.no_read_before_swap.* = SKIP
-2716 WIN : dEQP-EGL.functional.preserve_swap.preserve.read_before_swap.* = SKIP
-1340 WIN : dEQP-EGL.functional.resize.back_buffer.* = SKIP
-1340 WIN : dEQP-EGL.functional.resize.pixel_density.* = SKIP
-
-// Windows OpenGL failures
-2546 WIN : dEQP-EGL.functional.resize.surface_size.shrink = SKIP
-2546 WIN : dEQP-EGL.functional.color_clears.multi_thread.* = FAIL
-2546 WIN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_depth_stencil = FAIL
-2546 WIN : dEQP-EGL.functional.thread_cleanup.* = SKIP
-
-// Windows Vulkan failures
-2635 WIN VULKAN : dEQP-EGL.functional.multicontext.non_shared_clear = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.multicontext.non_shared_make_current = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.multicontext.shared_clear = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.multicontext.shared_make_current = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.query_surface.set_attribute.pbuffer.rgba8888_depth_stencil = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.query_surface.set_attribute.pbuffer.rgba8888_no_depth_no_stencil = FAIL
-2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_depth_no_stencil = FAIL
-2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_depth_stencil = FAIL
-2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_no_depth_no_stencil = FAIL
-2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_depth_no_stencil = FAIL
-2715 WIN VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_no_depth_no_stencil = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.resize.surface_size.grow = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.resize.surface_size.stretch_height = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.resize.surface_size.stretch_width = FAIL
-2635 WIN VULKAN : dEQP-EGL.functional.wide_color.pbuffer_8888_colorspace_default = FAIL
-2716 WIN VULKAN : dEQP-EGL.functional.preserve_swap.no_preserve.* = FAIL
-
-// Linux failures
-2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles1.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles1_gles2.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles1_gles2_gles3.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles2.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles3.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.multi_thread.* = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.multi_thread.gles1_gles2.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.multi_thread.gles1_gles2_gles3.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.single_context.gles1.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.single_context.gles2.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.color_clears.single_context.gles3.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.create_surface.pixmap.rgba8888_depth_stencil = SKIP
-2546 LINUX : dEQP-EGL.functional.create_surface.pixmap.rgba8888_no_depth_no_stencil = SKIP
-2546 LINUX : dEQP-EGL.functional.negative_api.copy_buffers = SKIP
-2546 LINUX : dEQP-EGL.functional.query_context.get_current_context.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.query_context.get_current_display.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.query_context.get_current_surface.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.query_context.query_context.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.query_surface.set_attribute.pixmap.rgba8888_depth_stencil = SKIP
-2546 LINUX : dEQP-EGL.functional.query_surface.set_attribute.pixmap.rgba8888_no_depth_no_stencil = SKIP
-2546 LINUX : dEQP-EGL.functional.query_surface.simple.pixmap.rgba8888_depth_stencil = SKIP
-2546 LINUX : dEQP-EGL.functional.query_surface.simple.pixmap.rgba8888_no_depth_no_stencil = SKIP
-2546 LINUX : dEQP-EGL.functional.render.multi_context.* = SKIP
-2546 LINUX : dEQP-EGL.functional.render.single_context.gles2.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.render.single_context.gles3.rgba8888_pixmap = SKIP
-2546 LINUX : dEQP-EGL.functional.thread_cleanup.* = SKIP
-2546 LINUX : dEQP-EGL.functional.native_color_mapping.native_window.* = FAIL
-2546 LINUX : dEQP-EGL.functional.native_coord_mapping.native_window.* = FAIL
-2546 LINUX : dEQP-EGL.functional.negative_api.choose_config = FAIL
-2546 LINUX : dEQP-EGL.functional.negative_api.swap_interval = FAIL
-2546 LINUX : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_depth_stencil = FAIL
-2546 LINUX : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_no_depth_no_stencil = FAIL
-
-// Linux Vulkan failures
-2635 LINUX VULKAN : dEQP-EGL.functional.query_surface.set_attribute.pbuffer.rgba8888_depth_stencil = FAIL
-2635 LINUX VULKAN : dEQP-EGL.functional.query_surface.set_attribute.pbuffer.rgba8888_no_depth_no_stencil = FAIL
-2715 LINUX VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_depth_stencil = FAIL
-2715 LINUX VULKAN : dEQP-EGL.functional.query_surface.simple.pbuffer.rgb888_no_depth_no_stencil = FAIL
-2716 LINUX VULKAN : dEQP-EGL.functional.preserve_swap.no_preserve.* = FAIL
-
-// Mac failures
-2546 MAC : dEQP-EGL.functional.native_color_mapping.native_window.* = FAIL
-2546 MAC : dEQP-EGL.functional.native_coord_mapping.native_window.* = FAIL
-2546 MAC : dEQP-EGL.functional.negative_api.choose_config = FAIL
-2546 MAC : dEQP-EGL.functional.negative_api.copy_buffers = FAIL
-2546 MAC : dEQP-EGL.functional.negative_api.swap_interval = FAIL
-2546 MAC : dEQP-EGL.functional.query_surface.simple.pbuffer.rgba8888_depth_stencil = FAIL
-2546 MAC : dEQP-EGL.functional.color_clears.multi_thread.* = SKIP
-2546 MAC : dEQP-EGL.functional.thread_cleanup.* = SKIP
-
-// Android GLES-only failues
-2567 ANDROID GLES : dEQP-EGL.functional.image.api.create_image_gles2_tex2d_red = FAIL
-2567 ANDROID GLES : dEQP-EGL.functional.image.api.create_image_gles2_tex2d_rg = FAIL
-2716 ANDROID GLES : dEQP-EGL.functional.preserve_swap.preserve.* = FAIL
-
-// Android failures
-2546 ANDROID : dEQP-EGL.functional.buffer_age.* = FAIL
-3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_only.transparent_red_value = FAIL
-3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_only.transparent_green_value = FAIL
-3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_only.transparent_blue_value = FAIL
-3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_and_sort.transparent_red_value = FAIL
-3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_and_sort.transparent_green_value = FAIL
-3270 ANDROID : dEQP-EGL.functional.choose_config.simple.selection_and_sort.transparent_blue_value = FAIL
-2546 ANDROID : dEQP-EGL.functional.color_clears.multi_context.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.color_clears.multi_thread.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.color_clears.single_context.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.native_color_mapping.native_window.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.native_coord_mapping.native_window.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.negative_api.copy_buffers = FAIL
-2546 ANDROID : dEQP-EGL.functional.partial_update.odd_clear_* = FAIL
-2546 ANDROID : dEQP-EGL.functional.partial_update.odd_render_* = FAIL
-2546 ANDROID : dEQP-EGL.functional.partial_update.render_* = FAIL
-2546 ANDROID : dEQP-EGL.functional.query_context.get_current_context.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.query_context.get_current_display.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.query_context.get_current_surface.r* = FAIL
-2546 ANDROID : dEQP-EGL.functional.query_context.query_context.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.render.multi_context.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.render.single_context.* = SKIP
-2546 ANDROID : dEQP-EGL.functional.thread_cleanup.multi_context_* = SKIP
-2546 ANDROID : dEQP-EGL.functional.thread_cleanup.single_context_* = FAIL
-
-// Vulkan
-3081 VULKAN : dEQP-EGL.functional.image.create.gles2_renderbuffer_depth16_depth_buffer = SKIP
-3081 VULKAN : dEQP-EGL.functional.image.create.gles2_renderbuffer_stencil_stencil_buffer = SKIP
-3081 VULKAN : dEQP-EGL.functional.image.modify.renderbuffer_depth16_renderbuffer_clear_depth = SKIP
-3081 VULKAN : dEQP-EGL.functional.image.modify.renderbuffer_stencil_renderbuffer_clear_stencil = SKIP
-3081 VULKAN : dEQP-EGL.functional.image.render_multiple_contexts.gles2_renderbuffer_depth16_depth_buffer = SKIP
-3081 VULKAN : dEQP-EGL.functional.image.render_multiple_contexts.gles2_renderbuffer_stencil_stencil_buffer = SKIP
-
-// Android Vulkan
-2546 ANDROID VULKAN : dEQP-EGL.functional.create_surface.window.other = SKIP
-2546 ANDROID VULKAN : dEQP-EGL.functional.query_context.get_current_surface.other = SKIP
-2546 ANDROID VULKAN : dEQP-EGL.functional.query_surface.set_attribute.window.other = SKIP
-2546 ANDROID VULKAN : dEQP-EGL.functional.query_surface.simple.window.other = SKIP
-2546 ANDROID VULKAN : dEQP-EGL.functional.resize.pixel_density.* = SKIP
-2546 ANDROID VULKAN : dEQP-EGL.functional.wide_color.window* = SKIP
-
-// Robustness failures on multiple platforms
-3711 : dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds.reset_status.reads.* = FAIL
-3711 : dEQP-EGL.functional.robustness.reset_context.shaders.out_of_bounds.reset_status.writes.* = FAIL
-
-// ES 1 tests
-2306 WIN : dEQP-EGL.functional.color_clears.single_context.gles1* = FAIL
-2306 WIN : dEQP-EGL.functional.color_clears.multi_context.gles1* = FAIL
-2306 MAC : dEQP-EGL.functional.color_clears.single_context.gles1* = FAIL
-2306 MAC : dEQP-EGL.functional.color_clears.multi_context.gles1* = FAIL
-2306 LINUX : dEQP-EGL.functional.color_clears.single_context.gles1* = FAIL
-2306 LINUX : dEQP-EGL.functional.color_clears.multi_context.gles1* = FAIL
-
-// Tests failing since the Jan 2018 roll of dEQP
-2341 : dEQP-EGL.functional.swap_buffers.* = SKIP
-2330 : dEQP-EGL.functional.robustness.create_context.no_reset_notification = SKIP
-2330 : dEQP-EGL.functional.robustness.create_context.lose_context_on_reset = SKIP
-2330 : dEQP-EGL.functional.robustness.reset_context.fixed_function_pipeline.reset_status.index_buffer_out_of_bounds = SKIP
-2330 : dEQP-EGL.functional.robustness.reset_context.fixed_function_pipeline.reset_status.vertex_buffer_out_of_bounds = SKIP
-
-// Tests were being hidden by flakiness (anglebug.com/3271)
-3325 : dEQP-EGL.functional.fence_sync.* = SKIP
-3325 : dEQP-EGL.functional.reusable_sync.* = SKIP
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles2_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles2_TestExpectations
deleted file mode 100644
index d36d016..0000000
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles2_TestExpectations
+++ /dev/null
@@ -1,385 +0,0 @@
-// Copyright 2015 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains a list of defective dEQP conformance tests. The expected
-// format is:
-//  {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
-//
-// MODIFIERS can be a combination of the below list, combined with a logical AND:
-//  WIN XP VISTA WIN7 WIN8 WIN10
-//  MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
-//  LINUX CHROMEOS ANDROID
-//  NVIDIA AMD INTEL
-//  DEBUG RELEASE
-//  D3D9 D3D11 OPENGL GLES VULKAN
-//  NEXUS5X PIXEL2
-//  QUADROP400
-//
-//
-// TEST_NAME can be a specific test name, or have a '*' in the end, which
-// indicates a prefix matching.
-//
-// Examples:
-// fails on both windows and mac (crash)
-//  91530 WIN : context_lost_restored = SKIP
-//  91530 MAC : context_lost_restored = SKIP
-// fails on windows using NVIDIA GPUs
-//  91533 WIN NVIDIA : gl_min_uniforms = FAIL
-// fails on Nexus5X with GLES backend (hangs)
-//  91531 NEXUS5X GLES : conformance_more_* = SKIP
-
-// Skip these tests due to timeouts
-1034 : dEQP-GLES2.functional.flush_finish.* = SKIP
-
-// Failures related to not supporting separate depth/stencil masks on D3D11.
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil_ops.* = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.write_mask.* = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.blend.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.random.* = FAIL
-1655 D3D11 : dEQP-GLES2.functional.fragment_ops.interaction.basic_shader.* = FAIL
-
-////////////////////////////////////////////////////////////////////////////////
-//
-//  Temporary entries: they should be removed once the bugs are fixed.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// dEQP bugs
-1028 : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.srgb8 = FAIL
-1028 : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.srgb8 = FAIL
-1028 : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.srgb8 = FAIL
-
-// Vertex attribute aliasing is not supported on D3D
-3467 D3D9 : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond* = FAIL
-3467 D3D9 : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond* = FAIL
-3467 D3D11 : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond* = FAIL
-3467 D3D11 : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond* = FAIL
-
-// Shader failures.
-3434 NEXUS5X GLES : dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_* = FAIL
-
-// The fragment_ops.depth_stencil.random tests all seem to fail on D3D11.
-3282 D3D11 : dEQP-GLES2.functional.fragment_ops.depth_stencil.random.* = FAIL
-
-// Failures related to the depth_range on Windows / NVIDIA and ATI.
-2426 D3D11 : dEQP-GLES2.functional.depth_range.write.reverse = FAIL
-2426 D3D11 : dEQP-GLES2.functional.depth_range.write.half_to_zero = FAIL
-2426 D3D11 : dEQP-GLES2.functional.depth_range.write.one_to_half = FAIL
-2426 D3D11 : dEQP-GLES2.functional.depth_range.write.0_8_to_third = FAIL
-2426 D3D11 : dEQP-GLES2.functional.depth_range.compare.reverse = FAIL
-2426 D3D11 : dEQP-GLES2.functional.depth_range.compare.half_to_zero = FAIL
-2426 D3D11 : dEQP-GLES2.functional.depth_range.compare.one_to_half = FAIL
-2426 D3D11 : dEQP-GLES2.functional.depth_range.compare.0_8_to_third = FAIL
-
-// Windows D3D11 Intel and NVIDIA. Suppressed on all cards for simplicity.
-3292 D3D11 : dEQP-GLES2.functional.polygon_offset.default_render_with_units = FAIL
-3292 D3D11 : dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units = FAIL
-
-// Common subexpression invariance
-3293 D3D11 : dEQP-GLES2.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
-3293 D3D11 : dEQP-GLES2.functional.shaders.invariance.lowp.common_subexpression_1 = FAIL
-3293 D3D11 : dEQP-GLES2.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
-
-// Fails with significant image differences
-3295 D3D11 : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
-
-// Only fails in D3D11 32-bit.
-1418 D3D11 : dEQP-GLES2.functional.clipping.triangle_vertex.clip_three.clip_pos_x_pos_y_pos_z_and_neg_x_pos_y_pos_z_and_neg_x_neg_y_neg_z = FAIL
-
-// D3D11 AMD
-2342 D3D11 AMD : dEQP-GLES2.functional.texture.size.cube.64x64_l8 = FAIL
-2342 D3D11 AMD : dEQP-GLES2.functional.texture.size.cube.64x64_rgb888 = FAIL
-2342 D3D11 AMD : dEQP-GLES2.functional.texture.size.cube.64x64_rgba8888 = FAIL
-
-// Additional texture.vertex.cube failures on AMD
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_repeat = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_repeat = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_clamp = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_repeat = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_nearest_mirror = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_clamp = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_repeat = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.nearest_mipmap_linear_linear_mirror = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_clamp = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat = FAIL
-3299 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_mirror = FAIL
-
-// Quadro P400
-// TODO(jmadill): Narrow to P400 device only: 0x1CB3.
-2222 D3D11 NVIDIA : dEQP-GLES2.functional.shaders.functions.control_flow.return_in_nested_loop_fragment = FAIL
-2222 D3D11 NVIDIA : dEQP-GLES2.functional.shaders.functions.control_flow.return_in_nested_loop_vertex = FAIL
-
-// AMD GPU vertex shader texture sampling is not precise enough when rendering to 32-bit backbuffers
-2337 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.2d.wrap.* = FAIL
-2337 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_mipmap_linear_* = FAIL
-2337 D3D11 AMD : dEQP-GLES2.functional.texture.vertex.2d.filtering.nearest_mipmap_linear_* = FAIL
-
-// Several mipmap sub tests fail on AMD. Mark them all as failing conservatively.
-3296 D3D11 AMD : dEQP-GLES2.functional.texture.mipmap.* = FAIL
-
-// Failures on the D3D11 bots that do not reproduce locally
-// TODO(jmadill): Figure out why these fail on the bots, but not locally.
-1108 D3D11 : dEQP-GLES2.functional.shaders.struct.local.dynamic_loop_struct_array_fragment = FAIL
-1108 D3D11 : dEQP-GLES2.functional.shaders.invariance.highp.loop_2 = FAIL
-1108 D3D11 : dEQP-GLES2.functional.shaders.invariance.mediump.loop_2 = FAIL
-
-// OpenGL desktop back-end failures
-1656 OPENGL : dEQP-GLES2.functional.fbo.completeness.renderable.texture.color0.srgb8_alpha8 = FAIL
-1656 OPENGL : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.srgb8_alpha8 = FAIL
-1656 OPENGL : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.srgb8_alpha8 = FAIL
-3291 OPENGL : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
-
-// Linux OpenGL Intel
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_repeat = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_repeat = FAIL
-3302 OPENGL INTEL LINUX : dEQP-GLES2.functional.texture.vertex.cube.wrap.repeat_repeat = FAIL
-
-// Linux OpenGL NVIDIA
-3303 OPENGL NVIDIA LINUX : dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear = FAIL
-
-// Mac OpenGL specific failures
-3466 MAC OPENGL : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond* = SKIP
-3466 MAC OPENGL : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond* = SKIP
-3433 MAC OPENGL : dEQP-GLES2.functional.shaders.preprocessor.pragmas.pragma_vertex = FAIL
-1143 MAC OPENGL : dEQP-GLES2.functional.shaders.scoping.valid.local_int_variable_hides_struct_type_* = FAIL
-1143 MAC OPENGL : dEQP-GLES2.functional.shaders.scoping.valid.local_struct_variable_hides_struct_type_* = FAIL
-1143 MAC OPENGL : dEQP-GLES2.functional.shaders.scoping.valid.function_parameter_hides_struct_type_* = FAIL
-1143 MAC OPENGL : dEQP-GLES2.functional.shaders.random.trigonometric.vertex.65 = FAIL
-2631 MAC OPENGL : dEQP-GLES2.functional.shaders.operator.sequence.side_effects.affect_* = FAIL
-3317 MAC OPENGL : dEQP-GLES2.functional.shaders.linkage.varying_4 = FAIL
-
-// MAC OPENGL INTEL specific
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.complex_rgb = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.complex_rgba = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.long_masked_rgb = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.long_masked_rgba = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.masked_rgb = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.masked_rgba = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.masked_scissored_rgb = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.masked_scissored_rgba = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.scissored_rgb = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.scissored_rgba = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.color_clear.short_scissored_rgb = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_alpha = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_luminance = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_luminance_alpha = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_rgb = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.specification.basic_copyteximage2d.cube_rgba = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.discard.dynamic_loop_never = SKIP
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.discard.function_static_loop_never = SKIP
-2137 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.discard.static_loop_never = SKIP
-
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.polygon_offset.default_render_with_units = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.highp.common_subexpression_3 = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.mediump.common_subexpression_3 = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.lowp.common_subexpression_1 = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.shaders.invariance.lowp.common_subexpression_3 = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba8888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgb888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_rgba4444_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_clamp_l8_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_repeat_rgba8888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_repeat_rgb888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_repeat_rgba4444_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_repeat_l8_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_mirror_rgba8888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_mirror_rgb888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_mirror_rgba4444_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.2d.linear_nearest_mirror_l8_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba8888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgb888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_rgba4444_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_clamp_l8_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_repeat_rgba8888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_repeat_rgb888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_repeat_rgba4444_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_repeat_l8_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_mirror_rgba8888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_mirror_rgb888_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_mirror_rgba4444_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.filtering.cube.linear_nearest_mirror_l8_pot = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.vertex.2d.filtering.linear_nearest_* = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_nearest_* = FAIL
-
-3531 MAC OPENGL INTEL : dEQP-GLES2.functional.fbo.render.color_clear.tex2d_rgb = FAIL
-3531 MAC OPENGL INTEL : dEQP-GLES2.functional.fbo.render.color_clear.tex2d_rgb_depth_component16 = FAIL
-3531 MAC OPENGL INTEL : dEQP-GLES2.functional.fbo.render.color_clear.tex2d_rgb_stencil_index8 = FAIL
-3531 MAC OPENGL INTEL : dEQP-GLES2.functional.fbo.render.stencil_clear.tex2d_rgb_stencil_index8 = FAIL
-
-// Mac AMD OpenGL specific
-2137 MAC OPENGL AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip = FAIL
-3317 MAC OPENGL AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center = FAIL
-3317 MAC OPENGL AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner = FAIL
-
-// Android GLES backend only failures
-1488 GLES ANDROID : dEQP-GLES2.functional.shaders.return.conditional_return_always_vertex = FAIL
-1488 GLES ANDROID : dEQP-GLES2.functional.shaders.return.conditional_return_always_fragment = FAIL
-1488 GLES ANDROID : dEQP-GLES2.functional.shaders.return.output_write_always_vertex = FAIL
-1488 GLES ANDROID : dEQP-GLES2.functional.shaders.return.output_write_always_fragment = FAIL
-2631 GLES ANDROID : dEQP-GLES2.functional.shaders.operator.sequence.side_effects.affect_* = FAIL
-2630 GLES ANDROID : dEQP-GLES2.functional.shaders.struct.uniform.sampler_in_array_function_arg_* = FAIL
-2630 GLES ANDROID : dEQP-GLES2.functional.shaders.struct.uniform.sampler_in_function_arg_* = FAIL
-
-// Nexus 5x failures
-3309 NEXUS5X GLES : dEQP-GLES2.functional.attribute_location.bind_aliasing.cond* = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.attribute_location.bind_aliasing.max_cond* = FAIL
-3716 NEXUS5X GLES : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_int = FAIL
-3716 NEXUS5X GLES : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_short = FAIL
-3716 NEXUS5X GLES : dEQP-GLES2.functional.fbo.completeness.renderable.texture.depth.depth_stencil_unsigned_int_24_8 = FAIL
-3716 NEXUS5X GLES : dEQP-GLES2.functional.fbo.completeness.renderable.texture.stencil.depth_stencil_unsigned_int_24_8 = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.fbo.render.texsubimage.after_render_tex2d_rgb = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.polygon_offset.default_result_depth_clamp = FAIL
-3715 NEXUS5X GLES : dEQP-GLES2.functional.shaders.builtin_variable.max_draw_buffers_vertex = FAIL
-3715 NEXUS5X GLES : dEQP-GLES2.functional.shaders.builtin_variable.max_draw_buffers_fragment = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.shaders.return.output_write_in_func_always_vertex = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.shaders.return.output_write_in_func_always_fragment = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.texture.mipmap.cube.* = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_* = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_* = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_* = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.uniform_api.random.3 = FAIL
-3309 NEXUS5X GLES : dEQP-GLES2.functional.uniform_api.random.54 = FAIL
-
-// D3D11 AMD already covered by Line 148
-3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest = FAIL
-3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear = FAIL
-3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
-3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
-3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest = FAIL
-3243 D3D11 INTEL : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear = FAIL
-3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest = FAIL
-3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear = FAIL
-3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
-3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
-3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest = FAIL
-3243 D3D11 NVIDIA : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear = FAIL
-
-// Fail with very tiny pixel differences
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat = FAIL
-3240 D3D11 : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror = FAIL
-
-// Android Vulkan backend only failures
-2549 VULKAN ANDROID : dEQP-GLES2.functional.fragment_ops.depth_stencil.stencil* = SKIP
-
-// Adreno line rasterization is not conformant.
-2830 VULKAN ANDROID : dEQP-GLES2.functional.rasterization.primitives.line_loop = FAIL
-2830 VULKAN ANDROID : dEQP-GLES2.functional.rasterization.primitives.line_strip = FAIL
-2830 VULKAN ANDROID : dEQP-GLES2.functional.rasterization.primitives.lines = FAIL
-2830 VULKAN ANDROID : dEQP-GLES2.functional.clipping.line.long_line_clip = FAIL
-
-// Failing on the Pixel 2.
-2808 VULKAN ANDROID : dEQP-GLES2.functional.shaders.builtin_variable.fragcoord_w = FAIL
-3306 VULKAN ANDROID : dEQP-GLES2.functional.polygon_offset.default_factor_1_slope = FAIL
-3306 VULKAN ANDROID : dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope = FAIL
-
-// These tests also fail on AMD windows driver as it is not allowed to use emulation due to errors.
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.shaders.texture_functions.vertex.texturecubelod = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_nearest = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.basic.linear_linear = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_nearest = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.projected.linear_linear = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_nearest = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.mipmap.cube.bias.linear_linear = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_clamp = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_nearest_mirror = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_clamp = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.filtering.linear_mipmap_linear_linear_mirror = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_clamp = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_repeat = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.clamp_mirror = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_clamp = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_repeat = FAIL
-3243 VULKAN WIN AMD : dEQP-GLES2.functional.texture.vertex.cube.wrap.mirror_mirror = FAIL
-
-// Vulkan AMD drivers don't seem to support wide point clipping.
-2463 VULKAN WIN AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip = FAIL
-2463 VULKAN WIN AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_center = FAIL
-2463 VULKAN WIN AMD : dEQP-GLES2.functional.clipping.point.wide_point_clip_viewport_corner = FAIL
-
-// These failures are possibly due to an AMD driver bug.
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.draw.random.14 = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.draw.random.30 = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.draw.random.41 = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.first.byte_first* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.first.float_first* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_17_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_2_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_1_32_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_17_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_2_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_17_32_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_17_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_32_32_float* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_17_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.offset.buffer_4_32_float* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_17_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_float* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_32_short* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_3_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.strides.buffer_0_6_short* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_0_short* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_17_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_byte* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_float* = SKIP
-2847 VULKAN WIN AMD : dEQP-GLES2.functional.vertex_arrays.single_attribute.usages.buffer_0_32_short* = SKIP
-
-// Fails after OpenGL line rasterization rules implementation. Possibly a bug in FragCoord.
-2809 VULKAN WIN AMD : dEQP-GLES2.functional.clipping.line.long_line_clip = FAIL
-
-// Polygon offset failures
-3301 VULKAN WIN AMD : dEQP-GLES2.functional.polygon_offset.default_result_depth_clamp = FAIL
-3301 VULKAN WIN AMD : dEQP-GLES2.functional.polygon_offset.default_factor_1_slope = FAIL
-3301 VULKAN WIN AMD : dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units = FAIL
-
-// Failures on newer NVIDIA drivers (411.95) and passes on older drivers (388.16).
-2976 VULKAN NVIDIA : dEQP-GLES2.functional.shaders.invariance.* = FAIL
-// Fails on 431.02 NVIDIA driver
-3748 VULKAN WIN NVIDIA : dEQP-GLES2.functional.fbo.render.repeated_clear.* = FAIL
\ No newline at end of file
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations
deleted file mode 100644
index c0c39ca..0000000
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles31_TestExpectations
+++ /dev/null
@@ -1,751 +0,0 @@
-// Copyright 2016 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains a list of defective dEQP conformance tests. The expected
-// format is:
-//  {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
-//
-// MODIFIERS can be a combination of the below list, combined with a logical AND:
-//  WIN XP VISTA WIN7 WIN8 WIN10
-//  MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
-//  LINUX CHROMEOS ANDROID
-//  NVIDIA AMD INTEL
-//  DEBUG RELEASE
-//  D3D9 D3D11 OPENGL GLES VULKAN
-//  NEXUS5X PIXEL2
-//  QUADROP400
-//
-//
-// TEST_NAME can be a specific test name, or have a '*' in the end, which
-// indicates a prefix matching.
-//
-// Examples:
-// fails on both windows and mac (crash)
-//  91530 WIN : context_lost_restored = SKIP
-//  91530 MAC : context_lost_restored = SKIP
-// fails on windows using NVIDIA GPUs
-//  91533 WIN NVIDIA : gl_min_uniforms = FAIL
-// fails on Nexus5X with GLES backend (hangs)
-//  91531 NEXUS5X GLES : conformance_more_* = SKIP
-
-// Crashing Tests
-1920 NVIDIA D3D11 : dEQP-GLES31.functional.layout_binding.ubo.vertex_binding_max = SKIP
-1442 D3D11 : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.builtin_gl_position = SKIP
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.resource_list.vertex_fragment.builtin_gl_position = SKIP
-
-// Crashing Tests on Linux on Intel HD 630.
-2349 LINUX INTEL : dEQP-GLES31.functional.synchronization.in_invocation.image_* = SKIP
-2349 LINUX INTEL : dEQP-GLES31.functional.synchronization.inter_invocation.image_* = SKIP
-2349 LINUX INTEL : dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_small = SKIP
-2349 LINUX INTEL : dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_small = SKIP
-2349 LINUX INTEL : dEQP-GLES31.functional.compute.basic.image_barrier_multiple = SKIP
-
-// Failing Tests on Linux on Intel HD 630.
-2349 LINUX INTEL : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.program_binary = FAIL
-
-1442 D3D11 : dEQP-GLES31.functional.image_load_store.* = SKIP
-
-// Times out shader compilation because it uses so many resources.
-3445 : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.48 = SKIP
-
-// D3D11 Failing Tests
-// Below cases are failed due to binding multi-UAVs to a single buffer is not supported in D3D backend.
-// http://anglebug.com/3032
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.single_struct.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.single_struct_array.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.single_nested_struct.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.single_nested_struct_array.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.unsized_struct_array.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.2_level_unsized_struct_array.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.unsized_nested_struct_array.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.multi_basic_types.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.multi_nested_struct.single_buffer* = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.13 = FAIL
-3032 D3D11 : dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer* = FAIL
-
-1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_compute_atomic_counters_* = FAIL
-1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_atomic_counter_buffer_size_* = FAIL
-1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_atomic_counters* = FAIL
-1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_uniform_buffer_bindings_* = FAIL
-1442 D3D11 : dEQP-GLES31.functional.state_query.integer.max_combined_texture_image_units_* = FAIL
-1442 D3D11 : dEQP-GLES31.functional.state_query.program.compute_work_group_size_get_programiv = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.async.case_4_log = SKIP
-1442 D3D11 : dEQP-GLES31.functional.debug.async.case_5_callback = SKIP
-1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_2 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_3 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_9 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_10 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_27 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_filters.case_28 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_2 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_3 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_9 = FAIL
-1442 D3D11 : dEQP-GLES31.functional.debug.error_groups.case_10 = FAIL
-
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.abs.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.sign.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floor.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.trunc.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.round.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.roundeven.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ceil.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fract.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.modf.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isnan.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.isinf.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstoint.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.floatbitstouint.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.float_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.float_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.float_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.fma.vec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.intbitstofloat.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.common.uintbitstofloat.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm4x8_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm4x8_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm4x8_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm4x8_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packsnorm2x16_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpacksnorm2x16_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packunorm2x16_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackunorm2x16_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.packhalf2x16_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.unpackhalf2x16_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.uaddcarry.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.usubborrow.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.umulextended.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.imulextended.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldextract.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldinsert.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitfieldreverse.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.bitcount.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findlsb.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.int_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.ivec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uint_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec2_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec3_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_lowp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_mediump_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_functions.integer.findmsb.uvec4_highp_geometry = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.builtin_constants.geometry_shader.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.state_query.program.geometry_shader_state_get_programiv = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.query.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.basic.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.conversion.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.emit.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.varying.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.layered.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.instanced.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.input.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.negative.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.geometry_shading.vertex_transform_feedback.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.shaders.linkage.es31.geometry.* = FAIL
-1941 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.geometry_shader = FAIL
-1941 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.geometry_shader = FAIL
-1941 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.geometry_shader = FAIL
-2826 D3D11 : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8.texture_swizzle.* = FAIL
-2826 D3D11 : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8i.* = FAIL
-2826 D3D11 : dEQP-GLES31.functional.texture.gather.basic.cube.rgba8ui.* = FAIL
-
-// Failing with dEQP roll
-3447 D3D11 : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.22 = FAIL
-3447 D3D11 : dEQP-GLES31.functional.ssbo.layout.random.all_per_block_buffers.41 = FAIL
-
-// OPENGL Failing Tests
-1665 WIN NVIDIA OPENGL : dEQP-GLES31.functional.draw_indirect.negative.command_offset_not_in_buffer_unsigned32_wrap = FAIL
-1442 NVIDIA OPENGL : dEQP-GLES31.functional.fbo.no_attachments.maximums.all = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.atomic_counter_buffer.referenced_by* = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.buffer_limited_query.resource_query = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.buffer_variable.* = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.program_input.* = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.program_output.* = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.shader_storage_block.referenced_by.* = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.transform_feedback_varying.* = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.* = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.uniform.random.* = FAIL
-1442 OPENGL : dEQP-GLES31.functional.program_interface_query.uniform_block.referenced_by.* = FAIL
-
-// An NVIDIA bug seems to occur when sending GL commands in a certain order to the driver
-2432 NVIDIA OPENGL : dEQP-GLES31.functional.vertex_attribute_binding.usage.mixed_usage.mixed_api_change_binding_point = SKIP
-
-// OpenGL/D3D11/Vulkan Failing Tests
-3865 : dEQP-GLES31.functional.compute.basic.copy_image_to_ssbo_large = FAIL
-3865 : dEQP-GLES31.functional.compute.basic.copy_ssbo_to_image_large = FAIL
-1442 : dEQP-GLES31.functional.shaders.opaque_type_indexing.* = FAIL
-1442 : dEQP-GLES31.functional.shaders.helper_invocation.* = FAIL
-1442 : dEQP-GLES31.functional.state_query.integer.program_pipeline_binding_* = FAIL
-1442 : dEQP-GLES31.functional.state_query.program.program_separable_get_programiv = FAIL
-1442 : dEQP-GLES31.functional.state_query.program_pipeline.* = FAIL
-1442 : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.atomic_counter_dispatch_100_calls_1k_invocations = FAIL
-1442 : dEQP-GLES31.functional.separate_shader.* = FAIL
-1442 : dEQP-GLES31.functional.debug.error_filters.case_11 = FAIL
-1442 : dEQP-GLES31.functional.debug.error_groups.case_11 = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.buffer.bind_buffer_range = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.compile_compute_shader = SKIP
-1442 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.primitive_bounding_box = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_directive.tessellation_shader = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.log.buffer.bind_buffer_range = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.log.shader.compile_compute_shader = SKIP
-1442 : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.primitive_bounding_box = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.log.shader_directive.tessellation_shader = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.bind_buffer_range = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.read_pixels_format_mismatch = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.framebuffer_texture2d = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_invalid_format = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_inequal_width_height_cube = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copyteximage2d_max_width_height = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copytexsubimage2d_invalid_offset = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage2d = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage2d_invalid_size = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texsubimage3d_neg_level = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texsubimage3d_neg_offset = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.copytexsubimage3d_invalid_offset = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage3d = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.compressedtexsubimage3d_invalid_buffer_target = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.compile_compute_shader = SKIP
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.draw_range_elements = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.vertex_array.draw_range_elements_incomplete_primitive = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.primitive_bounding_box = FAIL
-1442 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_directive.tessellation_shader = FAIL
-1442 : dEQP-GLES31.functional.debug.object_labels.program_pipeline = FAIL
-
-2324 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.compute.program_not_active = FAIL
-2324 : dEQP-GLES31.functional.debug.negative_coverage.log.compute.program_not_active = FAIL
-2324 : dEQP-GLES31.functional.debug.negative_coverage.get_error.compute.program_not_active = FAIL
-2324 : dEQP-GLES31.functional.debug.negative_coverage.get_error.shader_storage.block_number_limits = FAIL
-2324 : dEQP-GLES31.functional.debug.negative_coverage.log.shader_storage.block_number_limits = FAIL
-2324 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader_storage.block_number_limits = FAIL
-
-// These tests are failing because of compile errors with SSBOs in compute shaders.
-1951 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.callbacks.compute.exceed_shared_memory_size_limit = FAIL
-1951 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.get_error.compute.exceed_shared_memory_size_limit = FAIL
-1951 D3D11 : dEQP-GLES31.functional.debug.negative_coverage.log.compute.exceed_shared_memory_size_limit = FAIL
-
-1442 D3D11 : dEQP-GLES31.functional.stencil_texturing.* = SKIP
-// TODO(xinghua.cao@intel.com): FAIL expectation instead of SKIP should be sufficient for OpenGL, but the
-// test expectations parser doesn't support having FAIL for GL and SKIP for D3D with the same test filter.
-
-1729 D3D11 : dEQP-GLES31.functional.atomic_counter.* = SKIP
-1951 D3D11 : dEQP-GLES31.functional.layout_binding.ssbo.* = SKIP
-1951 D3D11 : dEQP-GLES31.functional.shaders.opaque_type_indexing.ssbo.* = SKIP
-1442 D3D11 : dEQP-GLES31.functional.program_interface_query.* = SKIP
-1442 D3D11 : dEQP-GLES31.functional.synchronization.* = SKIP
-1442 D3D11 : dEQP-GLES31.functional.layout_binding.image.* = SKIP
-// This case is skipped since it uses atomic counter builtin functions which haven't been implemented.
-1729 D3D11 : dEQP-GLES31.functional.state_query.program.active_atomic_counter_buffers_get_programiv = SKIP
-
-// Vulkan Android failures
-
-// Debug:
-3520 VULKAN ANDROID : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameterf = FAIL
-3520 VULKAN ANDROID : dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texparameterfv = FAIL
-
-// Passing on recent drivers:
-3726 VULKAN ANDROID : dEQP-GLES31.functional.ssbo.layout.* = FAIL
-3726 VULKAN ANDROID : dEQP-GLES31.functional.atomic_counter.* = FAIL
-3726 VULKAN ANDROID : dEQP-GLES31.functional.synchronization.inter_call.without_memory_barrier.*atomic_counter* = FAIL
-3726 VULKAN ANDROID : dEQP-GLES31.functional.compute.basic.atomic_counter* = FAIL
-
-// Validation error on SPIR-V (but only on Android!)
-3882 VULKAN ANDROID : dEQP-GLES31.functional.uniform_location.nested_array.*sampler* = FAIL
-
-// General Vulkan failures
-
-// Limits:
-// MAX_FRAMEBUFFER_SAMPLES is 0
-3520 VULKAN : dEQP-GLES31.functional.state_query.integer.max_framebuffer_samples* = FAIL
-// MAX_UNIFORM_LOCATIONS is 0
-3520 VULKAN : dEQP-GLES31.functional.state_query.integer.max_uniform_locations* = FAIL
-
-// Front-end query bugs:
-3520 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_limited_query.resource_query = FAIL
-3520 VULKAN : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.compute.empty = FAIL
-3520 VULKAN : dEQP-GLES31.functional.program_interface_query.shader_storage_block.buffer_data_size.* = FAIL
-
-// Shader support:
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.common.frexp.* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.common.ldexp.* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.pack_unpack.* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.integer.* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.uniform.* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.texture_size.* = SKIP
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.precision.frexp* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_functions.precision.ldexp* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.functions* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.linkage*uniform* = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.builtin_constants.core.min_program_texel_offset = FAIL
-3569 VULKAN : dEQP-GLES31.functional.shaders.uniform_block.es31.valid.* = FAIL
-
-// SSBO and Image qualifiers:
-3602 VULKAN : dEQP-GLES31.functional.synchronization.in_invocation.ssbo_alias_overwrite = FAIL
-
-// Struct referenced by:
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.uniform_block.float_*struct* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.compute.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.uniform_block.float_*struct* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_vertex.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.uniform_block.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.uniform_block.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_vertex.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.uniform_block.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.vertex_fragment_only_fragment.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.named_block.float_*struct* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.compute.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_*struct* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_array_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_struct_array = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_struct_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.named_block.float_unsized_struct_array = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_vertex.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.named_block.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.named_block.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_vertex.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.named_block.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.vertex_fragment_only_fragment.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.*random* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.uniform_block.*struct* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.referenced_by_shader.separable_fragment.block_array.float_struct = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.program_input.resource_list.separable_fragment.* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.program_input.array_size.separable_fragment.* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.program_input.location.separable_fragment.var* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.program_input.name_length.separable_fragment.var* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.program_input.type.separable_fragment.* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.named_block.float*struct* = FAIL
-3596 VULKAN : dEQP-GLES31.functional.program_interface_query.buffer_variable.referenced_by.separable_fragment.block_array.float_struct = FAIL
-
-// Separate shader objects:
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_input.referenced_by.referenced_by_separable_fragment = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_input.referenced_by.referenced_by_vertex_fragment = SKIP
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.resource_list.separable_vertex.* = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.array_size.separable_vertex.var* = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.location.separable_vertex.var* = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.name_length.separable_vertex.var* = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.referenced_by.referenced_by_separable_vertex = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.referenced_by.referenced_by_vertex_fragment = SKIP
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.basic_type.* = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.array.* = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.program_output.type.separable_vertex.struct.* = FAIL
-3570 VULKAN : dEQP-GLES31.functional.program_interface_query.uniform.random.* = FAIL
-
-// Block name matching failure:
-3459 VULKAN : dEQP-GLES31.functional.shaders.linkage.es31.shader_storage_block.mismatch_with_and_without_instance_name = FAIL
-
-// Indirect draw:
-3564 VULKAN : dEQP-GLES31.functional.draw_indirect.* = SKIP
-
-// Tessellation geometry interaction:
-3572 VULKAN : dEQP-GLES31.functional.tessellation_geometry_interaction.* = FAIL
-
-// Framebuffer without attachments:
-3579 ANDROID VULKAN : dEQP-GLES31.functional.fbo.no_attachments.* = SKIP
-
-// Debug:
-3590 VULKAN : dEQP-GLES31.functional.debug.negative_coverage.* = SKIP
-3590 VULKAN : dEQP-GLES31.functional.debug.error_groups.case_14 = SKIP
-
-// Stencil textures (some missing support for base level):
-3683 VULKAN PIXEL2 : dEQP-GLES31.functional.stencil_texturing.format.* = FAIL
-3683 VULKAN PIXEL2 : dEQP-GLES31.functional.stencil_texturing.misc.compare_mode_effect = FAIL
-3148 VULKAN : dEQP-GLES31.functional.stencil_texturing.misc.base_level = SKIP
-
-// Multisampled textures:
-3565 VULKAN : dEQP-GLES31.functional.texture.multisample.* = SKIP
-3565 VULKAN : dEQP-GLES31.functional.state_query.texture.*multisample.* = SKIP
-
-// Base texture level:
-3148 VULKAN : dEQP-GLES31.functional.texture.gather.*base_level* = SKIP
-
-// 2D array textures:
-3189 VULKAN : dEQP-GLES31.functional.texture.gather.*2d_array* = SKIP
-3189 VULKAN : dEQP-GLES31.functional.state_query.*2d_array* = SKIP
-
-// Compressed integer textures:
-3520 VULKAN : dEQP-GLES31.functional.state_query.texture_level.texture_2d.compressed_integer = SKIP
-3520 VULKAN : dEQP-GLES31.functional.state_query.texture_level.texture_2d.compressed_float = SKIP
-
-// Vulkan creates the image view with the same format as the texture.
-3885 VULKAN : dEQP-GLES31.functional.image_load_store.*.format_reinterpret.* = FAIL
-
-// Cannot create 2D (array) view of 3D texture.
-3886 VULKAN : dEQP-GLES31.functional.image_load_store.3d.*layer = FAIL
-
-// Inactive SSBOs with flexible array member (about 20% of these tests are affected):
-3714 VULKAN : dEQP-GLES31.functional.ssbo.layout.random.* = FAIL
-
-// Validation errors:
-// Optimal tiling not supported for format:
-3520 VULKAN : dEQP-GLES31.functional.state_query.texture_level.texture* = SKIP
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_TestExpectations
deleted file mode 100644
index c09aad5..0000000
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_gles3_TestExpectations
+++ /dev/null
@@ -1,619 +0,0 @@
-// Copyright 2015 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains a list of defective dEQP conformance tests. The expected
-// format is:
-//  {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
-//
-// MODIFIERS can be a combination of the below list, combined with a logical AND:
-//  WIN XP VISTA WIN7 WIN8 WIN10
-//  MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
-//  LINUX CHROMEOS ANDROID
-//  NVIDIA AMD INTEL
-//  DEBUG RELEASE
-//  D3D9 D3D11 OPENGL GLES VULKAN
-//  NEXUS5X PIXEL2
-//  QUADROP400
-//
-//
-// TEST_NAME can be a specific test name, or have a '*' in the end, which
-// indicates a prefix matching.
-//
-// Examples:
-// fails on both windows and mac (crash)
-//  91530 WIN : context_lost_restored = SKIP
-//  91530 MAC : context_lost_restored = SKIP
-// fails on windows using NVIDIA GPUs
-//  91533 WIN NVIDIA : gl_min_uniforms = FAIL
-// fails on Nexus5X with GLES backend (hangs)
-//  91531 NEXUS5X GLES : conformance_more_* = SKIP
-
-// Don't run these tests for faster turnover
-1101 : dEQP-GLES3.functional.flush_finish.* = SKIP
-
-// Figure out why this caused this regression in Chrome:
-// https://bugs.chromium.org/p/chromium/issues/detail?id=833809#
-2321 : dEQP-GLES3.functional.state_query.fbo.framebuffer_unspecified_attachment_x_size_rbo = FAIL
-
-// TODO(jmadill): Figure out why these fail on the bots, but not locally.
-1108 WIN D3D11 : dEQP-GLES3.functional.shaders.struct.local.dynamic_loop_struct_array_fragment = FAIL
-1094 WIN D3D11 : dEQP-GLES3.functional.shaders.invariance.highp.loop_2 = FAIL
-1094 WIN D3D11 : dEQP-GLES3.functional.shaders.invariance.mediump.loop_2 = FAIL
-
-// We can't support distinct texture sizes in D3D11.
-1097 WIN D3D11 : dEQP-GLES3.functional.fbo.completeness.size.distinct = FAIL
-
-////////////////////////////////////////////////////////////////////////////////
-//
-//  Temporary entries: they should be removed once the bugs are fixed.
-//
-////////////////////////////////////////////////////////////////////////////////
-
-// Failures related to using a depth/stencil enabled backbuffer on Windows / NVIDIA.
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_1 = FAIL
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.render_all = SKIP
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.render_depth_stencil = SKIP
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.bind_depth_stencil = SKIP
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.draw_framebuffer_all = SKIP
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.read_framebuffer_all = SKIP
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.fbo.invalidate.default.bind_all = SKIP
-2428 D3D11 NVIDIA : dEQP-GLES3.functional.polygon_offset.default_render_with_units = SKIP
-
-// Tests were being hidden by flakiness (anglebug.com/3271)
-3329 D3D11 NVIDIA : dEQP-GLES3.functional.transform_feedback.interpolation.flat.* = FAIL
-3329 D3D11 NVIDIA : dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.triangles.* = FAIL
-3329 D3D11 NVIDIA : dEQP-GLES3.functional.transform_feedback.basic_types.separate.triangles.* = FAIL
-
-// Missing the SampleCmp instruction in vertex shaders.
-1435 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturelod.sampler2dshadow_vertex = FAIL
-1435 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturelodoffset.sampler2dshadow_vertex = FAIL
-1435 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.sampler2dshadow_vertex = FAIL
-1435 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojlodoffset.sampler2dshadow_vertex = FAIL
-
-// SampleCmp is missing gradient/offset parameters in HLSL.
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturelod.sampler2dshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturelodoffset.sampler2dshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.sampler2dshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojlodoffset.sampler2dshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2dshadow_vertex = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2dshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2darrayshadow_vertex = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.sampler2darrayshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2dshadow_vertex = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2dshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2darrayshadow_vertex = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.sampler2darrayshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad.sampler2dshadow_vertex = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad.sampler2dshadow_fragment = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.sampler2dshadow_vertex = FAIL
-1436 WIN D3D11 : dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.sampler2dshadow_fragment = FAIL
-
-// DrawBuffers test failing on D3D11.
-3298 WIN D3D11 : dEQP-GLES3.functional.shaders.fragdata.draw_buffers = FAIL
-
-// TODO(jmadill, cwallez): triage the failures below into permanent and temporary failures
-
-// Quadro P400
-// TODO(jmadill): Narrow to P400 device only: 0x1CB3.
-2222 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.functions.control_flow.return_in_nested_loop_fragment = FAIL
-2222 D3D11 NVIDIA : dEQP-GLES3.functional.shaders.functions.control_flow.return_in_nested_loop_vertex = FAIL
-2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.linear_nearest = FAIL
-2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.nearest_nearest = FAIL
-2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.linear_nearest = FAIL
-2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.nearest_nearest = FAIL
-2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.cube.min_lod.linear_nearest = FAIL
-2222 D3D11 NVIDIA : dEQP-GLES3.functional.texture.mipmap.cube.min_lod.nearest_nearest = FAIL
-
-// Failing everywhere
-2322 : dEQP-GLES3.functional.shaders.metamorphic.* = FAIL
-
-// Vertex attribute aliasing is not supported on D3D
-3467 D3D9 : dEQP-GLES3.functional.attribute_location.bind_aliasing.cond* = FAIL
-3467 D3D9 : dEQP-GLES3.functional.attribute_location.bind_aliasing.max_cond* = FAIL
-3467 D3D11 : dEQP-GLES3.functional.attribute_location.bind_aliasing.cond* = FAIL
-3467 D3D11 : dEQP-GLES3.functional.attribute_location.bind_aliasing.max_cond* = FAIL
-
-// Windows and Linux failures
-1095 LINUX : dEQP-GLES3.functional.texture.mipmap.2d.projected.* = FAIL
-
-// Windows only failure
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_ops.* = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.depth_stencil.write_mask.* = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.depth_stencil.random.* = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_one_minus_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_one_minus_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.add_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_one_minus_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_one_minus_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_one_minus_constant_color_one_minus_constant_alpha = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.blend.fbo_srgb.equation_src_func_dst_func.reverse_subtract_one_minus_constant_alpha_one_minus_constant_color = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.random.* = FAIL
-1096 WIN D3D11 : dEQP-GLES3.functional.fragment_ops.interaction.basic_shader.* = FAIL
-1101 WIN D3D11 : dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units = FAIL
-1101 WIN D3D11 : dEQP-GLES3.functional.polygon_offset.fixed24_render_with_units = FAIL
-1101 WIN D3D11 : dEQP-GLES3.functional.lifetime.attach.deleted_input.buffer_vertex_array = FAIL
-
-// Basic line transform feedback tests flaky on Windows.
-2676 WIN D3D11 : dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.lines.* = FAIL
-2676 WIN D3D11 : dEQP-GLES3.functional.transform_feedback.basic_types.separate.lines.* = FAIL
-
-// Very small threshold issue. Could upstream a higher tolerance to dEQP.
-2323 WIN D3D11 : dEQP-GLES3.functional.texture.units.2_units.only_cube.7 = FAIL
-
-// Blit related failures on D3D11
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_x = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_y = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_x = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_y = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_linear = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_dst_x_linear = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_dst_y_linear = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_dst_x_linear = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_dst_y_linear = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_x_linear = FAIL
-3297 WIN D3D11 : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_src_y_linear = FAIL
-
-// Windows AMD specific failures
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_scale = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.blit.depth_stencil.depth24_stencil8_stencil_only = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r11f_g11f_b10f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg32f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r32f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgb16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rg8 = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgb10_a2 = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.rgba16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.blit.tex2d.r8 = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgba32f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgba16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r11f_g11f_b10f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg32f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r32f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgb16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rg8 = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.r8 = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.rgb10_a2 = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.fbo.render.shared_colorbuffer_clear.tex2d_rgb16f = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgb10_a2_nearest_mipmap_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgb565_nearest_mipmap_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.filtering.cube.formats.rgba16f_nearest_mipmap_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.nearest_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.linear_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.2d.max_lod.nearest_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.2d.max_lod.linear_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.nearest_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.linear_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.3d.max_lod.nearest_nearest = FAIL
-1633 WIN D3D11 AMD : dEQP-GLES3.functional.texture.mipmap.3d.max_lod.linear_nearest = FAIL
-
-// D3D11 Intel specific
-
-1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.only_cube.6 = FAIL
-1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.only_2d_array.8 = FAIL
-1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.only_3d.8 = FAIL
-1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.mixed.0 = FAIL
-1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.mixed.8 = FAIL
-1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.2_units.mixed.9 = FAIL
-1349 D3D11 INTEL : dEQP-GLES3.functional.texture.units.4_units.only_3d.3 = FAIL
-2349 D3D11 INTEL : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.nearest_nearest = FAIL
-2349 D3D11 INTEL : dEQP-GLES3.functional.texture.mipmap.2d.min_lod.linear_nearest = FAIL
-2349 D3D11 INTEL : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.nearest_nearest = FAIL
-2349 D3D11 INTEL : dEQP-GLES3.functional.texture.mipmap.3d.min_lod.linear_nearest = FAIL
-2349 D3D11 INTEL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.primitives.lines = FAIL
-2349 D3D11 INTEL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_4.interpolation.lines = FAIL
-2349 D3D11 INTEL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.lines = FAIL
-2349 D3D11 INTEL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.interpolation.lines = FAIL
-
-// Failing Tests on Windows and Mac on Intel HD 630
-2137 WIN INTEL : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.* = FAIL
-2137 MAC INTEL : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.* = FAIL
-
-// Linux only failures
-
-// UBO tests trigger crashes when getting the program info log, skip them until this is fixed.
-1323 LINUX OPENGL : dEQP-GLES3.functional.ubo.* = SKIP
-
-1323 LINUX OPENGL : dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f = FAIL
-1323 LINUX OPENGL : dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8 = FAIL
-1323 LINUX OPENGL : dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f = FAIL
-1323 LINUX OPENGL : dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8 = FAIL
-1323 LINUX OPENGL : dEQP-GLES3.functional.rasterization.fbo.rbo_multisample_max.primitives.points = FAIL
-
-// While loops with 'continue' seem flaky on Linux. (Possibly all GL renderers)
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.conditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.conditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.unconditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.unconditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.only_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.only_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.double_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.double_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.mixed_break_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_constant_iterations.mixed_break_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.conditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.conditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.unconditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.unconditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.only_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.only_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.double_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.double_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.mixed_break_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_uniform_iterations.mixed_break_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.conditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.conditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.unconditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.unconditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.only_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.only_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.double_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.double_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.mixed_break_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.while_dynamic_iterations.mixed_break_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.conditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.conditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.unconditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.unconditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.only_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.only_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.double_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.double_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.mixed_break_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_constant_iterations.mixed_break_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.conditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.conditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.unconditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.unconditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.only_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.only_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.double_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.double_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.mixed_break_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_uniform_iterations.mixed_break_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.conditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.conditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.unconditional_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.unconditional_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.only_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.only_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.double_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.double_continue_fragment = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.mixed_break_continue_vertex = FAIL
-1324 LINUX OPENGL : dEQP-GLES3.functional.shaders.loops.do_while_dynamic_iterations.mixed_break_continue_fragment = FAIL
-
-// Polygon offset failures
-3304 LINUX OPENGL : dEQP-GLES3.functional.polygon_offset.float32_factor_1_slope = FAIL
-3304 LINUX OPENGL : dEQP-GLES3.functional.polygon_offset.float32_result_depth_clamp = FAIL
-
-// Flaky test
-3305 LINUX OPENGL : dEQP-GLES3.functional.shaders.builtin_functions.common.uintbitstofloat.uint_highp_vertex = FAIL
-
-// Linux Intel specific
-2349 LINUX OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.default_framebuffer* = FAIL
-
-// Mac failures (overbroad suppresions)
-3466 MAC OPENGL : dEQP-GLES3.functional.attribute_location.bind_aliasing.cond* = SKIP
-3466 MAC OPENGL : dEQP-GLES3.functional.attribute_location.bind_aliasing.max_cond* = SKIP
-2137 MAC OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.* = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_reverse_* = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.implementation_limits.compressed_texture_formats = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.implementation_limits.num_compressed_texture_formats = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.primitive_restart.* = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.linkage.varying.rules.vertex_declare_fragment_use = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.function_parameter_hides_struct_type_fragment = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.function_parameter_hides_struct_type_vertex = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.local_int_variable_hides_struct_type_fragment = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.local_int_variable_hides_struct_type_vertex = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.local_struct_variable_hides_struct_type_fragment = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.scoping.valid.local_struct_variable_hides_struct_type_vertex = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.state_query.integers.compressed_texture_formats_getfloat = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.state_query.integers.compressed_texture_formats_getinteger = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.state_query.integers.compressed_texture_formats_getinteger64 = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.dither.disabled.* = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.fragment_ops.depth_stencil.stencil_depth_funcs.stencil_* = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.arrays.complex_expression.and_short_circuits_* = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.arrays.complex_expression.or_short_circuits_* = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.fragdata.valid_static_index = FAIL
-2137 MAC OPENGL : dEQP-GLES3.functional.shaders.loops.short_circuit.* = FAIL
-3317 MAC OPENGL : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_linear = FAIL
-
-// ETC compressed formats not supported
-3853 MAC OPENGL : dEQP-GLES3.functional.negative_api.texture.compressedtexsubimage* = FAIL
-3853 MAC OPENGL : dEQP-GLES3.functional.negative_api.texture.generatemipmap = FAIL
-
-// Mac AMD failures
-2137 MAC OPENGL AMD : dEQP-GLES3.functional.clipping.point.wide_point_clip = FAIL
-2137 MAC OPENGL AMD : dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_center = FAIL
-2137 MAC OPENGL AMD : dEQP-GLES3.functional.clipping.point.wide_point_clip_viewport_corner = FAIL
-2137 MAC OPENGL AMD : dEQP-GLES3.functional.fbo.blit.rect.out_of_bounds_nearest = FAIL
-2137 MAC OPENGL AMD : dEQP-GLES3.functional.shaders.builtin_functions.precision.tanh.highp_* = FAIL
-2137 MAC OPENGL AMD : dEQP-GLES3.functional.texture.mipmap.2d.projected.* = FAIL
-2137 MAC OPENGL AMD : dEQP-GLES3.functional.transform_feedback.* = FAIL
-
-3317 MAC OPENGL AMD : dEQP-GLES3.functional.shaders.builtin_functions.precision.ceil.* = FAIL
-3317 MAC OPENGL AMD : dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.isampler3d_vertex = FAIL
-3317 MAC OPENGL AMD : dEQP-GLES3.functional.shaders.texture_functions.textureprojlod.usampler3d_vertex = FAIL
-
-// Mac Intel crashes
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.discard.function_static_loop_never = SKIP
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.discard.dynamic_loop_never = SKIP
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.discard.static_loop_never = SKIP
-
-// Mac Intel failures
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.color_clear.* = FAIL
-// All the out of bounds variants fail.
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_y = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_y = FAIL
-// Fails for all integer formats
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.completeness.attachment_combinations.none_rbo_none_none = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.completeness.attachment_combinations.none_tex_none_none = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.polygon_offset.default_render_with_units = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.polygon_offset.fixed24_render_with_units = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.builtin_functions.precision.cos.highp_* = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.builtin_functions.precision.sin.highp_* = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_1 = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.lowp.common_subexpression_3 = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_1 = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.mediump.common_subexpression_3 = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_1 = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.invariance.highp.common_subexpression_3 = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset.usampler2d_fragment = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset.usampler2d_vertex  = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegradoffset.usampler3d_fragment  = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.usampler3d_fragment  = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.usamplercube_fragment  = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturegrad.usamplercube_vertex  = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturelod.usamplercube_fragment  = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texturelod.usamplercube_vertex  = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.textureprojgradoffset.usampler3d_fragment  = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.textureprojgrad.usampler3d_fragment  = FAIL
-// Fails the integer npot cases = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.format.sized.cube.* = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_alpha = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_luminance = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_luminance_alpha = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_rgb = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.basic_copyteximage2d.cube_rgba = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.random_teximage2d.2d_5 = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.teximage3d_* = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.specification.texsubimage3d_* = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.ubo.* = FAIL
-2137 MAC OPENGL INTEL : dEQP-GLES3.functional.shaders.texture_functions.texelfetchoffset.* = FAIL
-
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_dst_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_mag_reverse_src_dst_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_dst_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_min_reverse_src_dst_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_x = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_y = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.filtering.2d_array.combinations.linear_nearest_* = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.filtering.2d.combinations.linear_nearest_* = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.filtering.3d.combinations.linear_nearest_* = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.filtering.cube.combinations.linear_nearest_* = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.mipmap.cube.max_level.linear_nearest = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.vertex.2d_array.filtering.linear_nearest_* = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.vertex.2d.filtering.linear_nearest_* = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.vertex.3d.filtering.linear_nearest_* = FAIL
-3317 MAC OPENGL INTEL : dEQP-GLES3.functional.texture.vertex.cube.filtering.linear_nearest_* = FAIL
-
-3531 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.invalidate.format.rgb8 = FAIL
-3531 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.render.resize.tex2d_rgb16f = FAIL
-3531 MAC OPENGL INTEL : dEQP-GLES3.functional.fbo.render.resize.tex2d_rgb8 = FAIL
-
-// Android only failures
-1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0.red_half_float_oes = FAIL
-1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0.rg_half_float_oes = FAIL
-1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil.depth_stencil_unsigned_int_24_8 = FAIL
-1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.depth_stencil_unsigned_int_24_8 = FAIL
-1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_short = FAIL
-1487 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.depth_component_unsigned_int = FAIL
-1964 ANDROID GLES : dEQP-GLES3.functional.occlusion_query.* = FAIL
-1962 ANDROID GLES : dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.basic_2_fragment = FAIL
-1962 ANDROID GLES : dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.basic_2_vertex = FAIL
-1962 ANDROID GLES : dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_macro_undef_fragment = FAIL
-1962 ANDROID GLES : dEQP-GLES3.functional.shaders.preprocessor.conditional_inclusion.defined_macro_undef_vertex = FAIL
-1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.conditional_return_always_fragment = FAIL
-1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.conditional_return_always_vertex = FAIL
-1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.output_write_always_fragment = FAIL
-1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.output_write_always_vertex = FAIL
-1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.output_write_in_func_always_fragment = FAIL
-1963 ANDROID GLES : dEQP-GLES3.functional.shaders.return.output_write_in_func_always_vertex = FAIL
-1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.2d.generate.a8_* = FAIL
-1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.2d.generate.l8_* = FAIL
-1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.2d.generate.la88_* = FAIL
-1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.cube.generate.a8_* = FAIL
-1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.cube.generate.l8_* = FAIL
-1529 ANDROID GLES : dEQP-GLES3.functional.texture.mipmap.cube.generate.la88_* = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.basic_types.interleaved.* = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.basic_types.separate.* = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.interpolation.* = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.point_size.* = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.position.* = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.5 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.8 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.10 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.points.6 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.points.7 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.2 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.lines.4 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.lines.6 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.lines.8 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.points.4 = FAIL
-1531 ANDROID GLES : dEQP-GLES3.functional.transform_feedback.random.separate.triangles.4 = FAIL
-2629 ANDROID GLES : dEQP-GLES3.functional.shaders.struct.local.array_member_equality_fragment = SKIP
-2629 ANDROID GLES : dEQP-GLES3.functional.shaders.struct.local.array_member_equality_vertex = SKIP
-2627 ANDROID GLES : dEQP-GLES3.functional.shaders.arrays.complex_expression.and_short_circuits_* = FAIL
-2627 ANDROID GLES : dEQP-GLES3.functional.shaders.arrays.complex_expression.or_short_circuits_* = FAIL
-2628 ANDROID GLES : dEQP-GLES3.functional.shaders.indexing.moredynamic.user_defined_fncall_inout_parameter_fragment = FAIL
-2628 ANDROID GLES : dEQP-GLES3.functional.shaders.indexing.moredynamic.user_defined_fncall_inout_parameter_with_index_with_side_effects_fragment = FAIL
-2628 ANDROID GLES : dEQP-GLES3.functional.shaders.indexing.moredynamic.user_defined_fncall_out_parameter_fragment = FAIL
-2627 ANDROID GLES : dEQP-GLES3.functional.shaders.loops.short_circuit.* = FAIL
-
-2567 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.red_unsigned_byte = FAIL
-2567 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.depth.rg_unsigned_byte = FAIL
-2567 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil.red_unsigned_byte = FAIL
-2567 ANDROID GLES : dEQP-GLES3.functional.fbo.completeness.renderable.texture.stencil.rg_unsigned_byte = FAIL
-
-// Nexus 5x failures
-3308 NEXUS5X GLES : dEQP-GLES3.functional.attribute_location.bind_aliasing.cond* = FAIL
-3308 NEXUS5X GLES : dEQP-GLES3.functional.attribute_location.bind_aliasing.max_cond* = FAIL
-3308 NEXUS5X GLES : dEQP-GLES3.functional.polygon_offset.default_result_depth_clamp = FAIL
-3308 NEXUS5X GLES : dEQP-GLES3.functional.polygon_offset.fixed24_result_depth_clamp = FAIL
-3308 NEXUS5X GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.lines.3 = FAIL
-3308 NEXUS5X GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.8 = FAIL
-3308 NEXUS5X GLES : dEQP-GLES3.functional.transform_feedback.random.interleaved.triangles.10 = FAIL
-
-// Seems to fail on all desktop GL
-2960 OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8 = FAIL
-2960 OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8_linear_out_of_bounds_blit_to_default = FAIL
-2960 OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8_linear_scale_blit_to_default = FAIL
-2960 OPENGL : dEQP-GLES3.functional.fbo.blit.default_framebuffer.srgb8_alpha8_nearest_scale_blit_to_default = FAIL
-
-// Fails on Windows + Linux.
-2222 OPENGL NVIDIA : dEQP-GLES3.functional.fbo.completeness.samples.rbo2_rbo2_rbo0 = FAIL
-
-// General Vulkan failures
-
-// Limits:
-// Nvidia doesn't support the necessary compressed formats
-3676 NVIDIA VULKAN : dEQP-GLES3.functional.implementation_limits.compressed_texture_formats = FAIL
-// MAX_FRAGMENT_INPUT_COMPONENTS is 0
-3676 VULKAN : dEQP-GLES3.functional.state_query.integers.max_fragment_input_components_get* = FAIL
-
-// Formats:
-3677 ANDROID VULKAN : dEQP-GLES3.functional.fbo.completeness.renderable.renderbuffer.color0.rgba32f = FAIL
-3677 ANDROID VULKAN : dEQP-GLES3.functional.fbo.completeness.renderable.texture.color0.rgba32f = FAIL
-3677 VULKAN : dEQP-GLES3.functional.fragment_out.basic.int.* = FAIL
-3677 VULKAN : dEQP-GLES3.functional.fragment_out.basic.uint.* = FAIL
-3677 VULKAN : dEQP-GLES3.functional.fragment_out.array.int* = FAIL
-3677 VULKAN : dEQP-GLES3.functional.fragment_out.array.uint* = FAIL
-3677 VULKAN : dEQP-GLES3.functional.fragment_out.random.* = FAIL
-
-// Depth/Stencil textures:
-2905 VULKAN : dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth_component32f = FAIL
-2905 VULKAN : dEQP-GLES3.functional.fbo.depth.depth_write_clamp.depth32f_stencil8 = FAIL
-2905 VULKAN : dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth_component32f = FAIL
-2905 VULKAN : dEQP-GLES3.functional.fbo.depth.depth_test_clamp.depth32f_stencil8 = FAIL
-2905 VULKAN : dEQP-GLES3.functional.texture.format.sized.*.depth32f_stencil8* = FAIL
-
-// Shader support:
-3219 VULKAN : dEQP-GLES3.functional.negative_api.shader.link_program = FAIL
-3219 VULKAN : dEQP-GLES3.functional.negative_api.shader.use_program = FAIL
-
-2672 VULKAN : dEQP-GLES3.functional.instanced.draw_elements_instanced.attribute_divisor.2*_instances = FAIL
-2672 VULKAN : dEQP-GLES3.functional.instanced.draw_elements_instanced.attribute_divisor.4_instances = FAIL
-2672 VULKAN : dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed.2*_instances = FAIL
-2672 VULKAN : dEQP-GLES3.functional.instanced.draw_elements_instanced.mixed.4_instances = FAIL
-2672 VULKAN : dEQP-GLES3.functional.instanced.draw_arrays_instanced.attribute_divisor.2*_instances = FAIL
-2672 VULKAN : dEQP-GLES3.functional.instanced.draw_arrays_instanced.attribute_divisor.4_instances = FAIL
-2672 VULKAN : dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed.2*_instances = FAIL
-2672 VULKAN : dEQP-GLES3.functional.instanced.draw_arrays_instanced.mixed.4_instances = FAIL
-2672 VULKAN : dEQP-GLES3.functional.instanced.types* = FAIL
-
-// Polygon offset:
-3678 VULKAN : dEQP-GLES3.functional.polygon_offset.float32_result_depth_clamp = FAIL
-3678 VULKAN : dEQP-GLES3.functional.polygon_offset.float32_factor_1_slope = FAIL
-
-// Flat shading:
-3430 VULKAN : dEQP-GLES3.functional.rasterization.flatshading.* = FAIL
-3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.basic_types.u* = FAIL
-3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.struct.u* = FAIL
-3430 VULKAN : dEQP-GLES3.functional.shaders.linkage.varying.struct.float_uvec2_vec3 = FAIL
-
-// Instanced rendering:
-2672 VULKAN : dEQP-GLES3.functional.draw.draw_arrays_instanced.line_loop.* = SKIP
-2672 VULKAN : dEQP-GLES3.functional.draw.draw_elements_instanced.line_loop.* = SKIP
-2672 VULKAN : dEQP-GLES3.functional.draw.random.* = SKIP
-
-// Fails after OpenGL line rasterization rules implementation. Possibly a bug in FragCoord.
-2830 VULKAN ANDROID : dEQP-GLES3.functional.clipping.line.long_line_clip = FAIL
-
-// Base/Max levels:
-3148 VULKAN : dEQP-GLES3.functional.state_query.texture.texture_2d_texture_base_level_gettexparameter* = SKIP
-3148 VULKAN : dEQP-GLES3.functional.state_query.texture.texture_3d_texture_base_level_gettexparameter* = SKIP
-3148 VULKAN : dEQP-GLES3.functional.state_query.texture.texture_2d_array_texture_base_level_gettexparameter* = SKIP
-3148 VULKAN : dEQP-GLES3.functional.state_query.texture.texture_cube_map_texture_base_level_gettexparameter* = SKIP
-3148 VULKAN : dEQP-GLES3.functional.texture.mipmap.*base_level* = SKIP
-3148 VULKAN : dEQP-GLES3.functional.texture.mipmap.*max_level* = FAIL
-3148 VULKAN : dEQP-GLES3.functional.shaders.texture_functions.texturesize.* = SKIP
-
-// Misc unimplemented:
-
-// - Primitive restart with line loops:
-2672 VULKAN : dEQP-GLES3.functional.primitive_restart.*.line_loop.*instanced = SKIP
-
-// Failures on newer NVIDIA drivers (411.95) and passes on older drivers (388.16).  Passes on 418.12 on Linux.
-2976 VULKAN NVIDIA : dEQP-GLES3.functional.shaders.invariance.* = FAIL
-// Fails on 431.02 NVIDIA driver
-3748 VULKAN WIN NVIDIA : dEQP-GLES3.functional.fbo.color.repeated_clear.sample.tex2d.* = FAIL
-
-// Android Vulkan failures
-3306 ANDROID VULKAN : dEQP-GLES3.functional.polygon_offset.* = FAIL
-2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.fbo.rbo_singlesample.primitives.lines = FAIL
-2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.fbo.texture_2d.primitives.lines = FAIL
-2830 ANDROID VULKAN : dEQP-GLES3.functional.rasterization.primitives.line* = FAIL
-2808 ANDROID VULKAN : dEQP-GLES3.functional.shaders.builtin_variable.fragcoord_w = FAIL
-3544 ANDROID VULKAN : dEQP-GLES3.functional.buffer.copy.basic.* = SKIP
-3544 ANDROID VULKAN : dEQP-GLES3.functional.buffer.copy.subrange.* = SKIP
-
-// Fixed in later driver versions.
-2727 VULKAN ANDROID : dEQP-GLES3.functional.shaders.builtin_variable.pointcoord = FAIL
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles2_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles2_TestExpectations
deleted file mode 100644
index 9efdc31..0000000
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles2_TestExpectations
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2019 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains a list of defective dEQP conformance tests. The expected
-// format is:
-//  {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
-//
-// MODIFIERS can be a combination of the below list, combined with a logical AND:
-//  WIN XP VISTA WIN7 WIN8 WIN10
-//  MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
-//  LINUX CHROMEOS ANDROID
-//  NVIDIA AMD INTEL
-//  DEBUG RELEASE
-//  D3D9 D3D11 OPENGL GLES VULKAN
-//  NEXUS5X PIXEL2
-//  QUADROP400
-//
-//
-// TEST_NAME can be a specific test name, or have a '*' in the end, which
-// indicates a prefix matching.
-//
-// Examples:
-// fails on both windows and mac (crash)
-//  91530 WIN : context_lost_restored = SKIP
-//  91530 MAC : context_lost_restored = SKIP
-// fails on windows using NVIDIA GPUs
-//  91533 WIN NVIDIA : gl_min_uniforms = FAIL
-// fails on Nexus5X with GLES backend (hangs)
-//  91531 NEXUS5X GLES : conformance_more_* = SKIP
-
-// Depth/stencil related failures.
-3457 VULKAN : KHR-GLES2.core.internalformat.texture2d.depth_stencil_unsigned_int_24_8_depth_stencil = FAIL
-
-// Test bug, use of sized internal format. Passes with patch from bug.
-3797 VULKAN : KHR-GLES2.texture_3d.framebuffer_texture.rgba8 = SKIP
-
-// GL_RGBA8 is not supported in GLES2
-// GL_OES_rgb8_rgba8 only enables GL_RGBA8 for render buffers (not textures)
-3797 VULKAN : KHR-GLES2.texture_3d.copy_sub_image.rgba8 = FAIL
-
-// Compressed texture tests on Android
-3190 VULKAN PIXEL2 : KHR-GLES2.texture_3d.compressed_texture.rgba_astc_* = SKIP
-3190 VULKAN PIXEL2 : KHR-GLES2.texture_3d.compressed_texture.sgb8_alpha8_astc_* = SKIP
-3190 VULKAN PIXEL2 : KHR-GLES2.texture_3d.compressed_texture.srgb8_alpha8_astc_* = SKIP
-
-// Bug in dEQP uses an incorrect enum (GL_HALF_FLOAT instead of GL_HALF_FLOAT_OES)
-3451 : KHR-GLES2.core.internalformat.texture2d.rgb_half_float_rgb16f = FAIL
-3451 : KHR-GLES2.core.internalformat.texture2d.rgba_half_float_rgba16f = FAIL
-3451 : KHR-GLES2.core.internalformat.texture2d.rgb_half_float_rgb16f_linear = FAIL
-3451 : KHR-GLES2.core.internalformat.texture2d.rgba_half_float_rgba16f_linear = FAIL
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations
deleted file mode 100644
index a050cb8..0000000
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles31_TestExpectations
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2019 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains a list of defective dEQP conformance tests. The expected
-// format is:
-//  {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
-//
-// MODIFIERS can be a combination of the below list, combined with a logical AND:
-//  WIN XP VISTA WIN7 WIN8 WIN10
-//  MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
-//  LINUX CHROMEOS ANDROID
-//  NVIDIA AMD INTEL
-//  DEBUG RELEASE
-//  D3D9 D3D11 OPENGL GLES VULKAN
-//  NEXUS5X PIXEL2
-//  QUADROP400
-//
-//
-// TEST_NAME can be a specific test name, or have a '*' in the end, which
-// indicates a prefix matching.
-//
-// Examples:
-// fails on both windows and mac (crash)
-//  91530 WIN : context_lost_restored = SKIP
-//  91530 MAC : context_lost_restored = SKIP
-// fails on windows using NVIDIA GPUs
-//  91533 WIN NVIDIA : gl_min_uniforms = FAIL
-// fails on Nexus5X with GLES backend (hangs)
-//  91531 NEXUS5X GLES : conformance_more_* = SKIP
-
-// For now we only log Vulkan test expectations. More back-ends can follow as we need them.
-
-// Android Vulkan expectations
-
-// General Vulkan expectations
-
-// Limits:
-// GL_MIN/MAX_PROGRAM_TEXTURE_GATHER_OFFSET not set.
-3605 VULKAN : KHR-GLES31.core.texture_gather.* = FAIL
-
-// Dispatch indirect:
-3601 VULKAN : KHR-GLES31.core.compute_shader* = SKIP
-
-// Multisampled textures:
-3565 VULKAN : KHR-GLES31.core.texture_storage_multisample.* = SKIP
-
-// 2D array textures:
-3189 VULKAN : KHR-GLES31.core.texture_gather*2darray = SKIP
-3189 VULKAN : KHR-GLES31.core.layout_binding.sampler2DArray_* = SKIP
-
-// 3D textures:
-3188 VULKAN : KHR-GLES31.core.layout_binding.sampler3D_* = SKIP
-
-// Base texture level:
-3184 VULKAN : KHR-GLES31.core.texture*base-level* = SKIP
-
-// Program Pipeline Objects:
-3570 VULKAN : KHR-GLES31.core.shader_atomic_counters.advanced-usage-many-draw-calls2 = FAIL
-3570 VULKAN : KHR-GLES31.core.shader_atomic_counters.advanced-usage-many-dispatches = FAIL
-
-// RGBA32F:
-3520 VULKAN : KHR-GLES31.core.texture_gather.*-gather-float-2d-rgb = SKIP
-
-// Separate shader objects:
-3570 VULKAN : KHR-GLES31.core.sepshaderobjs* = FAIL
-
-// Shader support:
-3569 VULKAN : KHR-GLES31.core.shader_integer_mix.* = FAIL
-3569 VULKAN : KHR-GLES31.core.shader_image* = SKIP
-3569 VULKAN : KHR-GLES31.core.shader_macros* = FAIL
-3569 VULKAN : KHR-GLES31.core.shader_bitfield_operation.frexp.* = SKIP
-3569 VULKAN : KHR-GLES31.core.shader_bitfield_operation.uaddCarry.* = SKIP
-3569 VULKAN : KHR-GLES31.core.shader_bitfield_operation.usubBorrow.* = SKIP
-3569 VULKAN : KHR-GLES31.core.shader_bitfield_operation.umulExtended.* = SKIP
-3569 VULKAN : KHR-GLES31.core.shader_bitfield_operation.imulExtended.* = SKIP
-/// Crash due to missing unsupported check in dEQP
-3571 VULKAN : KHR-GLES31.core.shader_macros*_geometry = SKIP
-3571 VULKAN : KHR-GLES31.core.shader_macros*_tess_control = SKIP
-3571 VULKAN : KHR-GLES31.core.shader_macros*_tess_eval = SKIP
-3571 VULKAN : KHR-GLES31.core.constant_expressions.*geometry = SKIP
-3571 VULKAN : KHR-GLES31.core.constant_expressions.*tess_control = SKIP
-3571 VULKAN : KHR-GLES31.core.constant_expressions.*tess_eval = SKIP
-
-3520 VULKAN : KHR-GLES31.core.vertex_attrib_binding* = SKIP
-3520 VULKAN : KHR-GLES31.core.internalformat.texture2d.* = FAIL
-
-// Crashes in libnvidia-glvkspirv.so, fixed in newer drivers
-3561 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-cs-*-matC* = SKIP
-3561 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-vs-*-matC* = SKIP
-3561 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-fs-*-matC* = SKIP
-3561 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-cs-*-struct* = SKIP
-3561 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-vs-*-struct* = SKIP
-3561 VULKAN NVIDIA : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-fs-*-struct* = SKIP
-
-// Bug in RewriteRowMajorMatrices with row major SSBO matrix arrays with no size
-3443 VULKAN : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-cs-*-matR* = SKIP
-3443 VULKAN : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-vs-*-matR* = SKIP
-3443 VULKAN : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength-fs-*-matR* = SKIP
-
-// Bug with GL_SHADER_STORAGE_BUFFER_START
-3520 VULKAN : KHR-GLES31.core.shader_storage_buffer_object.basic-binding = FAIL
-
-// Unimplemented ValidateCreateShaderProgramv
-3520 VULKAN : KHR-GLES31.core.shader_storage_buffer_object.basic-syntaxSSO = FAIL
-
-// Fails to compile shader
-3520 VULKAN : KHR-GLES31.core.shader_storage_buffer_object.basic-atomic-case3-vsfs = FAIL
-3520 VULKAN : KHR-GLES31.core.shader_storage_buffer_object.basic-atomic-case3-cs = FAIL
-
-// Draw indirect:
-3564 VULKAN : KHR-GLES31.core.draw_indirect.* = SKIP
-
-// Explicit uniform locations:
-3520 VULKAN : KHR-GLES31.core.explicit_uniform_location.* = SKIP
-
-3520 VULKAN : KHR-GLES31.core.program_interface_query.* = SKIP
-
-// Framebuffer without attachments:
-3579 VULKAN : KHR-GLES31.core.framebuffer_no_attachments.api = FAIL
-
-// Expected to fail to compile, but doesn't.
-3520 VULKAN : KHR-GLES31.core.arrays_of_arrays.ExpressionsDynamicIndexing2 = FAIL
-3520 VULKAN : KHR-GLES31.core.arrays_of_arrays.InteractionInterfaceArrays2 = FAIL
-
-// Blend equations:
-3586 VULKAN : KHR-GLES31.core.blend_equation_advanced.* = SKIP
-
-// Storage image front-end crash when unbinding images (given texture 0)
-3563 VULKAN : KHR-GLES31.core.layout_binding.sampler2D_layout_binding_texture_ComputeShader = SKIP
-3563 VULKAN : KHR-GLES31.core.layout_binding.block_layout_binding_block_ComputeShader = SKIP
-3563 VULKAN : KHR-GLES31.core.layout_binding.buffer_layout_binding_atomicAdd_ComputeShader = SKIP
-3563 VULKAN : KHR-GLES31.core.layout_binding.atomic_uint_layout_binding_atomic_ComputeShader = SKIP
-3563 VULKAN : KHR-GLES31.core.layout_binding.image2D_layout_binding_imageLoad_ComputeShader = SKIP
-3563 VULKAN : KHR-GLES31.core.layout_binding.image2D_layout_binding_imageLoad_FragmentShader = SKIP
-3563 VULKAN : KHR-GLES31.core.layout_binding.image2D_layout_binding_imageLoad_VertexShader = SKIP
-
-3520 VULKAN : KHR-GLES31.core.internalformat.copy_tex_image* = FAIL
-3520 VULKAN : KHR-GLES31.core.internalformat.renderbuffer* = FAIL
-
-3520 VULKAN : KHR-GLES31.shaders.aggressive_optimizations* = FAIL
-
-// Passing on recent drivers:
-3726 VULKAN ANDROID : KHR-GLES31.core.shader_atomic_counters.* = FAIL
-3726 VULKAN ANDROID : KHR-GLES31.core.shader_atomic_counters.advanced-usage-* = SKIP
-
-// Crashes on Android
-3520 VULKAN ANDROID : KHR-GLES31.core.shader_storage_buffer_object.advanced-unsizedArrayLength* = SKIP
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles3_TestExpectations b/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles3_TestExpectations
deleted file mode 100644
index bc101c0..0000000
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/deqp_khr_gles3_TestExpectations
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2019 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// This file contains a list of defective dEQP conformance tests. The expected
-// format is:
-//  {BUG#} {MODIFIERS} : {TEST_NAME} = {PASS,FAIL,FLAKY,TIMEOUT,SKIP}
-//
-// MODIFIERS can be a combination of the below list, combined with a logical AND:
-//  WIN XP VISTA WIN7 WIN8 WIN10
-//  MAC LEOPARD SNOWLEOPARD LION MOUNTAINLION MAVERICKS YOSEMITE ELCAPITAN SIERRA HIGHSIERRA MOJAVE
-//  LINUX CHROMEOS ANDROID
-//  NVIDIA AMD INTEL
-//  DEBUG RELEASE
-//  D3D9 D3D11 OPENGL GLES VULKAN
-//  NEXUS5X PIXEL2
-//  QUADROP400
-//
-//
-// TEST_NAME can be a specific test name, or have a '*' in the end, which
-// indicates a prefix matching.
-//
-// Examples:
-// fails on both windows and mac (crash)
-//  91530 WIN : context_lost_restored = SKIP
-//  91530 MAC : context_lost_restored = SKIP
-// fails on windows using NVIDIA GPUs
-//  91533 WIN NVIDIA : gl_min_uniforms = FAIL
-// fails on Nexus5X with GLES backend (hangs)
-//  91531 NEXUS5X GLES : conformance_more_* = SKIP
-
-// For now we only log Vulkan test expectations. More back-ends can follow as we need them.
-
-// GL_RGB32F framebuffers should not be "complete" (may crash on Android, but only fails elsewhere):
-3695 VULKAN : KHR-GLES3.packed_pixels.rectangle.rgb*32f = FAIL
-3695 VULKAN : KHR-GLES3.packed_pixels.pbo_rectangle.rgb*32f = FAIL
-
-// Depth/stencil related failures.
-3457 VULKAN ANDROID : KHR-GLES3.packed_depth_stencil.*.depth24_stencil8 = FAIL
-3457 VULKAN ANDROID : KHR-GLES3.packed_depth_stencil.*.depth32f_stencil8 = FAIL
-
-// CopyTexImage conversion actually failing the test code.
-3458 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_texture2d = FAIL
-3458 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_negx = FAIL
-3458 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_negy = FAIL
-3458 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_negz = FAIL
-3458 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_posx = FAIL
-3458 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_posy = FAIL
-3458 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture3d_cubemap_posz = FAIL
-
-// CopyTexImage conversion failing due to Vulkan validation error re: UINT/SINT-descriptor-set issue.
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_texture2d = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_negx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_negy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_negz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_posx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_posy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture_array_cubemap_posz = FAIL
-
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_texture2d = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_negx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_negy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_negz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_posx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_posy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.texture2d_cubemap_posz = FAIL
-
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_texture2d = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_negx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_negy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_negz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_posx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_posy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negx_cubemap_posz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_texture2d = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_negx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_negy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_negz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_posx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_posy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_posz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_texture2d = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_negx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_negy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_negz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_posx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_posy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_negz_cubemap_posz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_texture2d = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_negx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_negy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_negz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_posx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_posy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posx_cubemap_posz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_texture2d = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_negx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_negy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_negz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_posx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_posy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posy_cubemap_posz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_texture2d = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_negx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_negy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_negz = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_posx = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_posy = FAIL
-3817 VULKAN : KHR-GLES3.copy_tex_image_conversions.required.cubemap_posz_cubemap_posz = FAIL
-
-// Failing due to Vulkan validation error re: "Number of currently valid memory objects is not less than the maximum allowed" error.
-3818 VULKAN : KHR-GLES3.copy_tex_image_conversions.forbidden.renderbuffer_cubemap_negy = FAIL
-3818 VULKAN : KHR-GLES3.copy_tex_image_conversions.forbidden.renderbuffer_cubemap_negz = FAIL
-3818 VULKAN : KHR-GLES3.copy_tex_image_conversions.forbidden.renderbuffer_cubemap_posx = FAIL
-3818 VULKAN : KHR-GLES3.copy_tex_image_conversions.forbidden.renderbuffer_cubemap_posy = FAIL
-3818 VULKAN : KHR-GLES3.copy_tex_image_conversions.forbidden.renderbuffer_cubemap_posz = FAIL
-
-// Require 3D textures.
-3188 VULKAN : KHR-GLES3.packed_pixels.varied_rectangle.* = SKIP
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp
index c82a798..6223143 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLENativeDisplayFactory.cpp
@@ -181,6 +181,9 @@
 NativePixmap::NativePixmap(EGLNativeDisplayType display, int width, int height, int bitDepth)
     : eglu::NativePixmap(kBitmapCapabilities), mPixmap(CreateOSPixmap())
 {
+#if (DE_OS != DE_OS_UNIX)
+    throw tcu::NotSupportedError("Pixmap not supported");
+#else
     if (!mPixmap)
     {
         throw ResourceError("Failed to create pixmap", DE_NULL, __FILE__, __LINE__);
@@ -190,6 +193,7 @@
     {
         throw ResourceError("Failed to initialize pixmap", DE_NULL, __FILE__, __LINE__);
     }
+#endif
 }
 
 NativePixmap::~NativePixmap()
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLEPlatform.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLEPlatform.cpp
index 6b4a25b..de381ee 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLEPlatform.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/tcuANGLEPlatform.cpp
@@ -26,7 +26,7 @@
 #include "egluGLContextFactory.hpp"
 #include "tcuANGLENativeDisplayFactory.h"
 #include "tcuNullContextFactory.hpp"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 static_assert(EGL_DONT_CARE == -1, "Unexpected value for EGL_DONT_CARE");
 
@@ -97,6 +97,15 @@
     }
 #endif
 
+#if (DE_OS == DE_OS_WIN32) || (DE_OS == DE_OS_UNIX)
+    {
+        std::vector<eglw::EGLAttrib> swsAttribs = initAttribs(
+            EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE);
+        m_nativeDisplayFactoryRegistry.registerFactory(new ANGLENativeDisplayFactory(
+            "angle-swiftshader", "ANGLE SwiftShader Display", swsAttribs, &mEvents));
+    }
+#endif
+
     {
         std::vector<eglw::EGLAttrib> nullAttribs = initAttribs(EGL_PLATFORM_ANGLE_TYPE_NULL_ANGLE);
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/deqp_support/tes31Context_override.cpp b/Source/ThirdParty/ANGLE/src/tests/deqp_support/tes31Context_override.cpp
index b3c0d92..89bd1d8 100644
--- a/Source/ThirdParty/ANGLE/src/tests/deqp_support/tes31Context_override.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/deqp_support/tes31Context_override.cpp
@@ -93,4 +93,4 @@
 } // gles31
 } // deqp
 
-// clang-format on
\ No newline at end of file
+// clang-format on
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDeviceCGLTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDeviceCGLTest.cpp
new file mode 100644
index 0000000..5cf8e66
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDeviceCGLTest.cpp
@@ -0,0 +1,75 @@
+//
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+//    EGLDeviceCGLTest.cpp: tests for the EGL_ANGLE_device_cgl extension.
+//
+
+#include "test_utils/ANGLETest.h"
+#include "util/EGLWindow.h"
+#include "util/OSWindow.h"
+#include "util/gles_loader_autogen.h"
+
+using namespace angle;
+
+class EGLDeviceCGLQueryTest : public ANGLETest
+{
+  protected:
+    EGLDeviceCGLQueryTest() {}
+
+    void testSetUp() override
+    {
+        const char *extensionString =
+            static_cast<const char *>(eglQueryString(getEGLWindow()->getDisplay(), EGL_EXTENSIONS));
+
+        if (!eglQueryDeviceStringEXT)
+        {
+            FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDeviceStringEXT was not "
+                      "found";
+        }
+
+        if (!eglQueryDisplayAttribEXT)
+        {
+            FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDisplayAttribEXT was "
+                      "not found";
+        }
+
+        if (!eglQueryDeviceAttribEXT)
+        {
+            FAIL() << "ANGLE extension EGL_EXT_device_query export eglQueryDeviceAttribEXT was not "
+                      "found";
+        }
+
+        EGLAttrib angleDevice = 0;
+        EXPECT_EGL_TRUE(
+            eglQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice));
+        extensionString = static_cast<const char *>(
+            eglQueryDeviceStringEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice), EGL_EXTENSIONS));
+        if (strstr(extensionString, "EGL_ANGLE_device_cgl") == nullptr)
+        {
+            FAIL() << "ANGLE extension EGL_ANGLE_device_cgl was not found";
+        }
+    }
+};
+
+// This test attempts to query the CGLContextObj and CGLPixelFormatObj from the
+// EGLDevice associated with the display.
+TEST_P(EGLDeviceCGLQueryTest, QueryDevice)
+{
+    EGLAttrib angleDevice = 0;
+    EXPECT_EGL_TRUE(
+        eglQueryDisplayAttribEXT(getEGLWindow()->getDisplay(), EGL_DEVICE_EXT, &angleDevice));
+    EGLAttrib contextAttrib     = 0;
+    EGLAttrib pixelFormatAttrib = 0;
+    EXPECT_EGL_TRUE(eglQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice),
+                                            EGL_CGL_CONTEXT_ANGLE, &contextAttrib));
+    EXPECT_TRUE(contextAttrib != 0);
+    EXPECT_EGL_TRUE(eglQueryDeviceAttribEXT(reinterpret_cast<EGLDeviceEXT>(angleDevice),
+                                            EGL_CGL_PIXEL_FORMAT_ANGLE, &pixelFormatAttrib));
+    EXPECT_TRUE(pixelFormatAttrib != 0);
+}
+
+// Use this to select which configurations (e.g. which renderer, which GLES major version) these
+// tests should be run against.
+ANGLE_INSTANTIATE_TEST(EGLDeviceCGLQueryTest, ES2_OPENGL(), ES3_OPENGL());
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDirectCompositionTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDirectCompositionTest.cpp
index 901643b..fc06302 100644
--- a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDirectCompositionTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLDirectCompositionTest.cpp
@@ -22,6 +22,7 @@
 #include "libANGLE/renderer/d3d/d3d11/converged/CompositorNativeWindow11.h"
 #include "util/OSWindow.h"
 #include "util/com_utils.h"
+#include "util/test_utils.h"
 
 using namespace angle;
 using namespace ABI::Windows::System;
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLFeatureControlTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLFeatureControlTest.cpp
index a41ac4c..83264fb 100644
--- a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLFeatureControlTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLFeatureControlTest.cpp
@@ -101,6 +101,8 @@
         EXPECT_STREQ(features[i]->bug, eglQueryStringiANGLE(mDisplay, EGL_FEATURE_BUG_ANGLE, i));
         EXPECT_STREQ(FeatureStatusToString(features[i]->enabled),
                      eglQueryStringiANGLE(mDisplay, EGL_FEATURE_STATUS_ANGLE, i));
+        EXPECT_STREQ(features[i]->condition,
+                     eglQueryStringiANGLE(mDisplay, EGL_FEATURE_CONDITION_ANGLE, i));
         ASSERT_EGL_SUCCESS();
     }
 }
diff --git a/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLNoConfigContextTest.cpp b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLNoConfigContextTest.cpp
new file mode 100644
index 0000000..714b776
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/egl_tests/EGLNoConfigContextTest.cpp
@@ -0,0 +1,134 @@
+//
+// Copyright 2019 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// EGLNoConfigContectTest.cpp:
+//   EGL extension EGL_KHR_no_config_context allows a context to be created
+//   without a config specified. This means all surfaces are compatible.
+//   As a result compatibility checks are circumvented.
+//   This test suite creates and verifies creating a configless context
+//   and then verifies simple rendering to ensure compatibility.
+//
+
+#include <gtest/gtest.h>
+
+#include "test_utils/ANGLETest.h"
+
+using namespace angle;
+
+class EGLNoConfigContextTest : public ANGLETest
+{
+  public:
+    EGLNoConfigContextTest() : mDisplay(EGL_NO_DISPLAY), mContext(EGL_NO_CONTEXT) {}
+
+    void testSetUp() override
+    {
+        int clientVersion = GetParam().majorVersion;
+
+        EGLint dispattrs[] = {EGL_PLATFORM_ANGLE_TYPE_ANGLE, GetParam().getRenderer(), EGL_NONE};
+        mDisplay           = eglGetPlatformDisplayEXT(
+            EGL_PLATFORM_ANGLE_ANGLE, reinterpret_cast<void *>(EGL_DEFAULT_DISPLAY), dispattrs);
+        EXPECT_TRUE(mDisplay != EGL_NO_DISPLAY);
+        EXPECT_EGL_TRUE(eglInitialize(mDisplay, nullptr, nullptr));
+
+        mExtensionSupported = IsEGLDisplayExtensionEnabled(mDisplay, "EGL_KHR_no_config_context");
+        if (!mExtensionSupported)
+        {
+            return;  // Not supported, don't create context
+        }
+
+        EGLint ctxattrs[] = {EGL_CONTEXT_CLIENT_VERSION, clientVersion, EGL_NONE};
+        mContext          = eglCreateContext(mDisplay, EGL_NO_CONFIG_KHR, nullptr, ctxattrs);
+        EXPECT_TRUE(mContext != EGL_NO_CONTEXT);
+    }
+
+    void testTearDown() override
+    {
+        if (mDisplay != EGL_NO_DISPLAY)
+        {
+            if (mContext != EGL_NO_CONTEXT)
+            {
+                eglDestroyContext(mDisplay, mContext);
+                mContext = EGL_NO_CONTEXT;
+            }
+            eglTerminate(mDisplay);
+            eglReleaseThread();
+        }
+        ASSERT_EGL_SUCCESS() << "Error during test TearDown";
+    }
+
+    EGLDisplay mDisplay      = EGL_NO_DISPLAY;
+    EGLContext mContext      = EGL_NO_CONTEXT;
+    bool mExtensionSupported = false;
+};
+
+// Check that context has no config.
+TEST_P(EGLNoConfigContextTest, QueryConfigID)
+{
+    ANGLE_SKIP_TEST_IF(!mExtensionSupported);
+    EXPECT_TRUE(mDisplay);
+    EXPECT_TRUE(mContext);
+
+    EGLint configId = -1;
+    EXPECT_EGL_TRUE(eglQueryContext(mDisplay, mContext, EGL_CONFIG_ID, &configId));
+    EXPECT_TRUE(configId == 0);
+    ASSERT_EGL_SUCCESS();
+}
+
+// Any surface should be eglMakeCurrent compatible with no-config context.
+// Do a glClear and glReadPixel to verify rendering.
+TEST_P(EGLNoConfigContextTest, RenderCheck)
+{
+    ANGLE_SKIP_TEST_IF(!mExtensionSupported);
+
+    // Get all the configs
+    EGLint count;
+    EXPECT_EGL_TRUE(eglGetConfigs(mDisplay, nullptr, 0, &count));
+    EXPECT_TRUE(count > 0);
+    std::vector<EGLConfig> configs(count);
+    EXPECT_EGL_TRUE(eglGetConfigs(mDisplay, configs.data(), count, &count));
+
+    // For each config, create PbufferSurface and do a render check
+    EGLSurface surface = EGL_NO_SURFACE;
+    for (auto config : configs)
+    {
+        const uint32_t kWidth  = 1;
+        const uint32_t kHeight = 1;
+
+        EGLint configId;
+        EXPECT_EGL_TRUE(eglGetConfigAttrib(mDisplay, config, EGL_CONFIG_ID, &configId));
+        EGLint surfattrs[] = {EGL_WIDTH, kWidth, EGL_HEIGHT, kHeight, EGL_NONE};
+        surface            = eglCreatePbufferSurface(mDisplay, config, surfattrs);
+        EXPECT_TRUE(surface != EGL_NO_SURFACE);
+
+        EGLint bufferSize = 0;
+        EXPECT_EGL_TRUE(eglGetConfigAttrib(mDisplay, config, EGL_BUFFER_SIZE, &bufferSize));
+
+        EXPECT_EGL_TRUE(eglMakeCurrent(mDisplay, surface, surface, mContext));
+        ASSERT_EGL_SUCCESS() << "eglMakeCurrent failed with Config: " << configId << '\n';
+
+        // ClearColor RED
+        glClearColor(1.0, 0.0, 0.0, 1.0);
+        glClear(GL_COLOR_BUFFER_BIT);
+        ASSERT_GL_NO_ERROR() << "glClear failed";
+
+        if (bufferSize > 32)
+        {  // GL_FLOAT configs
+            EXPECT_PIXEL_COLOR32F_EQ(0, 0, kFloatRed);
+        }
+        else
+        {  // GL_UNSIGNED_BYTE configs
+            EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+        }
+
+        eglDestroySurface(mDisplay, surface);
+        surface = EGL_NO_SURFACE;
+    }
+}
+
+ANGLE_INSTANTIATE_TEST(EGLNoConfigContextTest,
+                       WithNoFixture(ES2_OPENGL()),
+                       WithNoFixture(ES2_VULKAN()),
+                       WithNoFixture(ES3_OPENGL()),
+                       WithNoFixture(ES3_VULKAN()));
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendFuncExtendedTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendFuncExtendedTest.cpp
index a30a082..f06052b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendFuncExtendedTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/BlendFuncExtendedTest.cpp
@@ -231,6 +231,16 @@
         }
     }
 
+    void LinkProgram()
+    {
+        glLinkProgram(mProgram);
+        GLint linked = 0;
+        glGetProgramiv(mProgram, GL_LINK_STATUS, &linked);
+        EXPECT_NE(0, linked);
+        glUseProgram(mProgram);
+        return;
+    }
+
   private:
     bool mIsES31OrNewer;
 };
@@ -421,6 +431,121 @@
     drawTest();
 }
 
+// Ported from TranslatorVariants/EXTBlendFuncExtendedES3DrawTest
+// Test that tests glBindFragDataLocationEXT, glBindFragDataLocationIndexedEXT,
+// glGetFragDataLocation, glGetFragDataIndexEXT work correctly with
+// GLSL array output variables. The output variable can be bound by
+// referring to the variable name with or without the first element array
+// accessor. The getters can query location of the individual elements in
+// the array. The test does not actually use the base test drawing,
+// since the drivers at the time of writing do not support multiple
+// buffers and dual source blending.
+TEST_P(EXTBlendFuncExtendedDrawTestES3, ES3GettersArray)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_blend_func_extended"));
+
+    // TODO(zmo): Figure out why this fails on AMD. crbug.com/585132.
+    // Also fails on the Intel Mesa driver, see
+    // https://bugs.freedesktop.org/show_bug.cgi?id=96765
+    ANGLE_SKIP_TEST_IF(IsLinux() && IsAMD());
+    ANGLE_SKIP_TEST_IF(IsLinux() && IsIntel());
+
+    const GLint kTestArraySize     = 2;
+    const GLint kFragData0Location = 2;
+    const GLint kFragData1Location = 1;
+    const GLint kUnusedLocation    = 5;
+
+    // The test binds kTestArraySize -sized array to location 1 for test purposes.
+    // The GL_MAX_DRAW_BUFFERS must be > kTestArraySize, since an
+    // array will be bound to continuous locations, starting from the first
+    // location.
+    GLint maxDrawBuffers = 0;
+    glGetIntegerv(GL_MAX_DRAW_BUFFERS_EXT, &maxDrawBuffers);
+    EXPECT_LT(kTestArraySize, maxDrawBuffers);
+
+    constexpr char kFragColorShader[] = R"(#version 300 es
+#extension GL_EXT_blend_func_extended : require
+precision mediump float;
+uniform vec4 src;
+uniform vec4 src1;
+out vec4 FragData[2];
+void main() {
+    FragData[0] = src;
+    FragData[1] = src1;
+})";
+
+    struct testCase
+    {
+        std::string unusedLocationName;
+        std::string fragData0LocationName;
+        std::string fragData1LocationName;
+    };
+
+    testCase testCases[4]{{"FragData[0]", "FragData", "FragData[1]"},
+                          {"FragData", "FragData[0]", "FragData[1]"},
+                          {"FragData[0]", "FragData", "FragData[1]"},
+                          {"FragData", "FragData[0]", "FragData[1]"}};
+
+    for (const testCase &test : testCases)
+    {
+        mProgram =
+            CompileProgram(essl3_shaders::vs::Simple(), kFragColorShader, [&](GLuint program) {
+                glBindFragDataLocationEXT(program, kUnusedLocation,
+                                          test.unusedLocationName.c_str());
+                glBindFragDataLocationEXT(program, kFragData0Location,
+                                          test.fragData0LocationName.c_str());
+                glBindFragDataLocationEXT(program, kFragData1Location,
+                                          test.fragData1LocationName.c_str());
+            });
+
+        EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
+        LinkProgram();
+        EXPECT_EQ(kFragData0Location, glGetFragDataLocation(mProgram, "FragData"));
+        EXPECT_EQ(0, glGetFragDataIndexEXT(mProgram, "FragData"));
+        EXPECT_EQ(kFragData0Location, glGetFragDataLocation(mProgram, "FragData[0]"));
+        EXPECT_EQ(0, glGetFragDataIndexEXT(mProgram, "FragData[0]"));
+        EXPECT_EQ(kFragData1Location, glGetFragDataLocation(mProgram, "FragData[1]"));
+        EXPECT_EQ(0, glGetFragDataIndexEXT(mProgram, "FragData[1]"));
+        // Index bigger than the GLSL variable array length does not find anything.
+        EXPECT_EQ(-1, glGetFragDataLocation(mProgram, "FragData[3]"));
+    }
+}
+
+// Ported from TranslatorVariants/EXTBlendFuncExtendedES3DrawTest
+TEST_P(EXTBlendFuncExtendedDrawTestES3, ESSL3BindSimpleVarAsArrayNoBind)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_blend_func_extended"));
+
+    constexpr char kFragDataShader[] = R"(#version 300 es
+#extension GL_EXT_blend_func_extended : require
+precision mediump float;
+uniform vec4 src;
+uniform vec4 src1;
+out vec4 FragData;
+out vec4 SecondaryFragData;
+void main() {
+    FragData = src;
+    SecondaryFragData = src1;
+})";
+
+    mProgram = CompileProgram(essl3_shaders::vs::Simple(), kFragDataShader, [](GLuint program) {
+        glBindFragDataLocationEXT(program, 0, "FragData[0]");
+        glBindFragDataLocationIndexedEXT(program, 0, 1, "SecondaryFragData[0]");
+    });
+
+    LinkProgram();
+
+    EXPECT_EQ(-1, glGetFragDataLocation(mProgram, "FragData[0]"));
+    EXPECT_EQ(0, glGetFragDataLocation(mProgram, "FragData"));
+    EXPECT_EQ(1, glGetFragDataLocation(mProgram, "SecondaryFragData"));
+    // Did not bind index.
+    EXPECT_EQ(0, glGetFragDataIndexEXT(mProgram, "SecondaryFragData"));
+
+    glBindFragDataLocationEXT(mProgram, 0, "FragData");
+    glBindFragDataLocationIndexedEXT(mProgram, 0, 1, "SecondaryFragData");
+    LinkProgram();
+}
+
 // Test an ESSL 3.00 program with a link-time fragment output location conflict.
 TEST_P(EXTBlendFuncExtendedTestES3, FragmentOutputLocationConflict)
 {
@@ -592,7 +717,9 @@
                        ES3_OPENGL(),
                        ES3_OPENGLES(),
                        ES31_OPENGL(),
-                       ES31_OPENGLES());
+                       ES31_OPENGLES(),
+                       ES3_VULKAN(),
+                       ES31_VULKAN());
 ANGLE_INSTANTIATE_TEST(EXTBlendFuncExtendedDrawTest,
                        ES2_OPENGL(),
                        ES2_OPENGLES(),
@@ -603,4 +730,6 @@
                        ES3_OPENGL(),
                        ES3_OPENGLES(),
                        ES31_OPENGL(),
-                       ES31_OPENGLES());
+                       ES31_OPENGLES(),
+                       ES3_VULKAN(),
+                       ES31_VULKAN());
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
index 8a07e3d..48f2d99 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ComputeShaderTest.cpp
@@ -1415,7 +1415,7 @@
 TEST_P(ComputeShaderTest, BindImageTextureWithOneLayerTexture3D)
 {
     // Vulkan validation error creating a 2D image view of a 3D image layer.
-    // http://anglebug.com/3188
+    // http://anglebug.com/3886
     ANGLE_SKIP_TEST_IF(IsVulkan());
 
     GLTexture texture[2];
@@ -2736,6 +2736,8 @@
 {
     // glReadPixels is getting the result of the first dispatch call.  http://anglebug.com/3879
     ANGLE_SKIP_TEST_IF(IsVulkan() && IsWindows() && (IsAMD() || IsNVIDIA()));
+    // Flaky on Linux FYI Release (Intel HD 630).  http://anglebug.com/3934
+    ANGLE_SKIP_TEST_IF(IsVulkan() && IsLinux() && IsIntel());
 
     GLTexture texture[2];
     GLFramebuffer framebuffer;
@@ -3010,7 +3012,7 @@
     // TODO(xinghua.cao@intel.com): http://anglebug.com/3101
     ANGLE_SKIP_TEST_IF(IsIntel() && IsLinux() && IsOpenGL());
 
-    // Non-zero-level render target attachments are not yet supported.  http://anglebug.com/3148
+    // Non-zero-level render target attachments are not yet supported.  http://anglebug.com/3184
     ANGLE_SKIP_TEST_IF(IsVulkan());
 
     GLTexture texture[2];
@@ -3070,6 +3072,8 @@
 // pipeline input. It works well. See http://anglebug.com/3658
 TEST_P(ComputeShaderTest, DrawTexture1DispatchTexture2)
 {
+    ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_EXT_color_buffer_float"));
+
     const char kCSSource[] = R"(#version 310 es
 layout(local_size_x=1, local_size_y=1, local_size_z=1) in;
 precision highp sampler2D;
@@ -3458,6 +3462,57 @@
     glUnmapBuffer(GL_SHADER_STORAGE_BUFFER);
 }
 
+// Create a 'very large' array inside of a function in a compute shader.
+TEST_P(ComputeShaderTest, VeryLargeArrayInsideFunction)
+{
+    constexpr char kComputeShader[] = R"(#version 310 es
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+layout(binding = 0, std430) buffer Output {
+  int value[1];
+} output_data;
+
+void main()
+{
+    int values[1000];
+    for (int i = 0; i < values.length(); i++)
+    {
+        values[i] = 0;
+    }
+
+    int total = 0;
+    for (int i = 0; i < values.length(); i++)
+    {
+        total += i;
+        values[i] = total;
+    }
+    output_data.value[0u] = values[1000-1];
+})";
+
+    ANGLE_GL_COMPUTE_PROGRAM(program, kComputeShader);
+    EXPECT_GL_NO_ERROR();
+
+    glUseProgram(program);
+
+    constexpr unsigned int kBytesPerComponent = sizeof(GLint);
+
+    GLBuffer shaderStorageBuffer;
+    glBindBuffer(GL_SHADER_STORAGE_BUFFER, shaderStorageBuffer);
+    glBufferData(GL_SHADER_STORAGE_BUFFER, 1 * kBytesPerComponent, nullptr, GL_STATIC_DRAW);
+    glBindBufferBase(GL_SHADER_STORAGE_BUFFER, 0, shaderStorageBuffer);
+    EXPECT_GL_NO_ERROR();
+
+    glDispatchCompute(1, 1, 1);
+    glFinish();
+    EXPECT_GL_NO_ERROR();
+
+    // read back
+    const GLint *ptr = reinterpret_cast<const GLint *>(
+        glMapBufferRange(GL_SHADER_STORAGE_BUFFER, 0, 1 * kBytesPerComponent, GL_MAP_READ_BIT));
+    EXPECT_EQ(499500, ptr[0]);
+
+    glUnmapBuffer(GL_SHADER_STORAGE_BUFFER);
+}
+
 ANGLE_INSTANTIATE_TEST(ComputeShaderTest,
                        ES31_OPENGL(),
                        ES31_OPENGLES(),
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp
index 10f1753..fad1c33 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTexImageTest.cpp
@@ -551,8 +551,6 @@
 {
     // Seems to fail on AMD OpenGL Windows.
     ANGLE_SKIP_TEST_IF(IsAMD() && IsOpenGL() & IsWindows());
-    // TODO(anglebug.com/3189): Need full 2D-array texture support
-    ANGLE_SKIP_TEST_IF(IsVulkan());
 
     GLTexture tex;
     glBindTexture(GL_TEXTURE_2D_ARRAY, tex);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp
index cfe9126..c9a619f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/CopyTextureTest.cpp
@@ -380,7 +380,8 @@
         }
     }
 
-    void initializeSourceTexture(GLenum sourceFormat,
+    void initializeSourceTexture(GLenum target,
+                                 GLenum sourceFormat,
                                  const uint8_t *srcColors,
                                  uint8_t componentCount)
     {
@@ -398,12 +399,13 @@
                    srcRowPitch - inputRowPitch);
         }
 
-        glBindTexture(GL_TEXTURE_2D, mTextures[0]);
-        glTexImage2D(GL_TEXTURE_2D, 0, sourceFormat, 2, 2, 0, sourceFormat, GL_UNSIGNED_BYTE,
+        glBindTexture(target, mTextures[0]);
+        glTexImage2D(target, 0, sourceFormat, 2, 2, 0, sourceFormat, GL_UNSIGNED_BYTE,
                      srcColorsPadded);
     }
 
-    void testCopyTexture(GLenum sourceFormat,
+    void testCopyTexture(GLenum sourceTarget,
+                         GLenum sourceFormat,
                          GLenum destFormat,
                          bool flipY,
                          bool premultiplyAlpha,
@@ -427,7 +429,8 @@
 
         for (size_t i = 0; i < colorCount - 3; ++i)
         {
-            initializeSourceTexture(sourceFormat, &srcColors[i * componentCount], componentCount);
+            initializeSourceTexture(sourceTarget, sourceFormat, &srcColors[i * componentCount],
+                                    componentCount);
 
             glCopyTextureCHROMIUM(mTextures[0], 0, GL_TEXTURE_2D, mTextures[1], 0, destFormat,
                                   GL_UNSIGNED_BYTE, flipY, premultiplyAlpha, unmultiplyAlpha);
@@ -456,7 +459,8 @@
         }
     }
 
-    void testCopySubTexture(GLenum sourceFormat,
+    void testCopySubTexture(GLenum sourceTarget,
+                            GLenum sourceFormat,
                             GLenum destFormat,
                             bool flipY,
                             bool premultiplyAlpha,
@@ -480,7 +484,8 @@
 
         for (size_t i = 0; i < colorCount - 3; ++i)
         {
-            initializeSourceTexture(sourceFormat, &srcColors[i * componentCount], componentCount);
+            initializeSourceTexture(sourceTarget, sourceFormat, &srcColors[i * componentCount],
+                                    componentCount);
 
             glBindTexture(GL_TEXTURE_2D, mTextures[1]);
             glTexImage2D(GL_TEXTURE_2D, 0, destFormat, 2, 2, 0, destFormat, GL_UNSIGNED_BYTE,
@@ -862,14 +867,30 @@
 
 TEST_P(CopyTextureVariationsTest, CopyTexture)
 {
-    testCopyTexture(std::get<1>(GetParam()), std::get<2>(GetParam()), std::get<3>(GetParam()),
-                    std::get<4>(GetParam()), std::get<5>(GetParam()));
+    testCopyTexture(GL_TEXTURE_2D, std::get<1>(GetParam()), std::get<2>(GetParam()),
+                    std::get<3>(GetParam()), std::get<4>(GetParam()), std::get<5>(GetParam()));
 }
 
 TEST_P(CopyTextureVariationsTest, CopySubTexture)
 {
-    testCopySubTexture(std::get<1>(GetParam()), std::get<2>(GetParam()), std::get<3>(GetParam()),
-                       std::get<4>(GetParam()), std::get<5>(GetParam()));
+    testCopySubTexture(GL_TEXTURE_2D, std::get<1>(GetParam()), std::get<2>(GetParam()),
+                       std::get<3>(GetParam()), std::get<4>(GetParam()), std::get<5>(GetParam()));
+}
+
+TEST_P(CopyTextureVariationsTest, CopyTextureRectangle)
+{
+    ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_texture_rectangle"));
+
+    testCopyTexture(GL_TEXTURE_RECTANGLE_ANGLE, std::get<1>(GetParam()), std::get<2>(GetParam()),
+                    std::get<3>(GetParam()), std::get<4>(GetParam()), std::get<5>(GetParam()));
+}
+
+TEST_P(CopyTextureVariationsTest, CopySubTextureRectangle)
+{
+    ANGLE_SKIP_TEST_IF(!EnsureGLExtensionEnabled("GL_ANGLE_texture_rectangle"));
+
+    testCopySubTexture(GL_TEXTURE_RECTANGLE_ANGLE, std::get<1>(GetParam()), std::get<2>(GetParam()),
+                       std::get<3>(GetParam()), std::get<4>(GetParam()), std::get<5>(GetParam()));
 }
 
 // Test that copying to cube maps works
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp
index 3a7c003..f39de9f 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/DrawBaseVertexBaseInstanceTest.cpp
@@ -133,6 +133,10 @@
                 mRegularIndices[oi + j] = mIndices[j] + ov;
             }
         }
+
+        std::iota(mInstancedArrayId.begin(), mInstancedArrayId.end(), 0.0f);
+        std::reverse_copy(mInstancedArrayId.begin(), mInstancedArrayId.end(),
+                          mInstancedArrayColorId.begin());
     }
 
     void SetUp() override { ANGLETestBase::ANGLETestSetUp(); }
@@ -147,7 +151,7 @@
         return std::get<2>(GetParam()) == BaseInstanceOption::UseBaseInstance;
     }
 
-    std::string vertexShaderSource300(bool isDrawArrays, bool isMultiDraw)
+    std::string vertexShaderSource300(bool isDrawArrays, bool isMultiDraw, bool divisorTest)
     {
         // Each color channel is to test the value of
         // R: gl_InstanceID and gl_BaseInstance
@@ -162,18 +166,24 @@
                << "#define kCountY " << kCountY << "\n"
                << R"(
 in vec2 vPosition;
+)" << (useBaseInstanceBuiltin() ? "" : "in float vInstanceID;\n")
+               << (!divisorTest ? "" : "in float vInstanceColorID;\n") << R"(
 out vec4 color;
 void main()
 {
     const float xStep = 1.0 / float(kCountX);
     const float yStep = 1.0 / float(kCountY);
-    float x_id = float(gl_InstanceID)"
-               << (useBaseInstanceBuiltin() ? " + gl_BaseInstance" : "") << R"();
+    float x_id = )"
+               << (useBaseInstanceBuiltin() ? " float(gl_InstanceID + gl_BaseInstance);"
+                                            : "vInstanceID;")
+               << "float x_color = "
+               << (divisorTest ? "xStep * (vInstanceColorID + 1.0f);" : " 1.0 - xStep * x_id;")
+               << R"(
     float y_id = floor(float(gl_VertexID) / )"
                << (isDrawArrays ? "6.0" : "4.0") << R"( + 0.01);
 
     color = vec4(
-        1.0 - xStep * x_id,
+        x_color,
         1.0 - yStep * y_id,
         )" << (useBaseVertexBuiltin() ? "1.0 - yStep * float(gl_BaseVertex) / 4.0" : "1.0")
                << R"(,
@@ -201,14 +211,22 @@
 })";
     }
 
-    void setupProgram(GLProgram &program, bool isDrawArrays = true, bool isMultiDraw = false)
+    void setupProgram(GLProgram &program,
+                      bool isDrawArrays  = true,
+                      bool isMultiDraw   = false,
+                      bool isDivisorTest = false)
     {
-        program.makeRaster(vertexShaderSource300(isDrawArrays, isMultiDraw).c_str(),
+        program.makeRaster(vertexShaderSource300(isDrawArrays, isMultiDraw, isDivisorTest).c_str(),
                            fragmentShaderSource300().c_str());
         EXPECT_GL_NO_ERROR();
         ASSERT_TRUE(program.valid());
         glUseProgram(program.get());
         mPositionLoc = glGetAttribLocation(program.get(), "vPosition");
+        if (!useBaseInstanceBuiltin())
+        {
+            mInstanceIDLoc      = glGetAttribLocation(program.get(), "vInstanceID");
+            mInstanceColorIDLoc = glGetAttribLocation(program.get(), "vInstanceColorID");
+        }
     }
 
     void setupNonIndexedBuffers(GLBuffer &vertexBuffer)
@@ -233,6 +251,24 @@
         ASSERT_GL_NO_ERROR();
     }
 
+    void setupInstanceIDBuffer(GLBuffer &instanceIDBuffer)
+    {
+        glBindBuffer(GL_ARRAY_BUFFER, instanceIDBuffer);
+        glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * mInstancedArrayId.size(),
+                     mInstancedArrayId.data(), GL_STATIC_DRAW);
+
+        ASSERT_GL_NO_ERROR();
+    }
+
+    void setupInstanceColorIDBuffer(GLBuffer &instanceIDBuffer)
+    {
+        glBindBuffer(GL_ARRAY_BUFFER, instanceIDBuffer);
+        glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * mInstancedArrayColorId.size(),
+                     mInstancedArrayColorId.data(), GL_STATIC_DRAW);
+
+        ASSERT_GL_NO_ERROR();
+    }
+
     void setupRegularIndexedBuffer(GLBuffer &indexBuffer)
     {
         glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer);
@@ -242,101 +278,64 @@
         ASSERT_GL_NO_ERROR();
     }
 
-    void doDrawCommons()
+    void setupPositionVertexAttribPointer()
     {
-        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
         glEnableVertexAttribArray(mPositionLoc);
         glVertexAttribPointer(mPositionLoc, 3, GL_FLOAT, GL_FALSE, 0, 0);
     }
 
-    void doVertexAttribDivisor(GLint location, GLuint divisor)
+    void setupInstanceIDVertexAttribPointer(GLuint instanceIDLoc)
     {
-        if (getClientMajorVersion() <= 2)
-        {
-            ASSERT_TRUE(IsGLExtensionEnabled("GL_ANGLE_instanced_arrays"));
-            glVertexAttribDivisorANGLE(location, divisor);
-        }
-        else
-        {
-            glVertexAttribDivisor(location, divisor);
-        }
+        glEnableVertexAttribArray(instanceIDLoc);
+        glVertexAttribPointer(instanceIDLoc, 1, GL_FLOAT, GL_FALSE, 0, 0);
+        glVertexAttribDivisor(instanceIDLoc, 1);
     }
 
     void doDrawArraysInstancedBaseInstance()
     {
-        doDrawCommons();
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
         const uint32_t countPerDraw = kCountY * 6;
 
-        if (useBaseInstanceBuiltin())
+        for (uint32_t i = 0; i < kCountX; i += 2)
         {
-            for (uint32_t i = 0; i < kCountX; i += 2)
-            {
-                glDrawArraysInstancedBaseInstanceANGLE(GL_TRIANGLES, 0, countPerDraw, 2, i);
-            }
-        }
-        else
-        {
-            glDrawArraysInstancedBaseInstanceANGLE(GL_TRIANGLES, 0, countPerDraw, kCountX, 0);
+            glDrawArraysInstancedBaseInstanceANGLE(GL_TRIANGLES, 0, countPerDraw, 2, i);
         }
     }
 
     void doMultiDrawArraysInstancedBaseInstance()
     {
-        doDrawCommons();
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
         const uint32_t countPerDraw = kCountY * 6;
 
-        if (useBaseInstanceBuiltin())
+        const GLsizei drawCount = kCountX / 2;
+        const std::vector<GLsizei> counts(drawCount, countPerDraw);
+        const std::vector<GLsizei> firsts(drawCount, 0);
+        const std::vector<GLsizei> instanceCounts(drawCount, 2);
+        std::vector<GLuint> baseInstances(drawCount);
+        for (size_t i = 0; i < drawCount; i++)
         {
-            const GLsizei drawCount = kCountX;
-            const std::vector<GLsizei> counts(drawCount, countPerDraw);
-            const std::vector<GLsizei> firsts(drawCount, 0);
-            const std::vector<GLsizei> instanceCounts(drawCount, 2);
-            std::vector<GLuint> baseInstances(drawCount);
-            for (size_t i = 0; i < drawCount; i++)
-            {
-                baseInstances[i] = i * 2;
-            }
-            glMultiDrawArraysInstancedBaseInstanceANGLE(GL_TRIANGLES, drawCount, counts.data(),
-                                                        instanceCounts.data(), firsts.data(),
-                                                        baseInstances.data());
+            baseInstances[i] = i * 2;
         }
-        else
-        {
-            const GLsizei drawCount = 1;
-            const std::vector<GLsizei> counts(drawCount, countPerDraw);
-            const std::vector<GLsizei> firsts(drawCount, 0);
-            const std::vector<GLsizei> instanceCounts(drawCount, kCountX);
-            const std::vector<GLuint> baseInstances(drawCount, 0);
-            glMultiDrawArraysInstancedBaseInstanceANGLE(GL_TRIANGLES, drawCount, counts.data(),
-                                                        instanceCounts.data(), firsts.data(),
-                                                        baseInstances.data());
-        }
+        glMultiDrawArraysInstancedBaseInstanceANGLE(GL_TRIANGLES, drawCount, counts.data(),
+                                                    instanceCounts.data(), firsts.data(),
+                                                    baseInstances.data());
     }
 
     void doDrawElementsInstancedBaseVertexBaseInstance()
     {
-        doDrawCommons();
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
         const uint32_t countPerDraw = 6;
 
         for (uint32_t v = 0; v < kCountY; v++)
         {
-            if (useBaseInstanceBuiltin())
-            {
-                for (uint32_t i = 0; i < kCountX; i += 2)
-                {
-                    glDrawElementsInstancedBaseVertexBaseInstanceANGLE(
-                        GL_TRIANGLES, countPerDraw, GL_UNSIGNED_SHORT,
-                        reinterpret_cast<GLvoid *>(static_cast<uintptr_t>(0)), 2, v * 4, i);
-                }
-            }
-            else
+            for (uint32_t i = 0; i < kCountX; i += 2)
             {
                 glDrawElementsInstancedBaseVertexBaseInstanceANGLE(
                     GL_TRIANGLES, countPerDraw, GL_UNSIGNED_SHORT,
-                    reinterpret_cast<GLvoid *>(static_cast<uintptr_t>(0)), kCountX, v * 4, 0);
+                    reinterpret_cast<GLvoid *>(static_cast<uintptr_t>(0)), 2, v * 4, i);
             }
         }
     }
@@ -345,63 +344,42 @@
     // BaseInstance are reset to zero
     void doDrawArraysBaseInstanceReset()
     {
-        doDrawCommons();
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
         glDrawArrays(GL_TRIANGLES, 0, 6 * kCountY);
     }
 
     void doDrawElementsBaseVertexBaseInstanceReset()
     {
-        doDrawCommons();
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
         glDrawElements(GL_TRIANGLES, 6 * kCountY, GL_UNSIGNED_SHORT,
                        reinterpret_cast<GLvoid *>(static_cast<uintptr_t>(0)));
     }
 
     void doMultiDrawElementsInstancedBaseVertexBaseInstance()
     {
-        doDrawCommons();
+        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-        if (useBaseInstanceBuiltin())
+        const GLsizei drawCount = kCountX * kCountY / 2;
+        const std::vector<GLsizei> counts(drawCount, 6);
+        const std::vector<GLsizei> instanceCounts(drawCount, 2);
+        const std::vector<GLvoid *> indices(drawCount, 0);
+        std::vector<GLint> baseVertices(drawCount);
+        std::vector<GLuint> baseInstances(drawCount);
+
+        GLsizei b = 0;
+        for (uint32_t v = 0; v < kCountY; v++)
         {
-            const GLsizei drawCount = kCountX * kCountY / 2;
-            const std::vector<GLsizei> counts(drawCount, 6);
-            const std::vector<GLsizei> instanceCounts(drawCount, 2);
-            const std::vector<GLvoid *> indices(drawCount, 0);
-            std::vector<GLint> baseVertices(drawCount);
-            std::vector<GLuint> baseInstances(drawCount);
-
-            GLsizei b = 0;
-            for (uint32_t v = 0; v < kCountY; v++)
+            for (uint32_t i = 0; i < kCountX; i += 2)
             {
-                for (uint32_t i = 0; i < kCountX; i += 2)
-                {
-                    baseVertices[b]  = v * 4;
-                    baseInstances[b] = i;
-                    b++;
-                }
+                baseVertices[b]  = v * 4;
+                baseInstances[b] = i;
+                b++;
             }
-
-            glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
-                GL_TRIANGLES, GL_UNSIGNED_SHORT, drawCount, counts.data(), instanceCounts.data(),
-                indices.data(), baseVertices.data(), baseInstances.data());
         }
-        else
-        {
-            const GLsizei drawCount = kCountY;
-            const std::vector<GLsizei> counts(drawCount, 6);
-            const std::vector<GLsizei> instanceCounts(drawCount, kCountX);
-            const std::vector<GLvoid *> indices(drawCount, 0);
-            std::vector<GLint> baseVertices(drawCount);
-            const std::vector<GLuint> baseInstances(drawCount, 0);
 
-            for (uint32_t v = 0; v < drawCount; v++)
-            {
-                baseVertices[v] = v * 4;
-            }
-
-            glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
-                GL_TRIANGLES, GL_UNSIGNED_SHORT, drawCount, counts.data(), instanceCounts.data(),
-                indices.data(), baseVertices.data(), baseInstances.data());
-        }
+        glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE(
+            GL_TRIANGLES, GL_UNSIGNED_SHORT, drawCount, counts.data(), instanceCounts.data(),
+            indices.data(), baseVertices.data(), baseInstances.data());
     }
 
     void checkDrawResult(bool hasBaseVertex, bool oneColumn = false)
@@ -474,9 +452,14 @@
     std::vector<GLushort> mIndices;
     std::vector<GLfloat> mVertices;
     std::vector<GLfloat> mNonIndexedVertices;
+    // Used when gl_BaseInstance is not used
+    std::array<GLfloat, kCountX> mInstancedArrayId;
+    std::array<GLfloat, kCountX> mInstancedArrayColorId;
     // Used for regular draw calls without base vertex base instance
     std::vector<GLushort> mRegularIndices;
     GLint mPositionLoc;
+    GLuint mInstanceIDLoc;
+    GLuint mInstanceColorIDLoc;
 };
 
 // Tests that compile a program with the extension succeeds
@@ -493,6 +476,58 @@
     setupProgram(p3, false, true);
 }
 
+// Tests if baseInstance works properly with instanced array with non-zero divisor
+TEST_P(DrawBaseVertexBaseInstanceTest, BaseInstanceDivisor)
+{
+    ANGLE_SKIP_TEST_IF(!requestExtensions());
+    ANGLE_SKIP_TEST_IF(useBaseInstanceBuiltin());
+
+    GLProgram program;
+    setupProgram(program, true, false, true);
+
+    GLBuffer nonIndexedVertexBuffer;
+    setupNonIndexedBuffers(nonIndexedVertexBuffer);
+    setupPositionVertexAttribPointer();
+
+    GLBuffer instanceIDBuffer;
+    GLBuffer instanceColorIDBuffer;
+
+    setupInstanceIDBuffer(instanceIDBuffer);
+    setupInstanceIDVertexAttribPointer(mInstanceIDLoc);
+    setupInstanceColorIDBuffer(instanceColorIDBuffer);
+    setupInstanceIDVertexAttribPointer(mInstanceColorIDLoc);
+
+    doDrawArraysInstancedBaseInstance();
+    EXPECT_GL_NO_ERROR();
+    checkDrawResult(false);
+
+    doDrawArraysBaseInstanceReset();
+    EXPECT_GL_NO_ERROR();
+    checkDrawResult(false, true);
+
+    GLProgram programIndexed;
+    setupProgram(programIndexed, false, false, true);
+
+    GLBuffer indexBuffer;
+    GLBuffer vertexBuffer;
+    setupIndexedBuffers(vertexBuffer, indexBuffer);
+    setupPositionVertexAttribPointer();
+
+    glBindBuffer(GL_ARRAY_BUFFER, instanceIDBuffer);
+    setupInstanceIDVertexAttribPointer(mInstanceIDLoc);
+    glBindBuffer(GL_ARRAY_BUFFER, instanceColorIDBuffer);
+    setupInstanceIDVertexAttribPointer(mInstanceColorIDLoc);
+
+    doDrawElementsInstancedBaseVertexBaseInstance();
+    EXPECT_GL_NO_ERROR();
+    checkDrawResult(true);
+
+    setupRegularIndexedBuffer(indexBuffer);
+    doDrawElementsBaseVertexBaseInstanceReset();
+    EXPECT_GL_NO_ERROR();
+    checkDrawResult(false, true);
+}
+
 // Tests basic functionality of glDrawArraysInstancedBaseInstance
 TEST_P(DrawBaseVertexBaseInstanceTest, DrawArraysInstancedBaseInstance)
 {
@@ -513,10 +548,21 @@
     }
 
     ANGLE_SKIP_TEST_IF(!requestExtensions());
-    GLBuffer vertexBuffer;
-    setupNonIndexedBuffers(vertexBuffer);
+
     GLProgram program;
     setupProgram(program, true);
+
+    GLBuffer vertexBuffer;
+    setupNonIndexedBuffers(vertexBuffer);
+    setupPositionVertexAttribPointer();
+
+    GLBuffer instanceIDBuffer;
+    if (!useBaseInstanceBuiltin())
+    {
+        setupInstanceIDBuffer(instanceIDBuffer);
+        setupInstanceIDVertexAttribPointer(mInstanceIDLoc);
+    }
+
     doDrawArraysInstancedBaseInstance();
     EXPECT_GL_NO_ERROR();
     checkDrawResult(false);
@@ -538,10 +584,21 @@
     }
 
     ANGLE_SKIP_TEST_IF(!requestExtensions());
-    GLBuffer vertexBuffer;
-    setupNonIndexedBuffers(vertexBuffer);
+
     GLProgram program;
     setupProgram(program, true, true);
+
+    GLBuffer vertexBuffer;
+    setupNonIndexedBuffers(vertexBuffer);
+    setupPositionVertexAttribPointer();
+
+    GLBuffer instanceIDBuffer;
+    if (!useBaseInstanceBuiltin())
+    {
+        setupInstanceIDBuffer(instanceIDBuffer);
+        setupInstanceIDVertexAttribPointer(mInstanceIDLoc);
+    }
+
     doMultiDrawArraysInstancedBaseInstance();
     EXPECT_GL_NO_ERROR();
     checkDrawResult(false);
@@ -554,11 +611,22 @@
 TEST_P(DrawBaseVertexBaseInstanceTest, DrawElementsInstancedBaseVertexBaseInstance)
 {
     ANGLE_SKIP_TEST_IF(!requestExtensions());
+
+    GLProgram program;
+    setupProgram(program, false);
+
     GLBuffer indexBuffer;
     GLBuffer vertexBuffer;
     setupIndexedBuffers(vertexBuffer, indexBuffer);
-    GLProgram program;
-    setupProgram(program, false);
+    setupPositionVertexAttribPointer();
+
+    GLBuffer instanceIDBuffer;
+    if (!useBaseInstanceBuiltin())
+    {
+        setupInstanceIDBuffer(instanceIDBuffer);
+        setupInstanceIDVertexAttribPointer(mInstanceIDLoc);
+    }
+
     doDrawElementsInstancedBaseVertexBaseInstance();
     EXPECT_GL_NO_ERROR();
     checkDrawResult(true);
@@ -573,11 +641,22 @@
 TEST_P(DrawBaseVertexBaseInstanceTest, MultiDrawElementsInstancedBaseVertexBaseInstance)
 {
     ANGLE_SKIP_TEST_IF(!requestExtensions());
+
+    GLProgram program;
+    setupProgram(program, false, true);
+
     GLBuffer indexBuffer;
     GLBuffer vertexBuffer;
     setupIndexedBuffers(vertexBuffer, indexBuffer);
-    GLProgram program;
-    setupProgram(program, false, true);
+    setupPositionVertexAttribPointer();
+
+    GLBuffer instanceIDBuffer;
+    if (!useBaseInstanceBuiltin())
+    {
+        setupInstanceIDBuffer(instanceIDBuffer);
+        setupInstanceIDVertexAttribPointer(mInstanceIDLoc);
+    }
+
     doMultiDrawElementsInstancedBaseVertexBaseInstance();
     EXPECT_GL_NO_ERROR();
     checkDrawResult(true);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp
index 247c284..ad483fd 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/FramebufferTest.cpp
@@ -366,6 +366,7 @@
 // tests should be run against.
 ANGLE_INSTANTIATE_TEST(FramebufferFormatsTest,
                        ES2_VULKAN(),
+                       ES3_VULKAN(),
                        ES2_D3D9(),
                        ES2_D3D11(),
                        ES3_D3D11(),
@@ -380,6 +381,9 @@
 // Covers invalidating an incomplete framebuffer. This should be a no-op, but should not error.
 TEST_P(FramebufferTest_ES3, InvalidateIncomplete)
 {
+    // TODO: anglebug.com/3971
+    ANGLE_SKIP_TEST_IF(IsVulkan());
+
     GLFramebuffer framebuffer;
     GLRenderbuffer renderbuffer;
 
@@ -645,7 +649,189 @@
     EXPECT_GL_NO_ERROR();
 }
 
-ANGLE_INSTANTIATE_TEST(FramebufferTest_ES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+// Test that resizing the color attachment is handled correctly.
+TEST_P(FramebufferTest_ES3, ResizeColorAttachmentSmallToLarge)
+{
+    GLFramebuffer fbo;
+    GLTexture smallTexture;
+    GLTexture largeTexture;
+
+    ANGLE_GL_PROGRAM(greenProgram, essl1_shaders::vs::Simple(), essl1_shaders::fs::Green());
+    ANGLE_GL_PROGRAM(blueProgram, essl1_shaders::vs::Simple(), essl1_shaders::fs::Blue());
+
+    glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+
+    // Bind the small texture
+    glBindTexture(GL_TEXTURE_2D, smallTexture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWindowWidth() / 2, getWindowHeight() / 2, 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, nullptr);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, smallTexture, 0);
+    ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+
+    // Draw to FBO backed by the small texture
+    glUseProgram(greenProgram);
+    drawQuad(greenProgram.get(), std::string(essl1_shaders::PositionAttrib()), 0.0f);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+    EXPECT_PIXEL_COLOR_EQ((getWindowWidth() / 2) - 1, (getWindowHeight() / 2) - 1, GLColor::green);
+
+    // Change the attachment to the larger texture that fills the window
+    glBindTexture(GL_TEXTURE_2D, largeTexture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWindowWidth(), getWindowHeight(), 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, nullptr);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, largeTexture, 0);
+    ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+
+    // Draw to FBO backed by the large texture
+    glUseProgram(blueProgram);
+    drawQuad(blueProgram.get(), std::string(essl1_shaders::PositionAttrib()), 0.0f);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
+    EXPECT_PIXEL_COLOR_EQ(getWindowWidth() - 1, getWindowHeight() - 1, GLColor::blue);
+}
+
+// Test that resizing the color attachment is handled correctly.
+TEST_P(FramebufferTest_ES3, ResizeColorAttachmentLargeToSmall)
+{
+    GLFramebuffer fbo;
+    GLTexture smallTexture;
+    GLTexture largeTexture;
+
+    ANGLE_GL_PROGRAM(greenProgram, essl1_shaders::vs::Simple(), essl1_shaders::fs::Green());
+    ANGLE_GL_PROGRAM(blueProgram, essl1_shaders::vs::Simple(), essl1_shaders::fs::Blue());
+
+    glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+
+    // Bind the large texture
+    glBindTexture(GL_TEXTURE_2D, largeTexture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWindowWidth(), getWindowHeight(), 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, nullptr);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, largeTexture, 0);
+    ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+
+    // Draw to FBO backed by the large texture
+    glUseProgram(blueProgram);
+    drawQuad(blueProgram.get(), std::string(essl1_shaders::PositionAttrib()), 0.0f);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
+    EXPECT_PIXEL_COLOR_EQ(getWindowWidth() - 1, getWindowHeight() - 1, GLColor::blue);
+
+    // Change the attachment to the smaller texture
+    glBindTexture(GL_TEXTURE_2D, smallTexture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWindowWidth() / 2, getWindowHeight() / 2, 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, nullptr);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, smallTexture, 0);
+    ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+
+    // Draw to FBO backed by the small texture
+    glUseProgram(greenProgram);
+    drawQuad(greenProgram.get(), std::string(essl1_shaders::PositionAttrib()), 0.0f);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+    EXPECT_PIXEL_COLOR_EQ((getWindowWidth() / 2) - 1, (getWindowHeight() / 2) - 1, GLColor::green);
+}
+
+// Test that resizing the texture is handled correctly.
+TEST_P(FramebufferTest_ES3, ResizeTextureLargeToSmall)
+{
+    GLFramebuffer fbo;
+    GLTexture texture;
+
+    ANGLE_GL_PROGRAM(greenProgram, essl1_shaders::vs::Simple(), essl1_shaders::fs::Green());
+    ANGLE_GL_PROGRAM(blueProgram, essl1_shaders::vs::Simple(), essl1_shaders::fs::Blue());
+
+    glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+
+    // Allocate a large texture
+    glBindTexture(GL_TEXTURE_2D, texture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWindowWidth(), getWindowHeight(), 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, nullptr);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
+    ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+
+    // Draw to FBO backed by the large texture
+    glUseProgram(blueProgram);
+    drawQuad(blueProgram.get(), std::string(essl1_shaders::PositionAttrib()), 0.0f);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
+    EXPECT_PIXEL_COLOR_EQ(getWindowWidth() - 1, getWindowHeight() - 1, GLColor::blue);
+
+    // Shrink the texture
+    glBindTexture(GL_TEXTURE_2D, texture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWindowWidth() / 2, getWindowHeight() / 2, 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, nullptr);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
+    ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+
+    // Draw to FBO backed by the small texture
+    glUseProgram(greenProgram);
+    drawQuad(greenProgram.get(), std::string(essl1_shaders::PositionAttrib()), 0.0f);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+    EXPECT_PIXEL_COLOR_EQ((getWindowWidth() / 2) - 1, (getWindowHeight() / 2) - 1, GLColor::green);
+}
+
+// Test that resizing the texture is handled correctly.
+TEST_P(FramebufferTest_ES3, ResizeTextureSmallToLarge)
+{
+    GLFramebuffer fbo;
+    GLTexture texture;
+
+    ANGLE_GL_PROGRAM(greenProgram, essl1_shaders::vs::Simple(), essl1_shaders::fs::Green());
+    ANGLE_GL_PROGRAM(blueProgram, essl1_shaders::vs::Simple(), essl1_shaders::fs::Blue());
+
+    glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+
+    // Allocate a small texture
+    glBindTexture(GL_TEXTURE_2D, texture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWindowWidth() / 2, getWindowHeight() / 2, 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, nullptr);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
+    ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+
+    // Draw to FBO backed by the large texture
+    glUseProgram(blueProgram);
+    drawQuad(blueProgram.get(), std::string(essl1_shaders::PositionAttrib()), 0.0f);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::blue);
+    EXPECT_PIXEL_COLOR_EQ((getWindowWidth() / 2) - 1, (getWindowHeight() / 2) - 1, GLColor::blue);
+
+    // Grow the texture
+    glBindTexture(GL_TEXTURE_2D, texture);
+    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWindowWidth(), getWindowHeight(), 0, GL_RGBA,
+                 GL_UNSIGNED_BYTE, nullptr);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture, 0);
+    ASSERT_GLENUM_EQ(GL_FRAMEBUFFER_COMPLETE, glCheckFramebufferStatus(GL_FRAMEBUFFER));
+
+    // Draw to FBO backed by the small texture
+    glUseProgram(greenProgram);
+    drawQuad(greenProgram.get(), std::string(essl1_shaders::PositionAttrib()), 0.0f);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+    EXPECT_PIXEL_COLOR_EQ(getWindowWidth() - 1, getWindowHeight() - 1, GLColor::green);
+}
+
+ANGLE_INSTANTIATE_TEST(FramebufferTest_ES3,
+                       ES3_D3D11(),
+                       ES3_OPENGL(),
+                       ES3_OPENGLES(),
+                       ES3_VULKAN());
 
 class FramebufferTest_ES31 : public ANGLETest
 {
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
index 2541892..e9bef54 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/GLSLTest.cpp
@@ -6552,7 +6552,11 @@
 TEST_P(GLSLTest, FragData)
 {
     // Ensures that we don't regress and emit Vulkan layer warnings.
-    treatPlatformWarningsAsErrors();
+    // TODO(jonahr): http://anglebug.com/3900 - Remove check once warnings are cleaned up
+    if (IsVulkan())
+    {
+        treatPlatformWarningsAsErrors();
+    }
 
     constexpr char kFS[] = R"(void main() { gl_FragData[0] = vec4(1, 0, 0, 1); })";
     ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Simple(), kFS);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexBufferOffsetTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexBufferOffsetTest.cpp
index bbe0eea..f4fdece 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexBufferOffsetTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/IndexBufferOffsetTest.cpp
@@ -7,7 +7,7 @@
 // IndexBufferOffsetTest.cpp: Test glDrawElements with an offset and an index buffer
 
 #include "test_utils/ANGLETest.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 using namespace angle;
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp
index e65a6f4..8b2d439 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/InstancingTest.cpp
@@ -588,7 +588,7 @@
         << "Vertex attrib divisor read was not the same that was passed in.";
 }
 
-ANGLE_INSTANTIATE_TEST(InstancingTestES3, ES3_OPENGL(), ES3_OPENGLES(), ES3_D3D11());
+ANGLE_INSTANTIATE_TEST(InstancingTestES3, ES3_OPENGL(), ES3_OPENGLES(), ES3_D3D11(), ES3_VULKAN());
 
 ANGLE_INSTANTIATE_TEST(InstancingTestES31, ES31_OPENGL(), ES31_OPENGLES(), ES31_D3D11());
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp
index 829165b..93ca867 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/LineLoopTest.cpp
@@ -43,6 +43,27 @@
 
     void testTearDown() override { glDeleteProgram(mProgram); }
 
+    void checkPixels()
+    {
+        std::vector<GLubyte> pixels(getWindowWidth() * getWindowHeight() * 4);
+        glReadPixels(0, 0, getWindowWidth(), getWindowHeight(), GL_RGBA, GL_UNSIGNED_BYTE,
+                     &pixels[0]);
+
+        ASSERT_GL_NO_ERROR();
+
+        for (int y = 0; y < getWindowHeight(); y++)
+        {
+            for (int x = 0; x < getWindowWidth(); x++)
+            {
+                const GLubyte *pixel = &pixels[0] + ((y * getWindowWidth() + x) * 4);
+
+                EXPECT_EQ(pixel[0], 0);
+                EXPECT_EQ(pixel[1], pixel[2]);
+                ASSERT_EQ(pixel[3], 255);
+            }
+        }
+    }
+
     void runTest(GLenum indexType, GLuint indexBuffer, const void *indexPtr)
     {
         glClear(GL_COLOR_BUFFER_BIT);
@@ -67,23 +88,7 @@
         glUniform4f(mColorLocation, 0, 1, 0, 1);
         glDrawElements(GL_LINE_STRIP, 5, GL_UNSIGNED_BYTE, stripIndices);
 
-        std::vector<GLubyte> pixels(getWindowWidth() * getWindowHeight() * 4);
-        glReadPixels(0, 0, getWindowWidth(), getWindowHeight(), GL_RGBA, GL_UNSIGNED_BYTE,
-                     &pixels[0]);
-
-        ASSERT_GL_NO_ERROR();
-
-        for (int y = 0; y < getWindowHeight(); y++)
-        {
-            for (int x = 0; x < getWindowWidth(); x++)
-            {
-                const GLubyte *pixel = &pixels[0] + ((y * getWindowWidth() + x) * 4);
-
-                EXPECT_EQ(pixel[0], 0);
-                EXPECT_EQ(pixel[1], pixel[2]);
-                EXPECT_EQ(pixel[3], 255);
-            }
-        }
+        checkPixels();
     }
 
     GLuint mProgram;
@@ -197,6 +202,112 @@
     EXPECT_GL_NO_ERROR();
 }
 
+class LineLoopIndirectTest : public LineLoopTest
+{
+  protected:
+    void runTest(GLenum indexType, const void *indices, GLuint indicesSize, GLuint firstIndex)
+    {
+        struct DrawCommand
+        {
+            GLuint count;
+            GLuint primCount;
+            GLuint firstIndex;
+            GLint baseVertex;
+            GLuint reservedMustBeZero;
+        };
+
+        glClear(GL_COLOR_BUFFER_BIT);
+
+        static const GLfloat loopPositions[] = {0.0f,  0.0f, 0.0f, 0.0f, 0.0f, 0.0f,  0.0f,
+                                                0.0f,  0.0f, 0.0f, 0.0f, 0.0f, -0.5f, -0.5f,
+                                                -0.5f, 0.5f, 0.5f, 0.5f, 0.5f, -0.5f};
+
+        static const GLfloat stripPositions[] = {-0.5f, -0.5f, -0.5f, 0.5f,
+                                                 0.5f,  0.5f,  0.5f,  -0.5f};
+        static const GLubyte stripIndices[]   = {1, 0, 3, 2, 1};
+
+        glUseProgram(mProgram);
+
+        GLuint vertexArray = 0;
+        glGenVertexArrays(1, &vertexArray);
+        glBindVertexArray(vertexArray);
+
+        ASSERT_GL_NO_ERROR();
+
+        GLuint vertBuffer = 0;
+        glGenBuffers(1, &vertBuffer);
+        glBindBuffer(GL_ARRAY_BUFFER, vertBuffer);
+        glBufferData(GL_ARRAY_BUFFER, sizeof(loopPositions), loopPositions, GL_STATIC_DRAW);
+        glEnableVertexAttribArray(mPositionLocation);
+        glVertexAttribPointer(mPositionLocation, 2, GL_FLOAT, GL_FALSE, 0, nullptr);
+        glUniform4f(mColorLocation, 0.0f, 0.0f, 1.0f, 1.0f);
+
+        ASSERT_GL_NO_ERROR();
+
+        GLuint buf;
+        glGenBuffers(1, &buf);
+        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buf);
+        glBufferData(GL_ELEMENT_ARRAY_BUFFER, indicesSize, indices, GL_STATIC_DRAW);
+
+        DrawCommand cmdBuffer = {};
+        cmdBuffer.count       = 4;
+        cmdBuffer.firstIndex  = firstIndex;
+        cmdBuffer.primCount   = 1;
+        GLuint indirectBuf    = 0;
+        glGenBuffers(1, &indirectBuf);
+        glBindBuffer(GL_DRAW_INDIRECT_BUFFER, indirectBuf);
+        glBufferData(GL_DRAW_INDIRECT_BUFFER, sizeof(DrawCommand), &cmdBuffer, GL_STATIC_DRAW);
+
+        ASSERT_GL_NO_ERROR();
+
+        glDrawElementsIndirect(GL_LINE_LOOP, indexType, nullptr);
+        ASSERT_GL_NO_ERROR();
+
+        glBindBuffer(GL_DRAW_INDIRECT_BUFFER, 0);
+        glDeleteBuffers(1, &indirectBuf);
+
+        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
+        glDeleteBuffers(1, &buf);
+
+        glBindVertexArray(0);
+        glDeleteVertexArrays(1, &vertexArray);
+
+        glBindBuffer(GL_ARRAY_BUFFER, 0);
+        glDeleteBuffers(1, &vertBuffer);
+
+        glEnableVertexAttribArray(mPositionLocation);
+        glVertexAttribPointer(mPositionLocation, 2, GL_FLOAT, GL_FALSE, 0, stripPositions);
+        glUniform4f(mColorLocation, 0, 1, 0, 1);
+        glDrawElements(GL_LINE_STRIP, 5, GL_UNSIGNED_BYTE, stripIndices);
+
+        checkPixels();
+    }
+};
+
+TEST_P(LineLoopIndirectTest, UByteIndexIndirectBuffer)
+{
+
+    // Disable D3D11 SDK Layers warnings checks, see ANGLE issue 667 for details
+    ignoreD3D11SDKLayersWarnings();
+
+    static const GLubyte indices[] = {0, 7, 6, 9, 8, 0};
+
+    // Start at index 1.
+    runTest(GL_UNSIGNED_BYTE, reinterpret_cast<const void *>(indices), sizeof(indices), 1);
+}
+
+TEST_P(LineLoopIndirectTest, UShortIndexIndirectBuffer)
+{
+
+    // Disable D3D11 SDK Layers warnings checks, see ANGLE issue 667 for details
+    ignoreD3D11SDKLayersWarnings();
+
+    static const GLushort indices[] = {0, 7, 6, 9, 8, 0};
+
+    // Start at index 1.
+    runTest(GL_UNSIGNED_SHORT, reinterpret_cast<const void *>(indices), sizeof(indices), 1);
+}
+
 // Use this to select which configurations (e.g. which renderer, which GLES major version) these
 // tests should be run against.
 ANGLE_INSTANTIATE_TEST(LineLoopTest,
@@ -205,3 +316,5 @@
                        ES2_OPENGL(),
                        ES2_OPENGLES(),
                        ES2_VULKAN());
+
+ANGLE_INSTANTIATE_TEST(LineLoopIndirectTest, ES31_OPENGLES(), ES31_VULKAN());
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/LinkAndRelinkTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/LinkAndRelinkTest.cpp
index 11d645d..a44b55b 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/LinkAndRelinkTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/LinkAndRelinkTest.cpp
@@ -156,6 +156,46 @@
     EXPECT_GL_ERROR(GL_INVALID_OPERATION);
 }
 
+// Tests uniform default values.
+TEST_P(LinkAndRelinkTest, UniformDefaultValues)
+{
+    // TODO(anglebug.com/3969): Understand why rectangle texture CLs made this fail.
+    ANGLE_SKIP_TEST_IF(IsOzone() && IsIntel());
+    constexpr char kFS[] = R"(precision mediump float;
+uniform vec4 u_uniform;
+
+bool isZero(vec4 value) {
+    return value == vec4(0,0,0,0);
+}
+
+void main()
+{
+    gl_FragColor = isZero(u_uniform) ? vec4(0, 1, 0, 1) : vec4(1, 0, 0, 1);
+})";
+
+    ANGLE_GL_PROGRAM(program, essl1_shaders::vs::Simple(), kFS);
+    glUseProgram(program);
+
+    drawQuad(program, essl1_shaders::PositionAttrib(), 0.5f, 1.0f, true);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+
+    GLint loc = glGetUniformLocation(program, "u_uniform");
+    ASSERT_NE(-1, loc);
+    glUniform4f(loc, 0.1f, 0.2f, 0.3f, 0.4f);
+
+    drawQuad(program, essl1_shaders::PositionAttrib(), 0.5f, 1.0f, true);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::red);
+
+    glLinkProgram(program);
+    ASSERT_GL_NO_ERROR();
+
+    drawQuad(program, essl1_shaders::PositionAttrib(), 0.5f, 1.0f, true);
+    ASSERT_GL_NO_ERROR();
+    EXPECT_PIXEL_COLOR_EQ(0, 0, GLColor::green);
+}
+
 // When program link fails and no valid compute program is installed in the GL
 // state before the link, it should report an error for UseProgram and
 // DispatchCompute.
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
index 4c7f1c5..79638cb 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/MipmapTest.cpp
@@ -940,6 +940,10 @@
 // Then tests if the mipmaps are rendered correctly for all two layers.
 TEST_P(MipmapTestES3, MipmapsForTexture3D)
 {
+    // TODO(cnorthrop): Enabled the group to cover texture base level, but this test
+    // needs some triage: http://anglebug.com/3950
+    ANGLE_SKIP_TEST_IF(IsVulkan());
+
     int px = getWindowWidth() / 2;
     int py = getWindowHeight() / 2;
 
@@ -1184,6 +1188,9 @@
 // be clamped, so the call doesn't generate an error.
 TEST_P(MipmapTestES3, GenerateMipmapBaseLevelOutOfRangeImmutableTexture)
 {
+    // TODO(cnorthrop): Interacts with immutable texture supprt: http://anglebug.com/3950
+    ANGLE_SKIP_TEST_IF(IsVulkan());
+
     glBindTexture(GL_TEXTURE_2D, mTexture);
 
     glTexStorage2D(GL_TEXTURE_2D, 1, GL_RGBA8, 1, 1);
@@ -1215,6 +1222,9 @@
     // Probably not Intel.
     ANGLE_SKIP_TEST_IF(IsOSX() && (IsNVIDIA() || IsIntel()));
 
+    // TODO(cnorthrop): Figure out what's going on here: http://anglebug.com/3950
+    ANGLE_SKIP_TEST_IF(IsVulkan());
+
     std::vector<GLColor> texDataRed(2u * 2u, GLColor::red);
 
     glBindTexture(GL_TEXTURE_2D, mTexture);
@@ -1244,5 +1254,6 @@
                        ES3_OPENGL(),
                        ES2_OPENGLES(),
                        ES3_OPENGLES(),
-                       ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(MipmapTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+                       ES2_VULKAN(),
+                       ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(MipmapTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp
index 5b25fea..3d2f9d5 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/OcclusionQueriesTest.cpp
@@ -7,7 +7,7 @@
 #include "test_utils/ANGLETest.h"
 #include "util/EGLWindow.h"
 #include "util/random_utils.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 using namespace angle;
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ParallelShaderCompileTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ParallelShaderCompileTest.cpp
index 02936de..8da54e7 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ParallelShaderCompileTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ParallelShaderCompileTest.cpp
@@ -10,6 +10,7 @@
 #include "test_utils/gl_raii.h"
 
 #include "util/random_utils.h"
+#include "util/test_utils.h"
 
 using namespace angle;
 
@@ -157,7 +158,7 @@
                     }
                     ++i;
                 }
-                Sleep(kPollInterval);
+                angle::Sleep(kPollInterval);
             }
 
             while (!linkTasks.empty())
@@ -174,7 +175,7 @@
                     }
                     ++i;
                 }
-                Sleep(kPollInterval);
+                angle::Sleep(kPollInterval);
             }
         }
     };
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp
index aa1e74d..bebff37 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/ProgramInterfaceTest.cpp
@@ -1195,6 +1195,10 @@
     glDeleteProgram(program);
 }
 
-ANGLE_INSTANTIATE_TEST(ProgramInterfaceTestES31, ES31_OPENGL(), ES31_OPENGLES(), ES31_D3D11());
+ANGLE_INSTANTIATE_TEST(ProgramInterfaceTestES31,
+                       ES31_OPENGL(),
+                       ES31_OPENGLES(),
+                       ES31_D3D11(),
+                       ES31_VULKAN());
 
 }  // anonymous namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp
index b11f468..e4e1f27 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SimpleOperationTest.cpp
@@ -1094,6 +1094,7 @@
                        ES3_OPENGL(),
                        ES2_OPENGLES(),
                        ES3_OPENGLES(),
-                       ES2_VULKAN());
+                       ES2_VULKAN(),
+                       ES2_VULKAN_SWIFTSHADER());
 
 }  // namespace
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp
index 8cbaf87..516aec7 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/StateChangeTest.cpp
@@ -3086,10 +3086,6 @@
 // and then dispatch again correctly.
 TEST_P(SimpleStateChangeTestES31, DispatchWithImageTextureTexSubImageThenDispatchAgain)
 {
-    // The change to the texture between the dispatch calls is not flushed in the Vulkan backend.
-    // http://anglebug.com/3539
-    ANGLE_SKIP_TEST_IF(IsVulkan());
-
     std::array<GLColor, 4> colors    = {{GLColor::red, GLColor::red, GLColor::red, GLColor::red}};
     std::array<GLColor, 4> subColors = {
         {GLColor::green, GLColor::green, GLColor::green, GLColor::green}};
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
index 1e3f80d..6031f04 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TextureTest.cpp
@@ -13,11 +13,14 @@
 namespace
 {
 
-constexpr unsigned int kPixelTolerance = 1u;
+constexpr GLuint kPixelTolerance     = 1u;
+constexpr GLfloat kPixelTolerance32F = 0.01f;
 
 // Take a pixel, and reset the components not covered by the format to default
 // values. In particular, the default value for the alpha component is 255
 // (1.0 as unsigned normalized fixed point value).
+// For legacy formats, the components may be reordered to match the color that
+// would be created if a pixel of that format was initialized from the given color
 GLColor SliceFormatColor(GLenum format, GLColor full)
 {
     switch (format)
@@ -30,12 +33,43 @@
             return GLColor(full.R, full.G, full.B, 255u);
         case GL_RGBA:
             return full;
+        case GL_LUMINANCE:
+            return GLColor(full.R, full.R, full.R, 255u);
+        case GL_ALPHA:
+            return GLColor(0, 0, 0, full.R);
+        case GL_LUMINANCE_ALPHA:
+            return GLColor(full.R, full.R, full.R, full.G);
         default:
             EXPECT_TRUE(false);
             return GLColor::white;
     }
 }
 
+// As above, for 32F colors
+GLColor32F SliceFormatColor32F(GLenum format, GLColor32F full)
+{
+    switch (format)
+    {
+        case GL_RED:
+            return GLColor32F(full.R, 0.0f, 0.0f, 1.0f);
+        case GL_RG:
+            return GLColor32F(full.R, full.G, 0.0f, 1.0f);
+        case GL_RGB:
+            return GLColor32F(full.R, full.G, full.B, 1.0f);
+        case GL_RGBA:
+            return full;
+        case GL_LUMINANCE:
+            return GLColor32F(full.R, full.R, full.R, 1.0f);
+        case GL_ALPHA:
+            return GLColor32F(0.0f, 0.0f, 0.0f, full.R);
+        case GL_LUMINANCE_ALPHA:
+            return GLColor32F(full.R, full.R, full.R, full.G);
+        default:
+            EXPECT_TRUE(false);
+            return GLColor32F(1.0f, 1.0f, 1.0f, 1.0f);
+    }
+}
+
 class TexCoordDrawTest : public ANGLETest
 {
   protected:
@@ -1754,7 +1788,7 @@
     }
 }
 
-// See description on testFloatCopySubImage
+// Tests CopySubImage for float formats
 TEST_P(Texture2DTest, CopySubImageFloat_R_R)
 {
     testFloatCopySubImage(1, 1);
@@ -1783,7 +1817,7 @@
 TEST_P(Texture2DTest, CopySubImageFloat_RGB_RGB)
 {
     // TODO(cwallez): Fix on Linux Intel drivers (http://anglebug.com/1346)
-    ANGLE_SKIP_TEST_IF(IsIntel() && IsLinux());
+    ANGLE_SKIP_TEST_IF(IsIntel() && IsLinux() && IsOpenGL());
 
     // Ignore SDK layers messages on D3D11 FL 9.3 (http://anglebug.com/1284)
     ANGLE_SKIP_TEST_IF(IsD3D11_FL93());
@@ -1811,10 +1845,6 @@
 
 TEST_P(Texture2DTest, CopySubImageFloat_RGBA_RGBA)
 {
-    // TODO(lucferron): This test fails only on linux and intel.
-    // http://anglebug.com/2726
-    ANGLE_SKIP_TEST_IF(IsVulkan() && IsLinux() && IsIntel());
-
     // Ignore SDK layers messages on D3D11 FL 9.3 (http://anglebug.com/1284)
     ANGLE_SKIP_TEST_IF(IsD3D11_FL93());
 
@@ -1940,6 +1970,8 @@
     ANGLE_SKIP_TEST_IF(IsWindows() && IsAMD() && IsOpenGL());
     // D3D Debug device reports an error. http://anglebug.com/3501
     ANGLE_SKIP_TEST_IF(IsWindows() && IsD3D11());
+    // TODO(cnorthrop): Needs triage on Vulkan backend. http://anglebug.com/3950
+    ANGLE_SKIP_TEST_IF(IsVulkan());
 
     // The workaround in the GL backend required to trigger this bug generates driver warning
     // messages.
@@ -1985,6 +2017,9 @@
     // TODO(geofflang): Investigate on D3D11. http://anglebug.com/2291
     ANGLE_SKIP_TEST_IF(IsD3D11());
 
+    // TODO(cnorthrop): Framebuffer level support. http://anglebug.com/3184
+    ANGLE_SKIP_TEST_IF(IsVulkan());
+
     setUpProgram();
 
     constexpr GLint width  = 8;
@@ -2642,6 +2677,9 @@
 // samplerCubeShadow: TextureCube + SamplerComparisonState
 TEST_P(SamplerTypeMixTestES3, SamplerTypeMixDraw)
 {
+    // TODO(cnorthrop): Requires non-color staging buffer support. http://anglebug.com/3949
+    ANGLE_SKIP_TEST_IF(IsVulkan());
+
     glActiveTexture(GL_TEXTURE0);
     glBindTexture(GL_TEXTURE_2D, mTexture2D);
     GLubyte texData[4];
@@ -4028,11 +4066,11 @@
         glGenRenderbuffers(1, &mRenderbuffer);
 
         glBindTexture(GL_TEXTURE_2D, mRenderableTexture);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
         glBindTexture(GL_TEXTURE_2D, mTestTexture);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
 
         glBindTexture(GL_TEXTURE_2D, 0);
 
@@ -4139,7 +4177,7 @@
 }
 
 // Test half-float texture formats enabled by the GL_EXT_texture_rg extension.
-TEST_P(Texture2DRGTest, TextureRGFHalfFloatTest)
+TEST_P(Texture2DRGTest, TextureRGHalfFloatTest)
 {
     ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_texture_rg"));
     ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float"));
@@ -4158,6 +4196,452 @@
     testRGTexture(SliceFormatColor(GL_RG_EXT, expectedColor));
 }
 
+class Texture2DFloatTest : public Texture2DTest
+{
+  protected:
+    Texture2DFloatTest()
+        : Texture2DTest(), mRenderableTexture(0), mTestTexture(0), mFBO(0), mRenderbuffer(0)
+    {}
+
+    void testSetUp() override
+    {
+        Texture2DTest::testSetUp();
+
+        glActiveTexture(GL_TEXTURE0);
+        glGenTextures(1, &mRenderableTexture);
+        glGenTextures(1, &mTestTexture);
+        glGenFramebuffers(1, &mFBO);
+        glGenRenderbuffers(1, &mRenderbuffer);
+
+        setUpProgram();
+        glUseProgram(mProgram);
+        glUniform1i(mTexture2DUniformLocation, 0);
+
+        glBindTexture(GL_TEXTURE_2D, mRenderableTexture);
+        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+
+        glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
+        glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
+                               mRenderableTexture, 0);
+
+        ASSERT_GL_NO_ERROR();
+    }
+
+    void testTearDown() override
+    {
+        glDeleteTextures(1, &mRenderableTexture);
+        glDeleteTextures(1, &mTestTexture);
+        glDeleteFramebuffers(1, &mFBO);
+        glDeleteRenderbuffers(1, &mRenderbuffer);
+
+        Texture2DTest::testTearDown();
+    }
+
+    void testFloatTextureSample(GLenum internalFormat, GLenum format, GLenum type)
+    {
+        constexpr GLfloat imageDataFloat[] = {
+            0.2f,
+            0.3f,
+            0.4f,
+            0.5f,
+        };
+        constexpr GLhalf imageDataHalf[] = {
+            0x3266,
+            0x34CD,
+            0x3666,
+            0x3800,
+        };
+        GLColor expectedValue;
+        for (int i = 0; i < 4; i++)
+        {
+            expectedValue[i] = static_cast<GLubyte>(imageDataFloat[i] * 255.0f);
+        }
+
+        const GLvoid *imageData;
+        switch (type)
+        {
+            case GL_FLOAT:
+                imageData = imageDataFloat;
+                break;
+            case GL_HALF_FLOAT:
+            case GL_HALF_FLOAT_OES:
+                imageData = imageDataHalf;
+                break;
+            default:
+                imageData = nullptr;
+        }
+        ASSERT(imageData != nullptr);
+
+        glBindTexture(GL_TEXTURE_2D, mTestTexture);
+        glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, 1, 1, 0, format, type, imageData);
+
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+        glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
+        drawQuad(mProgram, "position", 0.5f);
+
+        EXPECT_GL_NO_ERROR();
+        EXPECT_PIXEL_COLOR_NEAR(0, 0, SliceFormatColor(format, expectedValue), kPixelTolerance);
+    }
+
+    void testFloatTextureLinear(GLenum internalFormat, GLenum format, GLenum type)
+    {
+        int numComponents;
+        switch (format)
+        {
+            case GL_RGBA:
+                numComponents = 4;
+                break;
+            case GL_RGB:
+                numComponents = 3;
+                break;
+            case GL_LUMINANCE_ALPHA:
+                numComponents = 2;
+                break;
+            case GL_LUMINANCE:
+            case GL_ALPHA:
+                numComponents = 1;
+                break;
+            default:
+                numComponents = 0;
+        }
+        ASSERT(numComponents > 0);
+
+        constexpr GLfloat pixelIntensitiesFloat[] = {0.0f, 1.0f, 0.0f, 1.0f};
+        constexpr GLhalf pixelIntensitiesHalf[]   = {0x0000, 0x3C00, 0x0000, 0x3C00};
+
+        GLfloat imageDataFloat[16];
+        GLhalf imageDataHalf[16];
+        for (int i = 0; i < 4; i++)
+        {
+            for (int c = 0; c < numComponents; c++)
+            {
+                imageDataFloat[i * numComponents + c] = pixelIntensitiesFloat[i];
+                imageDataHalf[i * numComponents + c]  = pixelIntensitiesHalf[i];
+            }
+        }
+
+        const GLvoid *imageData;
+        switch (type)
+        {
+            case GL_FLOAT:
+                imageData = imageDataFloat;
+                break;
+            case GL_HALF_FLOAT:
+            case GL_HALF_FLOAT_OES:
+                imageData = imageDataHalf;
+                break;
+            default:
+                imageData = nullptr;
+        }
+        ASSERT(imageData != nullptr);
+
+        glBindTexture(GL_TEXTURE_2D, mTestTexture);
+        glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, 2, 2, 0, format, type, imageData);
+
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+
+        glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
+        drawQuad(mProgram, "position", 0.5f);
+
+        EXPECT_GL_NO_ERROR();
+        // Source texture contains 2 black pixels and 2 white pixels, we sample in the center so we
+        // should expect the final value to be gray (halfway in-between)
+        EXPECT_PIXEL_COLOR_NEAR(0, 0, SliceFormatColor(format, GLColor(127u, 127u, 127u, 127u)),
+                                kPixelTolerance);
+    }
+
+    bool performFloatTextureRender(GLenum internalFormat,
+                                   GLenum renderBufferFormat,
+                                   GLenum format,
+                                   GLenum type)
+    {
+        glBindTexture(GL_TEXTURE_2D, mTestTexture);
+        glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, 1, 1, 0, format, type, nullptr);
+        glBindTexture(GL_TEXTURE_2D, 0);
+
+        glBindRenderbuffer(GL_RENDERBUFFER, mRenderbuffer);
+        glRenderbufferStorage(GL_RENDERBUFFER, renderBufferFormat, 1, 1);
+        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
+                                  mRenderbuffer);
+        glBindRenderbuffer(GL_RENDERBUFFER, 0);
+        EXPECT_GL_NO_ERROR();
+
+        if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
+        {
+            return false;
+        }
+
+        glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
+
+        glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
+        glClear(GL_COLOR_BUFFER_BIT);
+
+        EXPECT_GL_NO_ERROR();
+        return true;
+    }
+
+    GLuint mRenderableTexture;
+    GLuint mTestTexture;
+    GLuint mFBO;
+    GLuint mRenderbuffer;
+};
+
+class Texture2DFloatTestES3 : public Texture2DFloatTest
+{
+  protected:
+    void testFloatTextureRender(GLenum internalFormat, GLenum format, GLenum type)
+    {
+        bool framebufferComplete =
+            performFloatTextureRender(internalFormat, internalFormat, format, type);
+        EXPECT_TRUE(framebufferComplete);
+        EXPECT_PIXEL_COLOR32F_NEAR(0, 0,
+                                   SliceFormatColor32F(format, GLColor32F(1.0f, 1.0f, 1.0f, 1.0f)),
+                                   kPixelTolerance32F);
+    }
+};
+
+class Texture2DFloatTestES2 : public Texture2DFloatTest
+{
+  protected:
+    bool checkFloatTextureRender(GLenum renderBufferFormat, GLenum format, GLenum type)
+    {
+        bool framebufferComplete =
+            performFloatTextureRender(format, renderBufferFormat, format, type);
+
+        if (!framebufferComplete)
+        {
+            return false;
+        }
+
+        EXPECT_PIXEL_COLOR32F_NEAR(0, 0,
+                                   SliceFormatColor32F(format, GLColor32F(1.0f, 1.0f, 1.0f, 1.0f)),
+                                   kPixelTolerance32F);
+        return true;
+    }
+};
+
+// Test texture sampling for ES3 float texture formats
+TEST_P(Texture2DFloatTestES3, TextureFloatSampleBasicTest)
+{
+    testFloatTextureSample(GL_RGBA32F, GL_RGBA, GL_FLOAT);
+    testFloatTextureSample(GL_RGB32F, GL_RGB, GL_FLOAT);
+}
+
+// Test texture sampling for ES2 float texture formats
+TEST_P(Texture2DFloatTestES2, TextureFloatSampleBasicTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float"));
+    testFloatTextureSample(GL_RGBA, GL_RGBA, GL_FLOAT);
+    testFloatTextureSample(GL_RGB, GL_RGB, GL_FLOAT);
+}
+
+// Test texture sampling for ES3 half float texture formats
+TEST_P(Texture2DFloatTestES3, TextureHalfFloatSampleBasicTest)
+{
+    testFloatTextureSample(GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT);
+    testFloatTextureSample(GL_RGB16F, GL_RGB, GL_HALF_FLOAT);
+}
+
+// Test texture sampling for ES2 half float texture formats
+TEST_P(Texture2DFloatTestES2, TextureHalfFloatSampleBasicTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float"));
+    testFloatTextureSample(GL_RGBA, GL_RGBA, GL_HALF_FLOAT_OES);
+    testFloatTextureSample(GL_RGB, GL_RGB, GL_HALF_FLOAT_OES);
+}
+
+// Test texture sampling for legacy GLES 2.0 float texture formats in ES3
+TEST_P(Texture2DFloatTestES3, TextureFloatSampleLegacyTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float"));
+
+    testFloatTextureSample(GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT);
+    testFloatTextureSample(GL_ALPHA, GL_ALPHA, GL_FLOAT);
+    testFloatTextureSample(GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT);
+
+    if (IsGLExtensionEnabled("GL_EXT_texture_storage"))
+    {
+        testFloatTextureSample(GL_LUMINANCE32F_EXT, GL_LUMINANCE, GL_FLOAT);
+        testFloatTextureSample(GL_ALPHA32F_EXT, GL_ALPHA, GL_FLOAT);
+        testFloatTextureSample(GL_LUMINANCE_ALPHA32F_EXT, GL_LUMINANCE_ALPHA, GL_FLOAT);
+    }
+}
+
+// Test texture sampling for legacy GLES 2.0 float texture formats in ES2
+TEST_P(Texture2DFloatTestES2, TextureFloatSampleLegacyTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float"));
+
+    testFloatTextureSample(GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT);
+    testFloatTextureSample(GL_ALPHA, GL_ALPHA, GL_FLOAT);
+    testFloatTextureSample(GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT);
+}
+
+// Test texture sampling for legacy GLES 2.0 half float texture formats in ES3
+TEST_P(Texture2DFloatTestES3, TextureHalfFloatSampleLegacyTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float"));
+
+    testFloatTextureSample(GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES);
+    testFloatTextureSample(GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES);
+    testFloatTextureSample(GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES);
+
+    if (IsGLExtensionEnabled("GL_EXT_texture_storage"))
+    {
+        testFloatTextureSample(GL_LUMINANCE16F_EXT, GL_LUMINANCE, GL_HALF_FLOAT);
+        testFloatTextureSample(GL_ALPHA16F_EXT, GL_ALPHA, GL_HALF_FLOAT);
+        testFloatTextureSample(GL_LUMINANCE_ALPHA16F_EXT, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT);
+    }
+}
+// Test texture sampling for legacy GLES 2.0 half float texture formats in ES2
+TEST_P(Texture2DFloatTestES2, TextureHalfFloatSampleLegacyTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float"));
+
+    testFloatTextureSample(GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES);
+    testFloatTextureSample(GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES);
+    testFloatTextureSample(GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES);
+}
+
+// Test linear sampling for ES3 32F formats
+TEST_P(Texture2DFloatTestES3, TextureFloatLinearTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float_linear"));
+
+    testFloatTextureLinear(GL_RGBA32F, GL_RGBA, GL_FLOAT);
+    testFloatTextureLinear(GL_RGB32F, GL_RGB, GL_FLOAT);
+}
+// Test linear sampling for ES2 32F formats
+TEST_P(Texture2DFloatTestES2, TextureFloatLinearTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float_linear"));
+
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float"));
+
+    testFloatTextureLinear(GL_RGBA, GL_RGBA, GL_FLOAT);
+}
+
+// Test linear sampling for ES3 16F formats
+TEST_P(Texture2DFloatTestES3, TextureHalfFloatLinearTest)
+{
+    // Half float formats must be linearly filterable in GLES 3.0 core
+    testFloatTextureLinear(GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT);
+    testFloatTextureLinear(GL_RGB16F, GL_RGB, GL_HALF_FLOAT);
+}
+// Test linear sampling for ES2 16F formats
+TEST_P(Texture2DFloatTestES2, TextureHalfFloatLinearTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float_linear"));
+    testFloatTextureLinear(GL_RGBA, GL_RGBA, GL_HALF_FLOAT_OES);
+    testFloatTextureLinear(GL_RGB, GL_RGB, GL_HALF_FLOAT_OES);
+}
+
+// Test linear sampling for legacy GLES 2.0 32F formats in ES3
+TEST_P(Texture2DFloatTestES3, TextureFloatLinearLegacyTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float"));
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float_linear"));
+
+    testFloatTextureLinear(GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT);
+    testFloatTextureLinear(GL_ALPHA, GL_ALPHA, GL_FLOAT);
+    testFloatTextureLinear(GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT);
+
+    if (IsGLExtensionEnabled("GL_EXT_texture_storage"))
+    {
+        testFloatTextureLinear(GL_LUMINANCE32F_EXT, GL_LUMINANCE, GL_FLOAT);
+        testFloatTextureLinear(GL_ALPHA32F_EXT, GL_ALPHA, GL_FLOAT);
+        testFloatTextureLinear(GL_LUMINANCE_ALPHA32F_EXT, GL_LUMINANCE_ALPHA, GL_FLOAT);
+    }
+}
+// Test linear sampling for legacy GLES 2.0 32F formats in ES2
+TEST_P(Texture2DFloatTestES2, TextureFloatLinearLegacyTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float"));
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_float_linear"));
+
+    testFloatTextureLinear(GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT);
+    testFloatTextureLinear(GL_ALPHA, GL_ALPHA, GL_FLOAT);
+    testFloatTextureLinear(GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT);
+}
+
+// Test linear sampling for legacy GLES 2.0 16F formats in ES3
+TEST_P(Texture2DFloatTestES3, TextureHalfFloatLinearLegacyTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float"));
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float_linear"));
+
+    testFloatTextureLinear(GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES);
+    testFloatTextureLinear(GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES);
+    testFloatTextureLinear(GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES);
+
+    if (IsGLExtensionEnabled("GL_EXT_texture_storage"))
+    {
+        testFloatTextureLinear(GL_LUMINANCE16F_EXT, GL_LUMINANCE, GL_HALF_FLOAT);
+        testFloatTextureLinear(GL_ALPHA16F_EXT, GL_ALPHA, GL_HALF_FLOAT);
+        testFloatTextureLinear(GL_LUMINANCE_ALPHA16F_EXT, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT);
+    }
+}
+// Test linear sampling for legacy GLES 2.0 16F formats in ES2
+TEST_P(Texture2DFloatTestES2, TextureHalfFloatLinearLegacyTest)
+{
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float"));
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_half_float_linear"));
+
+    testFloatTextureLinear(GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES);
+    testFloatTextureLinear(GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES);
+    testFloatTextureLinear(GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES);
+}
+
+// Test color-renderability for ES3 float and half float textures
+TEST_P(Texture2DFloatTestES3, TextureFloatRenderTest)
+{
+    // EXT_color_buffer_float covers float, half float, and 11-11-10 float formats
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_color_buffer_float"));
+
+    testFloatTextureRender(GL_R32F, GL_RED, GL_FLOAT);
+    testFloatTextureRender(GL_RG32F, GL_RG, GL_FLOAT);
+    testFloatTextureRender(GL_RGBA32F, GL_RGBA, GL_FLOAT);
+
+    testFloatTextureRender(GL_R16F, GL_RED, GL_HALF_FLOAT);
+    testFloatTextureRender(GL_RG16F, GL_RG, GL_HALF_FLOAT);
+    testFloatTextureRender(GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT);
+
+    testFloatTextureRender(GL_R11F_G11F_B10F, GL_RGB, GL_FLOAT);
+}
+
+// Test color-renderability for ES2 half float textures
+TEST_P(Texture2DFloatTestES2, TextureFloatRenderTest)
+{
+    // EXT_color_buffer_half_float requires at least one format to be renderable, but does not
+    // require a specific one
+    ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_EXT_color_buffer_half_float"));
+    // https://crbug.com/1003971
+    ANGLE_SKIP_TEST_IF(IsOzone());
+
+    bool atLeastOneSupported = false;
+
+    if (IsGLExtensionEnabled("GL_OES_texture_half_float") ||
+        IsGLExtensionEnabled("GL_OES_texture_half_float"))
+    {
+        atLeastOneSupported |= checkFloatTextureRender(GL_R16F_EXT, GL_RED_EXT, GL_HALF_FLOAT_OES);
+        atLeastOneSupported |= checkFloatTextureRender(GL_RG16F_EXT, GL_RG_EXT, GL_HALF_FLOAT_OES);
+    }
+    if (IsGLExtensionEnabled("GL_OES_texture_half_float"))
+    {
+        atLeastOneSupported |= checkFloatTextureRender(GL_RGB16F_EXT, GL_RGB, GL_HALF_FLOAT_OES);
+
+        // If OES_texture_half_float is supported, then RGBA half float textures must be renderable
+        bool rgbaSupported = checkFloatTextureRender(GL_RGBA16F_EXT, GL_RGBA, GL_HALF_FLOAT_OES);
+        EXPECT_TRUE(rgbaSupported);
+        atLeastOneSupported |= rgbaSupported;
+    }
+
+    EXPECT_TRUE(atLeastOneSupported);
+}
+
 // Test that UNPACK_SKIP_IMAGES doesn't have an effect on 2D texture uploads.
 // GLES 3.0.4 section 3.8.3.
 TEST_P(Texture2DTestES3, UnpackSkipImages2D)
@@ -4295,6 +4779,9 @@
     // Seems to fail on AMD D3D11. Possibly driver bug. http://anglebug.com/3342
     ANGLE_SKIP_TEST_IF(IsAMD() && IsWindows() && IsD3D11());
 
+    // TODO(cnorthrop): Also failing on Vulkan/Windows/AMD. http://anglebug.com/3950
+    ANGLE_SKIP_TEST_IF(IsAMD() && IsWindows() && IsVulkan());
+
     const int size = getWindowWidth();
 
     auto dim   = [size](int level) { return size >> level; };
@@ -4916,6 +5403,9 @@
 // this led to not sampling your texture data when minification occurred.
 TEST_P(Texture2DTestES3, MinificationWithSamplerNoMipmapping)
 {
+    // TODO: Triage this failure on Vulkan: http://anglebug.com/3950
+    ANGLE_SKIP_TEST_IF(IsVulkan());
+
     constexpr char kVS[] =
         "#version 300 es\n"
         "out vec2 texcoord;\n"
@@ -5183,8 +5673,8 @@
                        ES2_OPENGL(),
                        ES2_OPENGLES(),
                        ES2_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(Texture3DTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
+ANGLE_INSTANTIATE_TEST(Texture2DTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(Texture3DTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
 ANGLE_INSTANTIATE_TEST(Texture2DIntegerAlpha1TestES3,
                        ES3_D3D11(),
                        ES3_OPENGL(),
@@ -5204,8 +5694,12 @@
                        ES3_OPENGL(),
                        ES3_OPENGLES(),
                        ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(Texture2DArrayTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(TextureSizeTextureArrayTest, ES3_D3D11(), ES3_OPENGL());
+ANGLE_INSTANTIATE_TEST(Texture2DArrayTestES3,
+                       ES3_D3D11(),
+                       ES3_OPENGL(),
+                       ES3_OPENGLES(),
+                       ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(TextureSizeTextureArrayTest, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
 ANGLE_INSTANTIATE_TEST(SamplerInStructTest,
                        ES2_D3D11(),
                        ES2_D3D9(),
@@ -5261,13 +5755,26 @@
                        ES3_OPENGLES(),
                        ES2_VULKAN(),
                        ES3_VULKAN());
-ANGLE_INSTANTIATE_TEST(TextureCubeTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
-ANGLE_INSTANTIATE_TEST(Texture2DIntegerTestES3, ES3_D3D11(), ES3_OPENGL());
-ANGLE_INSTANTIATE_TEST(TextureCubeIntegerTestES3, ES3_D3D11(), ES3_OPENGL());
+ANGLE_INSTANTIATE_TEST(Texture2DFloatTestES3,
+                       ES3_D3D11(),
+                       ES3_OPENGL(),
+                       ES3_OPENGLES(),
+                       ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(Texture2DFloatTestES2,
+                       ES2_D3D11(),
+                       ES2_OPENGL(),
+                       ES2_OPENGLES(),
+                       ES2_VULKAN());
+ANGLE_INSTANTIATE_TEST(TextureCubeTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(Texture2DIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(TextureCubeIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
 ANGLE_INSTANTIATE_TEST(TextureCubeIntegerEdgeTestES3, ES3_D3D11(), ES3_OPENGL());
-ANGLE_INSTANTIATE_TEST(Texture2DIntegerProjectiveOffsetTestES3, ES3_D3D11(), ES3_OPENGL());
-ANGLE_INSTANTIATE_TEST(Texture2DArrayIntegerTestES3, ES3_D3D11(), ES3_OPENGL());
-ANGLE_INSTANTIATE_TEST(Texture3DIntegerTestES3, ES3_D3D11(), ES3_OPENGL());
+ANGLE_INSTANTIATE_TEST(Texture2DIntegerProjectiveOffsetTestES3,
+                       ES3_D3D11(),
+                       ES3_OPENGL(),
+                       ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(Texture2DArrayIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
+ANGLE_INSTANTIATE_TEST(Texture3DIntegerTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_VULKAN());
 ANGLE_INSTANTIATE_TEST(Texture2DDepthTest,
                        ES2_D3D9(),
                        ES2_D3D11(),
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp
index e9cb613..8caeb64 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/TimerQueriesTest.cpp
@@ -10,7 +10,7 @@
 #include "test_utils/ANGLETest.h"
 #include "util/EGLWindow.h"
 #include "util/random_utils.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 using namespace angle;
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp
index bd077ee..85b54c2 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/UniformBufferTest.cpp
@@ -1515,11 +1515,10 @@
 
 // Recreate WebGL conformance test conformance2/uniforms/large-uniform-buffers.html to test
 // regression in http://anglebug.com/3388
-TEST_P(UniformBufferTest, SizeOver65535)
+TEST_P(UniformBufferTest, SizeOverMaxBlockSize)
 {
-    // UBOs sized above 65535 do not appear to work on D3D11
-    // http://anglebug.com/3388
-    ANGLE_SKIP_TEST_IF(IsD3D11());
+    // Test crashes on Windows AMD OpenGL
+    ANGLE_SKIP_TEST_IF(IsAMD() && IsWindows() && IsOpenGL());
 
     ANGLE_GL_PROGRAM(program, essl3_shaders::vs::Simple(), kFragmentShader);
 
@@ -1546,10 +1545,14 @@
     glGetActiveUniformBlockiv(program, uboIndex, GL_UNIFORM_BLOCK_DATA_SIZE, &uboDataSize);
     EXPECT_NE(uboDataSize, 0);  // uniform block data size invalid
 
-    GLBuffer uboBuf;
-    std::array<GLfloat, 0x20000> uboData;
+    GLint64 maxUniformBlockSize;
+    glGetInteger64v(GL_MAX_UNIFORM_BLOCK_SIZE, &maxUniformBlockSize);
 
-    GLint offs0 = 0x00000;
+    GLBuffer uboBuf;
+    std::vector<GLfloat> uboData;
+    uboData.resize(maxUniformBlockSize * 2);  // underlying data is twice the max block size
+
+    GLint offs0 = 0;
 
     // Red
     uboData[offs0 + 0] = 1;
@@ -1557,7 +1560,7 @@
     uboData[offs0 + 2] = 0;
     uboData[offs0 + 3] = 1;
 
-    GLint offs1     = 0x10000;
+    GLint offs1     = maxUniformBlockSize;
     GLint alignment = 0;
     glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, &alignment);
     EXPECT_EQ(offs1 % alignment, 0);
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp
index 73f8b30..43b309e 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/VertexAttributeTest.cpp
@@ -4,6 +4,7 @@
 // found in the LICENSE file.
 //
 #include "anglebase/numerics/safe_conversions.h"
+#include "common/mathutil.h"
 #include "platform/FeaturesVk.h"
 #include "test_utils/ANGLETest.h"
 #include "test_utils/gl_raii.h"
@@ -22,10 +23,14 @@
             return 1;
         case GL_UNSIGNED_SHORT:
         case GL_SHORT:
+        case GL_HALF_FLOAT:
+        case GL_HALF_FLOAT_OES:
             return 2;
         case GL_UNSIGNED_INT:
         case GL_INT:
         case GL_FLOAT:
+        case GL_UNSIGNED_INT_10_10_10_2_OES:
+        case GL_INT_10_10_10_2_OES:
             return 4;
         default:
             EXPECT_TRUE(false);
@@ -49,6 +54,88 @@
     }
 }
 
+// Normalization for each channel of signed/unsigned 10_10_10_2 types
+template <typename T>
+GLfloat Normalize10(T value)
+{
+    static_assert(std::is_integral<T>::value, "Integer required.");
+    GLfloat floatOutput;
+    if (std::is_signed<T>::value)
+    {
+        const uint32_t signMask     = 0x200;       // 1 set at the 9th bit
+        const uint32_t negativeMask = 0xFFFFFC00;  // All bits from 10 to 31 set to 1
+
+        if (value & signMask)
+        {
+            int negativeNumber = value | negativeMask;
+            floatOutput        = static_cast<GLfloat>(negativeNumber);
+        }
+        else
+        {
+            floatOutput = static_cast<GLfloat>(value);
+        }
+
+        const int32_t maxValue = 0x1FF;       // 1 set in bits 0 through 8
+        const int32_t minValue = 0xFFFFFE01;  // Inverse of maxValue
+
+        // A 10-bit two's complement number has the possibility of being minValue - 1 but
+        // OpenGL's normalization rules dictate that it should be clamped to minValue in
+        // this case.
+        if (floatOutput < minValue)
+            floatOutput = minValue;
+
+        const int32_t halfRange = (maxValue - minValue) >> 1;
+        floatOutput             = ((floatOutput - minValue) / halfRange) - 1.0f;
+    }
+    else
+    {
+        const GLfloat maxValue = 1023.0f;  // 1 set in bits 0 through 9
+        floatOutput            = static_cast<GLfloat>(value) / maxValue;
+    }
+    return floatOutput;
+}
+
+template <typename T>
+GLfloat Normalize2(T value)
+{
+    static_assert(std::is_integral<T>::value, "Integer required.");
+    if (std::is_signed<T>::value)
+    {
+        GLfloat outputValue = static_cast<float>(value) / 1.0f;
+        outputValue         = (outputValue >= -1.0f) ? (outputValue) : (-1.0f);
+        return outputValue;
+    }
+    else
+    {
+        return static_cast<float>(value) / 3.0f;
+    }
+}
+
+template <typename DestT, typename SrcT>
+DestT Pack1010102(std::array<SrcT, 4> input)
+{
+    static_assert(std::is_integral<SrcT>::value, "Integer required.");
+    static_assert(std::is_integral<DestT>::value, "Integer required.");
+    static_assert(std::is_unsigned<SrcT>::value == std::is_unsigned<DestT>::value,
+                  "Signedness should be equal.");
+    DestT rOut, gOut, bOut, aOut;
+    rOut = static_cast<DestT>(input[0]);
+    gOut = static_cast<DestT>(input[1]);
+    bOut = static_cast<DestT>(input[2]);
+    aOut = static_cast<DestT>(input[3]);
+
+    if (std::is_unsigned<SrcT>::value)
+    {
+        return rOut << 22 | gOut << 12 | bOut << 2 | aOut;
+    }
+    else
+    {
+        // Need to apply bit mask to account for sign extension
+        return (0xFFC00000u & rOut << 22) | (0x003FF000u & gOut << 12) | (0x00000FFCu & bOut << 2) |
+               (0x00000003u & aOut);
+    }
+}
+
 class VertexAttributeTest : public ANGLETest
 {
   protected:
@@ -124,7 +211,9 @@
         glEnableVertexAttribArray(mExpectedAttrib);
     }
 
-    void checkPixels()
+    void checkPixels() { checkRGBPixels(true); }
+
+    void checkRGBPixels(bool checkAlpha)
     {
         GLint viewportSize[4];
         glGetIntegerv(GL_VIEWPORT, viewportSize);
@@ -135,10 +224,20 @@
         // We need to offset our checks from triangle edges to ensure we don't fall on a single tri
         // Avoid making assumptions of drawQuad with four checks to check the four possible tri
         // regions
-        EXPECT_PIXEL_EQ((midPixelX + viewportSize[0]) / 2, midPixelY, 255, 255, 255, 255);
-        EXPECT_PIXEL_EQ((midPixelX + viewportSize[2]) / 2, midPixelY, 255, 255, 255, 255);
-        EXPECT_PIXEL_EQ(midPixelX, (midPixelY + viewportSize[1]) / 2, 255, 255, 255, 255);
-        EXPECT_PIXEL_EQ(midPixelX, (midPixelY + viewportSize[3]) / 2, 255, 255, 255, 255);
+        if (checkAlpha)
+        {
+            EXPECT_PIXEL_EQ((midPixelX + viewportSize[0]) / 2, midPixelY, 255, 255, 255, 255);
+            EXPECT_PIXEL_EQ((midPixelX + viewportSize[2]) / 2, midPixelY, 255, 255, 255, 255);
+            EXPECT_PIXEL_EQ(midPixelX, (midPixelY + viewportSize[1]) / 2, 255, 255, 255, 255);
+            EXPECT_PIXEL_EQ(midPixelX, (midPixelY + viewportSize[3]) / 2, 255, 255, 255, 255);
+        }
+        else
+        {
+            EXPECT_PIXEL_RGB_EQUAL((midPixelX + viewportSize[0]) / 2, midPixelY, 255, 255, 255);
+            EXPECT_PIXEL_RGB_EQUAL((midPixelX + viewportSize[2]) / 2, midPixelY, 255, 255, 255);
+            EXPECT_PIXEL_RGB_EQUAL(midPixelX, (midPixelY + viewportSize[1]) / 2, 255, 255, 255);
+            EXPECT_PIXEL_RGB_EQUAL(midPixelX, (midPixelY + viewportSize[3]) / 2, 255, 255, 255);
+        }
     }
 
     void checkPixelsUnEqual()
@@ -177,7 +276,16 @@
 
             if (checkPixelEqual)
             {
-                checkPixels();
+                if ((test.type == GL_HALF_FLOAT || test.type == GL_HALF_FLOAT_OES) && IsVulkan() &&
+                    typeSize == 3)
+                {  // We need a special case for RGB16F format on a Vulkan backend due to the fact
+                   // that in such a usecase, we need to ignore the alpha channel.
+                    checkRGBPixels(false);
+                }
+                else
+                {
+                    checkPixels();
+                }
             }
             else
             {
@@ -420,6 +528,62 @@
     runTest(data);
 }
 
+// Verify that vertex data is updated correctly when using a float/half-float client memory pointer.
+TEST_P(VertexAttributeTest, HalfFloatClientMemoryPointer)
+{
+    std::array<GLhalf, kVertexCount> inputData;
+    std::array<GLfloat, kVertexCount> expectedData = {
+        {0.f, 1.5f, 2.3f, 3.2f, -1.8f, -2.2f, -3.9f, -4.f, 34.5f, 32.2f, -78.8f, -77.4f, -76.1f}};
+
+    for (size_t i = 0; i < kVertexCount; i++)
+    {
+        inputData[i] = gl::float32ToFloat16(expectedData[i]);
+    }
+
+    // If the extension is enabled run the test on all contexts
+    if (IsGLExtensionEnabled("GL_OES_vertex_half_float"))
+    {
+        TestData imediateData(GL_HALF_FLOAT_OES, GL_FALSE, Source::IMMEDIATE, inputData.data(),
+                              expectedData.data());
+        runTest(imediateData);
+    }
+    // Otherwise run the test only if it is an ES3 context
+    else if (getClientMajorVersion() >= 3)
+    {
+        TestData imediateData(GL_HALF_FLOAT, GL_FALSE, Source::IMMEDIATE, inputData.data(),
+                              expectedData.data());
+        runTest(imediateData);
+    }
+}
+
+// Verify that vertex data is updated correctly when using a float/half-float buffer.
+TEST_P(VertexAttributeTest, HalfFloatBuffer)
+{
+    std::array<GLhalf, kVertexCount> inputData;
+    std::array<GLfloat, kVertexCount> expectedData = {
+        {0.f, 1.5f, 2.3f, 3.2f, -1.8f, -2.2f, -3.9f, -4.f, 34.5f, 32.2f, -78.8f, -77.4f, -76.1f}};
+
+    for (size_t i = 0; i < kVertexCount; i++)
+    {
+        inputData[i] = gl::float32ToFloat16(expectedData[i]);
+    }
+
+    // If the extension is enabled run the test on all contexts
+    if (IsGLExtensionEnabled("GL_OES_vertex_half_float"))
+    {
+        TestData bufferData(GL_HALF_FLOAT_OES, GL_FALSE, Source::BUFFER, inputData.data(),
+                            expectedData.data());
+        runTest(bufferData);
+    }
+    // Otherwise run the test only if it is an ES3 context
+    else if (getClientMajorVersion() >= 3)
+    {
+        TestData bufferData(GL_HALF_FLOAT, GL_FALSE, Source::BUFFER, inputData.data(),
+                            expectedData.data());
+        runTest(bufferData);
+    }
+}
+
 // Verify that using the same client memory pointer in different format won't mess up the draw.
 TEST_P(VertexAttributeTest, UsingDifferentFormatAndSameClientMemoryPointer)
 {
@@ -550,6 +714,219 @@
     runTest(normalizedData);
 }
 
+// Verify signed unnormalized INT_10_10_10_2 vertex type
+TEST_P(VertexAttributeTest, SignedPacked1010102ExtensionUnnormalized)
+{
+    std::string extensionList(reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)));
+    ANGLE_SKIP_TEST_IF((extensionList.find("OES_vertex_type_10_10_10_2") == std::string::npos));
+
+    // RGB channels are 10-bits, alpha is 2-bits
+    std::array<std::array<GLshort, 4>, kVertexCount / 4> unpackedInput = {{{0, 1, 2, 0},
+                                                                           {254, 255, 256, 1},
+                                                                           {256, 255, 254, -2},
+                                                                           {511, 510, 509, -1},
+                                                                           {-512, -511, -500, -2},
+                                                                           {-1, -2, -3, 1}}};
+
+    std::array<GLint, kVertexCount> packedInput;
+    std::array<GLfloat, kVertexCount> expectedTypeSize4;
+    std::array<GLfloat, kVertexCount> expectedTypeSize3;
+
+    for (size_t i = 0; i < kVertexCount / 4; i++)
+    {
+        packedInput[i] = Pack1010102<GLint, GLshort>(unpackedInput[i]);
+
+        expectedTypeSize3[i * 3 + 0] = expectedTypeSize4[i * 4 + 0] = unpackedInput[i][0];
+        expectedTypeSize3[i * 3 + 1] = expectedTypeSize4[i * 4 + 1] = unpackedInput[i][1];
+        expectedTypeSize3[i * 3 + 2] = expectedTypeSize4[i * 4 + 2] = unpackedInput[i][2];
+
+        // when the type size is 3, alpha will be 1.0f by GLES driver
+        expectedTypeSize4[i * 4 + 3] = unpackedInput[i][3];
+    }
+
+    TestData data4(GL_INT_10_10_10_2_OES, GL_FALSE, Source::IMMEDIATE, packedInput.data(),
+                   expectedTypeSize4.data());
+    TestData bufferedData4(GL_INT_10_10_10_2_OES, GL_FALSE, Source::BUFFER, packedInput.data(),
+                           expectedTypeSize4.data());
+    TestData data3(GL_INT_10_10_10_2_OES, GL_FALSE, Source::IMMEDIATE, packedInput.data(),
+                   expectedTypeSize3.data());
+    TestData bufferedData3(GL_INT_10_10_10_2_OES, GL_FALSE, Source::BUFFER, packedInput.data(),
+                           expectedTypeSize3.data());
+
+    std::array<std::pair<const TestData &, GLint>, 4> dataSet = {
+        {{data4, 4}, {bufferedData4, 4}, {data3, 3}, {bufferedData3, 3}}};
+
+    for (auto data : dataSet)
+    {
+        setupTest(data.first, data.second);
+        drawQuad(mProgram, "position", 0.5f);
+        glDisableVertexAttribArray(mTestAttrib);
+        glDisableVertexAttribArray(mExpectedAttrib);
+        checkPixels();
+    }
+}
+
+// Verify signed normalized INT_10_10_10_2 vertex type
+TEST_P(VertexAttributeTest, SignedPacked1010102ExtensionNormalized)
+{
+    std::string extensionList(reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)));
+    ANGLE_SKIP_TEST_IF((extensionList.find("OES_vertex_type_10_10_10_2") == std::string::npos));
+
+    // RGB channels are 10-bits, alpha is 2-bits
+    std::array<std::array<GLshort, 4>, kVertexCount / 4> unpackedInput = {{{0, 1, 2, 0},
+                                                                           {254, 255, 256, 1},
+                                                                           {256, 255, 254, -2},
+                                                                           {511, 510, 509, -1},
+                                                                           {-512, -511, -500, -2},
+                                                                           {-1, -2, -3, 1}}};
+    std::array<GLint, kVertexCount> packedInput;
+    std::array<GLfloat, kVertexCount> expectedNormalizedTypeSize4;
+    std::array<GLfloat, kVertexCount> expectedNormalizedTypeSize3;
+
+    for (size_t i = 0; i < kVertexCount / 4; i++)
+    {
+        packedInput[i] = Pack1010102<GLint, GLshort>(unpackedInput[i]);
+
+        expectedNormalizedTypeSize3[i * 3 + 0] = expectedNormalizedTypeSize4[i * 4 + 0] =
+            Normalize10<GLshort>(unpackedInput[i][0]);
+        expectedNormalizedTypeSize3[i * 3 + 1] = expectedNormalizedTypeSize4[i * 4 + 1] =
+            Normalize10<GLshort>(unpackedInput[i][1]);
+        expectedNormalizedTypeSize3[i * 3 + 2] = expectedNormalizedTypeSize4[i * 4 + 2] =
+            Normalize10<GLshort>(unpackedInput[i][2]);
+
+        // when the type size is 3, alpha will be 1.0f by GLES driver
+        expectedNormalizedTypeSize4[i * 4 + 3] = Normalize2<GLshort>(unpackedInput[i][3]);
+    }
+
+    TestData data4(GL_INT_10_10_10_2_OES, GL_TRUE, Source::IMMEDIATE, packedInput.data(),
+                   expectedNormalizedTypeSize4.data());
+    TestData bufferedData4(GL_INT_10_10_10_2_OES, GL_TRUE, Source::BUFFER, packedInput.data(),
+                           expectedNormalizedTypeSize4.data());
+    TestData data3(GL_INT_10_10_10_2_OES, GL_TRUE, Source::IMMEDIATE, packedInput.data(),
+                   expectedNormalizedTypeSize3.data());
+    TestData bufferedData3(GL_INT_10_10_10_2_OES, GL_TRUE, Source::BUFFER, packedInput.data(),
+                           expectedNormalizedTypeSize3.data());
+
+    std::array<std::pair<const TestData &, GLint>, 4> dataSet = {
+        {{data4, 4}, {bufferedData4, 4}, {data3, 3}, {bufferedData3, 3}}};
+
+    for (auto data : dataSet)
+    {
+        setupTest(data.first, data.second);
+        drawQuad(mProgram, "position", 0.5f);
+        glDisableVertexAttribArray(mTestAttrib);
+        glDisableVertexAttribArray(mExpectedAttrib);
+        checkPixels();
+    }
+}
+
+// Verify unsigned unnormalized INT_10_10_10_2 vertex type
+TEST_P(VertexAttributeTest, UnsignedPacked1010102ExtensionUnnormalized)
+{
+    std::string extensionList(reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)));
+    ANGLE_SKIP_TEST_IF((extensionList.find("OES_vertex_type_10_10_10_2") == std::string::npos));
+
+    // RGB channels are 10-bits, alpha is 2-bits
+    std::array<std::array<GLushort, 4>, kVertexCount / 4> unpackedInput = {{{0, 1, 2, 0},
+                                                                            {511, 512, 513, 1},
+                                                                            {1023, 1022, 1021, 3},
+                                                                            {513, 512, 511, 2},
+                                                                            {2, 1, 0, 3},
+                                                                            {1023, 1022, 1022, 0}}};
+
+    std::array<GLuint, kVertexCount> packedInput;
+    std::array<GLfloat, kVertexCount> expectedTypeSize3;
+    std::array<GLfloat, kVertexCount> expectedTypeSize4;
+
+    for (size_t i = 0; i < kVertexCount / 4; i++)
+    {
+        packedInput[i] = Pack1010102<GLuint, GLushort>(unpackedInput[i]);
+
+        expectedTypeSize3[i * 3 + 0] = expectedTypeSize4[i * 4 + 0] = unpackedInput[i][0];
+        expectedTypeSize3[i * 3 + 1] = expectedTypeSize4[i * 4 + 1] = unpackedInput[i][1];
+        expectedTypeSize3[i * 3 + 2] = expectedTypeSize4[i * 4 + 2] = unpackedInput[i][2];
+
+        // when the type size is 3, alpha will be 1.0f by GLES driver
+        expectedTypeSize4[i * 4 + 3] = unpackedInput[i][3];
+    }
+
+    TestData data4(GL_UNSIGNED_INT_10_10_10_2_OES, GL_FALSE, Source::IMMEDIATE, packedInput.data(),
+                   expectedTypeSize4.data());
+    TestData bufferedData4(GL_UNSIGNED_INT_10_10_10_2_OES, GL_FALSE, Source::BUFFER,
+                           packedInput.data(), expectedTypeSize4.data());
+    TestData data3(GL_UNSIGNED_INT_10_10_10_2_OES, GL_FALSE, Source::BUFFER, packedInput.data(),
+                   expectedTypeSize3.data());
+    TestData bufferedData3(GL_UNSIGNED_INT_10_10_10_2_OES, GL_FALSE, Source::BUFFER,
+                           packedInput.data(), expectedTypeSize3.data());
+
+    std::array<std::pair<const TestData &, GLint>, 4> dataSet = {
+        {{data4, 4}, {bufferedData4, 4}, {data3, 3}, {bufferedData3, 3}}};
+
+    for (auto data : dataSet)
+    {
+        setupTest(data.first, data.second);
+        drawQuad(mProgram, "position", 0.5f);
+        glDisableVertexAttribArray(mTestAttrib);
+        glDisableVertexAttribArray(mExpectedAttrib);
+        checkPixels();
+    }
+}
+
+// Verify unsigned normalized INT_10_10_10_2 vertex type
+TEST_P(VertexAttributeTest, UnsignedPacked1010102ExtensionNormalized)
+{
+    std::string extensionList(reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)));
+    ANGLE_SKIP_TEST_IF((extensionList.find("OES_vertex_type_10_10_10_2") == std::string::npos));
+
+    // RGB channels are 10-bits, alpha is 2-bits
+    std::array<std::array<GLushort, 4>, kVertexCount / 4> unpackedInput = {{{0, 1, 2, 0},
+                                                                            {511, 512, 513, 1},
+                                                                            {1023, 1022, 1021, 3},
+                                                                            {513, 512, 511, 2},
+                                                                            {2, 1, 0, 3},
+                                                                            {1023, 1022, 1022, 0}}};
+
+    std::array<GLuint, kVertexCount> packedInput;
+    std::array<GLfloat, kVertexCount> expectedTypeSize4;
+    std::array<GLfloat, kVertexCount> expectedTypeSize3;
+
+    for (size_t i = 0; i < kVertexCount / 4; i++)
+    {
+        packedInput[i] = Pack1010102<GLuint, GLushort>(unpackedInput[i]);
+
+        expectedTypeSize3[i * 3 + 0] = expectedTypeSize4[i * 4 + 0] =
+            Normalize10<GLushort>(unpackedInput[i][0]);
+        expectedTypeSize3[i * 3 + 1] = expectedTypeSize4[i * 4 + 1] =
+            Normalize10<GLushort>(unpackedInput[i][1]);
+        expectedTypeSize3[i * 3 + 2] = expectedTypeSize4[i * 4 + 2] =
+            Normalize10<GLushort>(unpackedInput[i][2]);
+
+        // when the type size is 3, alpha will be 1.0f by GLES driver
+        expectedTypeSize4[i * 4 + 3] = Normalize2<GLushort>(unpackedInput[i][3]);
+    }
+
+    TestData data4(GL_UNSIGNED_INT_10_10_10_2_OES, GL_TRUE, Source::IMMEDIATE, packedInput.data(),
+                   expectedTypeSize4.data());
+    TestData bufferedData4(GL_UNSIGNED_INT_10_10_10_2_OES, GL_TRUE, Source::BUFFER,
+                           packedInput.data(), expectedTypeSize4.data());
+    TestData data3(GL_UNSIGNED_INT_10_10_10_2_OES, GL_TRUE, Source::IMMEDIATE, packedInput.data(),
+                   expectedTypeSize3.data());
+    TestData bufferedData3(GL_UNSIGNED_INT_10_10_10_2_OES, GL_TRUE, Source::BUFFER,
+                           packedInput.data(), expectedTypeSize3.data());
+
+    std::array<std::pair<const TestData &, GLint>, 4> dataSet = {
+        {{data4, 4}, {bufferedData4, 4}, {data3, 3}, {bufferedData3, 3}}};
+
+    for (auto data : dataSet)
+    {
+        setupTest(data.first, data.second);
+        drawQuad(mProgram, "position", 0.5f);
+        glDisableVertexAttribArray(mTestAttrib);
+        glDisableVertexAttribArray(mExpectedAttrib);
+        checkPixels();
+    };
+}
+
 class VertexAttributeTestES3 : public VertexAttributeTest
 {
   protected:
@@ -832,6 +1209,9 @@
     // TODO(geofflang): Figure out why this is broken on AMD OpenGL
     ANGLE_SKIP_TEST_IF(IsAMD() && IsOpenGL());
 
+    // TODO(cnorthrop): Test this again on more recent drivers. http://anglebug.com/3951
+    ANGLE_SKIP_TEST_IF(IsLinux() && IsNVIDIA() && IsVulkan());
+
     initBasicProgram();
     glUseProgram(mProgram);
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp b/Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp
index c196cf2..587b2dd 100644
--- a/Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/gles1_conformance_tests/ConformanceTests.cpp
@@ -103,7 +103,9 @@
 extern long MatrixPaletteExec(void);
 
 // Test driver setup
-extern void ExtTestDriverSetup(void);
+void BufferSetup(void);
+void EpsilonSetup(void);
+void StateSetup(void);
 
 #define CONFORMANCE_TEST_ERROR (-1)
 
@@ -128,7 +130,12 @@
         setConfigStencilBits(8);
     }
 
-    void testSetUp() override { ExtTestDriverSetup(); }
+    void testSetUp() override
+    {
+        BufferSetup();
+        EpsilonSetup();
+        StateSetup();
+    }
 };
 
 TEST_P(GLES1ConformanceTest, AmbLight)
@@ -342,7 +349,7 @@
 TEST_P(GLES1ConformanceTest, Scissor)
 {
     // http://g.co/anglebug/3867
-    ANGLE_SKIP_TEST_IF(IsVulkan());
+    ANGLE_SKIP_TEST_IF(IsVulkan() && IsWindows() && IsIntel());
     ASSERT_NE(CONFORMANCE_TEST_ERROR, ScissorExec());
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTest.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTest.cpp
index 3f9f850..a7e1ce8 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/ANGLEPerfTest.cpp
@@ -11,10 +11,11 @@
 
 #include "ANGLEPerfTestArgs.h"
 #include "common/platform.h"
+#include "common/system_utils.h"
 #include "third_party/perf/perf_test.h"
 #include "third_party/trace_event/trace_event.h"
 #include "util/shader_utils.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 #include <cassert>
 #include <cmath>
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerf.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerf.cpp
index d6abfe2..34503c9 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerf.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/DrawCallPerf.cpp
@@ -12,8 +12,6 @@
 #include "test_utils/draw_call_perf_utils.h"
 #include "util/shader_utils.h"
 
-using namespace angle;
-
 namespace
 {
 enum class StateChange
@@ -328,8 +326,6 @@
 
 TEST_P(DrawCallPerfBenchmark, Run)
 {
-    // TODO(crbug.com/997674) crashes on Win10 FYI x64 Exp Release (Intel HD 630)
-    ANGLE_SKIP_TEST_IF(IsWindows() && IsIntel());
     run();
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/EGLMakeCurrentPerf.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/EGLMakeCurrentPerf.cpp
index 0e434f3..f5115ee 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/EGLMakeCurrentPerf.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/EGLMakeCurrentPerf.cpp
@@ -9,10 +9,10 @@
 
 #include "ANGLEPerfTest.h"
 #include "common/platform.h"
+#include "common/system_utils.h"
 #include "platform/Platform.h"
 #include "test_utils/angle_test_configs.h"
 #include "test_utils/angle_test_instantiate.h"
-#include "util/system_utils.h"
 
 #define ITERATIONS 20
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/LinkProgramPerfTest.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/LinkProgramPerfTest.cpp
index 26dcf06..d7c8057 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/LinkProgramPerfTest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/LinkProgramPerfTest.cpp
@@ -204,8 +204,6 @@
 
 TEST_P(LinkProgramBenchmark, Run)
 {
-    // TODO(crbug.com/997674) crashes on Win10 FYI x64 Exp Release (Intel HD 630)
-    ANGLE_SKIP_TEST_IF(IsWindows() && IsIntel());
     run();
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/MultiviewPerf.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/MultiviewPerf.cpp
index f7bb9ad..e3f15e7 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/MultiviewPerf.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/MultiviewPerf.cpp
@@ -567,8 +567,6 @@
 
 TEST_P(MultiviewCPUBoundBenchmark, Run)
 {
-    // TODO(crbug.com/997674) crashes on Win10 FYI x64 Exp Release (Intel HD 630)
-    ANGLE_SKIP_TEST_IF(IsWindows() && IsIntel());
     run();
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/UniformsPerf.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/UniformsPerf.cpp
index 02ede8a..36e80e3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/UniformsPerf.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/UniformsPerf.cpp
@@ -500,8 +500,6 @@
 
 TEST_P(UniformsBenchmark, Run)
 {
-    // TODO(crbug.com/997674) crashes on Win10 FYI x64 Exp Release (Intel HD 630)
-    ANGLE_SKIP_TEST_IF(IsWindows() && IsIntel());
     run();
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/VulkanPipelineCachePerf.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/VulkanPipelineCachePerf.cpp
index 1370c44..0b238df 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/VulkanPipelineCachePerf.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/VulkanPipelineCachePerf.cpp
@@ -92,8 +92,8 @@
     {
         for (const auto &hit : mCacheHits)
         {
-            (void)mCache.getPipeline(VK_NULL_HANDLE, pc, rp, pl, am, ctm, &sm, &sm, hit, &desc,
-                                     &result);
+            (void)mCache.getPipeline(VK_NULL_HANDLE, pc, rp, pl, am, ctm, &sm, &sm, nullptr, hit,
+                                     &desc, &result);
         }
     }
 
@@ -101,8 +101,8 @@
          ++missCount, ++mMissIndex)
     {
         const auto &miss = mCacheMisses[mMissIndex];
-        (void)mCache.getPipeline(VK_NULL_HANDLE, pc, rp, pl, am, ctm, &sm, &sm, miss, &desc,
-                                 &result);
+        (void)mCache.getPipeline(VK_NULL_HANDLE, pc, rp, pl, am, ctm, &sm, &sm, nullptr, miss,
+                                 &desc, &result);
     }
 }
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp b/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp
index 0aa8e10..2d5e463 100644
--- a/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/perf_tests/glmark2Benchmark.cpp
@@ -18,6 +18,7 @@
 #include "common/system_utils.h"
 #include "test_utils/angle_test_configs.h"
 #include "test_utils/angle_test_instantiate.h"
+#include "util/test_utils.h"
 
 using namespace angle;
 
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.cpp b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.cpp
index f9cbda4..a762e18 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.cpp
@@ -323,6 +323,15 @@
         }
         else
         {
+            // On dual-GPU Macs we want the active GPU to always appear to be the
+            // high-performance GPU for tests.
+            // We can call the generic GPU info collector which selects the
+            // non-Intel GPU as the active one on dual-GPU machines.
+            // See https://anglebug.com/3701.
+            if (IsMac())
+            {
+                GetDualGPUInfo(sSystemInfo);
+            }
             sPopulated = true;
         }
     }
@@ -500,7 +509,12 @@
 // Check whether the backend API has been set to Vulkan in the constructor
 inline bool IsVulkan(const GPUTestConfig::API &api)
 {
-    return (api == GPUTestConfig::kAPIVulkan);
+    return (api == GPUTestConfig::kAPIVulkan) || (api == GPUTestConfig::kAPISwiftShader);
+}
+
+inline bool IsSwiftShader(const GPUTestConfig::API &api)
+{
+    return (api == GPUTestConfig::kAPISwiftShader);
 }
 
 }  // anonymous namespace
@@ -540,6 +554,7 @@
     mConditions[kConditionGLDesktop] = true;
     mConditions[kConditionGLES]      = true;
     mConditions[kConditionVulkan]    = true;
+    mConditions[kConditionSwiftShader] = true;
 
     mConditions[kConditionNexus5X]          = IsNexus5X();
     mConditions[kConditionPixel2]           = IsPixel2();
@@ -554,6 +569,7 @@
     mConditions[kConditionGLDesktop] = IsGLDesktop(api);
     mConditions[kConditionGLES]      = IsGLES(api);
     mConditions[kConditionVulkan]    = IsVulkan(api);
+    mConditions[kConditionSwiftShader] = IsSwiftShader(api);
 }
 
 // Return a const reference to the list of all pre-calculated conditions.
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.h b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.h
index 5027a93..d987ddf 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestConfig.h
@@ -23,6 +23,7 @@
         kAPIGLDesktop,
         kAPIGLES,
         kAPIVulkan,
+        kAPISwiftShader,
     };
 
     enum Condition
@@ -61,6 +62,7 @@
         kConditionNexus5X,
         kConditionPixel2,
         kConditionNVIDIAQuadroP400,
+        kConditionSwiftShader,
 
         kNumberOfConditions,
     };
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.cpp b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.cpp
index 0c94638..e68c74e 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_expectations/GPUTestExpectationsParser.cpp
@@ -70,6 +70,7 @@
     kConfigGLDesktop,
     kConfigGLES,
     kConfigVulkan,
+    kConfigSwiftShader,
     // Android devices
     kConfigNexus5X,
     kConfigPixel2,
@@ -144,6 +145,7 @@
     {"opengl", GPUTestConfig::kConditionGLDesktop},
     {"gles", GPUTestConfig::kConditionGLES},
     {"vulkan", GPUTestConfig::kConditionVulkan},
+    {"swiftshader", GPUTestConfig::kConditionSwiftShader},
     {"nexus5x", GPUTestConfig::kConditionNexus5X},
     {"pixel2", GPUTestConfig::kConditionPixel2},
     {"quadrop400", GPUTestConfig::kConditionNVIDIAQuadroP400},
@@ -392,6 +394,7 @@
             case kConfigGLDesktop:
             case kConfigGLES:
             case kConfigVulkan:
+            case kConfigSwiftShader:
             case kConfigNexus5X:
             case kConfigPixel2:
             case kConfigNVIDIAQuadroP400:
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp b/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp
index eb0f9f1..993185b0 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.cpp
@@ -13,6 +13,7 @@
 #include "gpu_info_util/SystemInfo.h"
 #include "util/EGLWindow.h"
 #include "util/OSWindow.h"
+#include "util/test_utils.h"
 
 #if defined(ANGLE_PLATFORM_WINDOWS)
 #    include <VersionHelpers.h>
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h b/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h
index ab87fb1..6494bfe 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/ANGLETest.h
@@ -16,11 +16,11 @@
 
 #include "angle_test_configs.h"
 #include "common/angleutils.h"
+#include "common/system_utils.h"
 #include "common/vector_utils.h"
 #include "platform/Platform.h"
 #include "util/EGLWindow.h"
 #include "util/shader_utils.h"
-#include "util/system_utils.h"
 #include "util/util_gl.h"
 
 namespace angle
@@ -223,6 +223,17 @@
         EXPECT_EQ((a), pixel[3]);                                     \
     } while (0)
 
+#define EXPECT_PIXEL_RGB_EQ_HELPER(x, y, r, g, b, ctype, format, type) \
+    do                                                                 \
+    {                                                                  \
+        ctype pixel[4];                                                \
+        glReadPixels((x), (y), 1, 1, format, type, pixel);             \
+        EXPECT_GL_NO_ERROR();                                          \
+        EXPECT_EQ((r), pixel[0]);                                      \
+        EXPECT_EQ((g), pixel[1]);                                      \
+        EXPECT_EQ((b), pixel[2]);                                      \
+    } while (0)
+
 #define EXPECT_PIXEL_NEAR(x, y, r, g, b, a, abs_error) \
     EXPECT_PIXEL_NEAR_HELPER(x, y, r, g, b, a, abs_error, GLubyte, GL_RGBA, GL_UNSIGNED_BYTE)
 
@@ -235,6 +246,9 @@
 #define EXPECT_PIXEL_8UI(x, y, r, g, b, a) \
     EXPECT_PIXEL_EQ_HELPER(x, y, r, g, b, a, GLubyte, GL_RGBA_INTEGER, GL_UNSIGNED_BYTE)
 
+#define EXPECT_PIXEL_RGB_EQUAL(x, y, r, g, b) \
+    EXPECT_PIXEL_RGB_EQ_HELPER(x, y, r, g, b, GLubyte, GL_RGBA, GL_UNSIGNED_BYTE)
+
 // TODO(jmadill): Figure out how we can use GLColor's nice printing with EXPECT_NEAR.
 #define EXPECT_PIXEL_COLOR_NEAR(x, y, angleColor, abs_error) \
     EXPECT_PIXEL_NEAR(x, y, angleColor.R, angleColor.G, angleColor.B, angleColor.A, abs_error)
@@ -576,4 +590,14 @@
 
 extern angle::PlatformMethods gDefaultPlatformMethods;
 
+#define ANGLE_SKIP_TEST_IF(COND)                                  \
+    do                                                            \
+    {                                                             \
+        if (COND)                                                 \
+        {                                                         \
+            std::cout << "Test skipped: " #COND "." << std::endl; \
+            return;                                               \
+        }                                                         \
+    } while (0)
+
 #endif  // ANGLE_TESTS_ANGLE_TEST_H_
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp
index 4d1192d..ccd67b8 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.cpp
@@ -41,8 +41,12 @@
 
 void PlatformParameters::initDefaultParameters()
 {
+#if defined(ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT)
     // Default debug layers to enabled in tests.
     eglParameters.debugLayersEnabled = EGL_TRUE;
+#else
+    eglParameters.debugLayersEnabled = EGL_FALSE;
+#endif  // defined(ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT)
 }
 
 bool operator<(const PlatformParameters &a, const PlatformParameters &b)
@@ -141,6 +145,10 @@
             stream << "_Warp";
             break;
 
+        case EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE:
+            stream << "_SwiftShader";
+            break;
+
         default:
             stream << "_Error";
             break;
@@ -394,6 +402,11 @@
                                  EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE);
 }
 
+EGLPlatformParameters VULKAN_SWIFTSHADER()
+{
+    return EGLPlatformParameters(EGL_PLATFORM_ANGLE_TYPE_VULKAN_ANGLE, EGL_DONT_CARE, EGL_DONT_CARE,
+                                 EGL_PLATFORM_ANGLE_DEVICE_TYPE_SWIFTSHADER_ANGLE);
+}
 }  // namespace egl_platform
 
 // ANGLE tests platforms
@@ -657,6 +670,11 @@
     return PlatformParameters(2, 0, egl_platform::VULKAN_NULL());
 }
 
+PlatformParameters ES2_VULKAN_SWIFTSHADER()
+{
+    return PlatformParameters(2, 0, egl_platform::VULKAN_SWIFTSHADER());
+}
+
 PlatformParameters ES3_VULKAN()
 {
     return PlatformParameters(3, 0, egl_platform::VULKAN());
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h
index a7e1edb..ca4d450 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_configs.h
@@ -17,7 +17,6 @@
 #include <EGL/egl.h>
 #include <EGL/eglext.h>
 
-#include "GLSLANG/ShaderLang.h"
 #include "angle_test_instantiate.h"
 #include "util/EGLPlatformParameters.h"
 
@@ -111,6 +110,7 @@
 
 EGLPlatformParameters VULKAN();
 EGLPlatformParameters VULKAN_NULL();
+EGLPlatformParameters VULKAN_SWIFTSHADER();
 
 }  // namespace egl_platform
 
@@ -176,6 +176,7 @@
 PlatformParameters ES1_VULKAN_NULL();
 PlatformParameters ES2_VULKAN();
 PlatformParameters ES2_VULKAN_NULL();
+PlatformParameters ES2_VULKAN_SWIFTSHADER();
 PlatformParameters ES3_VULKAN();
 PlatformParameters ES3_VULKAN_NULL();
 PlatformParameters ES31_VULKAN();
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
index d087b36..8a1d690 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.cpp
@@ -14,13 +14,15 @@
 
 #include "angle_gl.h"
 #include "common/platform.h"
+#include "common/system_utils.h"
 #include "gpu_info_util/SystemInfo.h"
 #include "test_utils/angle_test_configs.h"
 #include "util/EGLWindow.h"
 #include "util/OSWindow.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 #if defined(ANGLE_PLATFORM_WINDOWS)
+#    include <VersionHelpers.h>
 #    include "util/windows/WGLWindow.h"
 #endif  // defined(ANGLE_PLATFORM_WINDOWS)
 
@@ -177,6 +179,15 @@
 #endif
 }
 
+bool IsWindows7()
+{
+#if defined(ANGLE_PLATFORM_WINDOWS)
+    return ::IsWindows7OrGreater() && !::IsWindows8OrGreater();
+#else
+    return false;
+#endif
+}
+
 bool IsFuchsia()
 {
 #if defined(ANGLE_PLATFORM_FUCHSIA)
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
index 7566896..910e7d3 100644
--- a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
@@ -23,6 +23,7 @@
 bool IsOSX();
 bool IsOzone();
 bool IsWindows();
+bool IsWindows7();
 bool IsFuchsia();
 
 // Android devices
@@ -139,14 +140,4 @@
 extern bool gSeparateProcessPerConfig;
 }  // namespace angle
 
-#define ANGLE_SKIP_TEST_IF(COND)                                  \
-    do                                                            \
-    {                                                             \
-        if (COND)                                                 \
-        {                                                         \
-            std::cout << "Test skipped: " #COND "." << std::endl; \
-            return;                                               \
-        }                                                         \
-    } while (0)
-
 #endif  // ANGLE_TEST_INSTANTIATE_H_
diff --git a/Source/ThirdParty/ANGLE/third_party/vulkan-headers/BUILD.gn b/Source/ThirdParty/ANGLE/third_party/vulkan-headers/BUILD.gn
deleted file mode 100644
index e61be56..0000000
--- a/Source/ThirdParty/ANGLE/third_party/vulkan-headers/BUILD.gn
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2018 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.
-
-# BUILD settings for Vulkan Headers
-# Headers repo is at
-# https://github.com/KhronosGroup/Vulkan-Headers
-
-import("../../gni/angle.gni")
-
-config("vulkan_headers_config") {
-  include_dirs = [ "src/include" ]
-
-  if (is_win) {
-    defines = [ "VK_USE_PLATFORM_WIN32_KHR" ]
-  }
-  if (is_linux) {
-    defines = [ "VK_USE_PLATFORM_XCB_KHR" ]
-  }
-  if (is_android) {
-    defines = [ "VK_USE_PLATFORM_ANDROID_KHR" ]
-  }
-  if (is_fuchsia) {
-    defines = [ "VK_USE_PLATFORM_FUCHSIA" ]
-  }
-}
-
-# Vulkan headers only, no compiled sources.
-source_set("vulkan_headers") {
-  sources = [
-    "src/include/vulkan/vk_icd.h",
-    "src/include/vulkan/vk_layer.h",
-    "src/include/vulkan/vk_platform.h",
-    "src/include/vulkan/vk_sdk_platform.h",
-    "src/include/vulkan/vulkan.h",
-    "src/include/vulkan/vulkan.hpp",
-    "src/include/vulkan/vulkan_core.h",
-  ]
-  public_configs = [ ":vulkan_headers_config" ]
-}
diff --git a/Source/ThirdParty/ANGLE/third_party/vulkan-headers/vulkan_headers_script_deps.gni b/Source/ThirdParty/ANGLE/third_party/vulkan-headers/vulkan_headers_script_deps.gni
deleted file mode 100644
index 552bf6e..0000000
--- a/Source/ThirdParty/ANGLE/third_party/vulkan-headers/vulkan_headers_script_deps.gni
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2018 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.
-
-raw_vulkan_headers_registry_dir = rebase_path("src/registry")
-
-# Common scripts & input used by multiple other repos
-vulkan_registry_script_files = [
-  "$raw_vulkan_headers_registry_dir/cgenerator.py",
-  "$raw_vulkan_headers_registry_dir/generator.py",
-  "$raw_vulkan_headers_registry_dir/reg.py",
-  "$raw_vulkan_headers_registry_dir/vk.xml",
-]
diff --git a/Source/ThirdParty/ANGLE/third_party/vulkan-loader/BUILD.gn b/Source/ThirdParty/ANGLE/third_party/vulkan-loader/BUILD.gn
index 76ef3f2..be99e6c 100644
--- a/Source/ThirdParty/ANGLE/third_party/vulkan-loader/BUILD.gn
+++ b/Source/ThirdParty/ANGLE/third_party/vulkan-loader/BUILD.gn
@@ -238,7 +238,7 @@
     configs += [ "//build/config/compiler:no_chromium_code" ]
     configs += [ ":vulkan_internal_config" ]
     public_configs = [
-      "$angle_root:vulkan_config",
+      "$angle_root/src/libANGLE/renderer/vulkan:vulkan_config",
       ":vulkan_loader_config",
     ]
     configs -= vulkan_undefine_configs
diff --git a/Source/ThirdParty/ANGLE/third_party/vulkan-tools/BUILD.gn b/Source/ThirdParty/ANGLE/third_party/vulkan-tools/BUILD.gn
deleted file mode 100644
index 0fe1abd..0000000
--- a/Source/ThirdParty/ANGLE/third_party/vulkan-tools/BUILD.gn
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright 2018 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.
-
-# BUILD settings for Vulkan Tools where Mock ICD is located
-# Tools repo is at
-# https://github.com/KhronosGroup/Vulkan-Tools
-
-import("../../gni/angle.gni")
-
-import("$angle_root/third_party/vulkan-headers/vulkan_headers_script_deps.gni")
-
-# Vulkan-tools isn't ported to Fuchsia yet.
-# TODO(spang): Port mock ICD to Fuchsia.
-assert(!is_fuchsia)
-
-vulkan_undefine_configs = []
-if (is_win) {
-  vulkan_undefine_configs += [
-    "//build/config/win:nominmax",
-    "//build/config/win:unicode",
-  ]
-}
-
-raw_vulkan_icd_dir = rebase_path("src", root_build_dir)
-raw_vulkan_headers_dir =
-    rebase_path("$angle_root/third_party/vulkan-headers/src", root_build_dir)
-
-vulkan_gen_dir = "$target_gen_dir/angle/vulkan"
-raw_vulkan_gen_dir = rebase_path(vulkan_gen_dir, root_build_dir)
-
-# Vulkan helper scripts
-# ---------------------
-
-helper_script_and_deps = [
-  [
-    "vulkan_gen_typemap_helper",
-    "vk_typemap_helper.h",
-    "vulkan_tools_helper_file_generator.py",
-  ],
-  [
-    "vulkan_mock_icd_cpp",
-    "mock_icd.cpp",
-    "mock_icd_generator.py",
-  ],
-  [
-    "vulkan_mock_icd_h",
-    "mock_icd.h",
-    "mock_icd_generator.py",
-  ],
-]
-
-# Python scripts needed for codegen, copy them to a temp dir
-# so that all dependencies are together
-copy("python_gen_deps") {
-  sources = vulkan_registry_script_files + [
-              "src/scripts/common_codegen.py",
-              "src/scripts/kvt_genvk.py",
-              "src/scripts/mock_icd_generator.py",
-              "src/scripts/vulkan_tools_helper_file_generator.py",
-            ]
-  outputs = [
-    "$vulkan_gen_dir/{{source_file_part}}",
-  ]
-}
-
-foreach(script_and_dep, helper_script_and_deps) {
-  target_name = script_and_dep[0]
-  file = script_and_dep[1]
-  dep = script_and_dep[2]
-  target("action", target_name) {
-    public_deps = [
-      ":python_gen_deps",
-    ]
-    script = "$vulkan_gen_dir/kvt_genvk.py"
-    inputs = [
-      "$vulkan_gen_dir/$dep",
-      "$vulkan_gen_dir/common_codegen.py",
-    ]
-    outputs = [
-      "$vulkan_gen_dir/$file",
-    ]
-    args = [
-      "-o",
-      raw_vulkan_gen_dir,
-      "-registry",
-      "$raw_vulkan_headers_dir/registry/vk.xml",
-      "-scripts",
-      "$raw_vulkan_headers_dir/registry",
-      "$file",
-      "-quiet",
-    ]
-  }
-}
-
-config("vulkan_generated_files_config") {
-  include_dirs = [ vulkan_gen_dir ]
-}
-
-group("vulkan_generate_helper_files") {
-  public_deps = [
-    "$angle_root/third_party/vulkan-headers:vulkan_headers",
-  ]
-  public_configs = [ ":vulkan_generated_files_config" ]
-  foreach(script_and_dep, helper_script_and_deps) {
-    target_name = script_and_dep[0]
-    public_deps += [ ":$target_name" ]
-  }
-}
-
-config("vulkan_internal_config") {
-  defines = [ "VULKAN_NON_CMAKE_BUILD" ]
-  if (is_clang || !is_win) {
-    cflags = [ "-Wno-unused-function" ]
-  }
-  if (is_linux) {
-    defines += [
-      "SYSCONFDIR=\"/etc\"",
-      "FALLBACK_CONFIG_DIRS=\"/etc/xdg\"",
-      "FALLBACK_DATA_DIRS=\"/usr/local/share:/usr/share\"",
-    ]
-  }
-}
-
-# Copy icd header to gen dir
-copy("icd_header_dep") {
-  sources = [
-    "$angle_root/third_party/vulkan-headers/src/include/vulkan/vk_icd.h",
-  ]
-  outputs = [
-    "$vulkan_gen_dir/vk_icd.h",
-  ]
-}
-
-if (!is_android) {
-  # Vulkan Mock ICD
-  # ---------------
-  group("vulkan_generate_mock_icd_files") {
-    public_deps = [
-      ":icd_header_dep",
-      ":vulkan_generate_helper_files",
-      ":vulkan_mock_icd_cpp",
-      ":vulkan_mock_icd_h",
-    ]
-  }
-
-  mock_icd_sources = [
-    "$vulkan_gen_dir/mock_icd.cpp",
-    "$vulkan_gen_dir/mock_icd.h",
-  ]
-
-  shared_library("VkICD_mock_icd") {
-    configs -= vulkan_undefine_configs
-    public_configs = [ "$angle_root:vulkan_config" ]
-    deps = [
-      ":vulkan_generate_mock_icd_files",
-    ]
-    data_deps = [
-      ":vulkan_gen_icd_json_file",
-    ]
-    sources = mock_icd_sources
-    if (is_win) {
-      sources += [ "src/icd/VkICD_mock_icd.def" ]
-    }
-    configs -= [ "//build/config/compiler:chromium_code" ]
-    configs += [ "//build/config/compiler:no_chromium_code" ]
-  }
-
-  action("vulkan_gen_icd_json_file") {
-    script = "$angle_root/scripts/generate_vulkan_layers_json.py"
-    sources = [
-      "../vulkan-headers/src/include/vulkan/vulkan_core.h",
-    ]
-    args = [ "--icd" ]
-    if (is_win) {
-      sources += [ "src/icd/windows/VkICD_mock_icd.json" ]
-      args += [ "$raw_vulkan_icd_dir/icd/windows" ]
-    }
-    if (is_linux) {
-      sources += [ "src/icd/linux/VkICD_mock_icd.json" ]
-      args += [ "$raw_vulkan_icd_dir/icd/linux" ]
-    }
-
-    # The layer JSON files are part of the necessary data deps.
-    outputs = [
-      "$root_out_dir/$angle_data_dir/VkICD_mock_icd.json",
-    ]
-    data = outputs
-    args += [ rebase_path("$root_out_dir/$angle_data_dir", root_build_dir) ] +
-            rebase_path(sources, root_build_dir)
-  }
-}
diff --git a/Source/ThirdParty/ANGLE/third_party/vulkan-validation-layers/BUILD.gn b/Source/ThirdParty/ANGLE/third_party/vulkan-validation-layers/BUILD.gn
deleted file mode 100644
index 36e0800..0000000
--- a/Source/ThirdParty/ANGLE/third_party/vulkan-validation-layers/BUILD.gn
+++ /dev/null
@@ -1,521 +0,0 @@
-# Copyright 2018 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.
-
-# BUILD settings for Vulkan Validation Layers
-# Validation repo is at
-# https://github.com/KhronosGroup/Vulkan-ValidationLayers
-
-import("../../gni/angle.gni")
-
-# Fuchsia has non-upstream changes to the vulkan layers, so we don't want
-# to build it from upstream sources.
-assert(!is_fuchsia)
-
-import("$angle_root/third_party/vulkan-headers/vulkan_headers_script_deps.gni")
-
-vulkan_undefine_configs = []
-if (is_win) {
-  vulkan_undefine_configs += [
-    "//build/config/win:nominmax",
-    "//build/config/win:unicode",
-  ]
-}
-
-raw_root_out_dir = rebase_path(root_out_dir, root_build_dir)
-raw_data_dir = rebase_path("$root_out_dir/$angle_data_dir", root_build_dir)
-
-raw_vulkan_headers_dir =
-    rebase_path("$angle_root/third_party/vulkan-headers/src", root_build_dir)
-
-vulkan_gen_dir = "$target_gen_dir/angle/vulkan"
-raw_vulkan_gen_dir = rebase_path(vulkan_gen_dir, root_build_dir)
-
-# Vulkan helper scripts
-# ---------------------
-
-helper_script_and_deps = [
-  [
-    "vulkan_gen_dispatch_table_helper_h",
-    "vk_dispatch_table_helper.h",
-    "dispatch_table_helper_generator.py",
-  ],
-  [
-    "vulkan_gen_enum_string_helper",
-    "vk_enum_string_helper.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_extension_helper",
-    "vk_extension_helper.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_dispatch_table_h",
-    "vk_layer_dispatch_table.h",
-    "layer_dispatch_table_generator.py",
-  ],
-  [
-    "vulkan_gen_object_types_h",
-    "vk_object_types.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_safe_struct_cpp",
-    "vk_safe_struct.cpp",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_safe_struct_h",
-    "vk_safe_struct.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_thread_safety_h",
-    "thread_safety.h",
-    "thread_safety_generator.py",
-  ],
-  [
-    "vulkan_gen_thread_safety_cpp",
-    "thread_safety.cpp",
-    "thread_safety_generator.py",
-  ],
-  [
-    "vulkan_gen_typemap_helper",
-    "vk_typemap_helper.h",
-    "helper_file_generator.py",
-  ],
-  [
-    "vulkan_gen_object_tracker_h",
-    "object_tracker.h",
-    "object_tracker_generator.py",
-  ],
-  [
-    "vulkan_gen_object_tracker_cpp",
-    "object_tracker.cpp",
-    "object_tracker_generator.py",
-  ],
-  [
-    "vulkan_gen_parameter_validation_cpp",
-    "parameter_validation.cpp",
-    "parameter_validation_generator.py",
-  ],
-  [
-    "vulkan_gen_parameter_validation_h",
-    "parameter_validation.h",
-    "parameter_validation_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_chassis_h",
-    "chassis.h",
-    "layer_chassis_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_chassis_cpp",
-    "chassis.cpp",
-    "layer_chassis_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_chassis_dispatch_h",
-    "layer_chassis_dispatch.h",
-    "layer_chassis_dispatch_generator.py",
-  ],
-  [
-    "vulkan_gen_layer_chassis_dispatch_cpp",
-    "layer_chassis_dispatch.cpp",
-    "layer_chassis_dispatch_generator.py",
-  ],
-]
-
-# Python scripts needed for codegen, copy them to a temp dir
-# so that all dependencies are together
-copy("python_gen_deps") {
-  sources = vulkan_registry_script_files + [
-              "src/scripts/common_codegen.py",
-              "src/scripts/dispatch_table_helper_generator.py",
-              "src/scripts/helper_file_generator.py",
-              "src/scripts/layer_dispatch_table_generator.py",
-              "src/scripts/lvl_genvk.py",
-              "src/scripts/object_tracker_generator.py",
-              "src/scripts/parameter_validation_generator.py",
-              "src/scripts/thread_safety_generator.py",
-              "src/scripts/layer_chassis_generator.py",
-              "src/scripts/layer_chassis_dispatch_generator.py",
-            ]
-  outputs = [
-    "$vulkan_gen_dir/{{source_file_part}}",
-  ]
-}
-
-# This special action is needed to remove previously-generated header files.
-# Otherwise the cpp files can pick up the old header files and cause build
-# failures.
-action("vulkan_clean_gen_headers") {
-  script = "$angle_root/scripts/remove_files.py"
-  deps = [
-    ":python_gen_deps",
-  ]
-  outputs = [
-    "$vulkan_gen_dir/vk_validation_error_messages_h_is_removed",
-  ]
-  args = [
-    "$raw_vulkan_gen_dir/vk_validation_error_messages_h_is_removed",
-    "$raw_vulkan_gen_dir/vk_validation_error_messages.h",
-  ]
-}
-
-# This special action is needed to remove old VVL objects that are now renamed.
-action("vulkan_clean_old_validation_layer_objects") {
-  script = "$angle_root/scripts/remove_files.py"
-
-  # inputs is a (random) new file since the vvl roll, used to ensure the cleanup is done only once
-  inputs = [
-    "src/layers/gpu_validation.cpp",
-  ]
-  outputs = [
-    "$vulkan_gen_dir/old_vvl_files_are_removed",
-  ]
-  args = [
-    "$raw_vulkan_gen_dir/old_vvl_files_are_removed",
-    "$raw_root_out_dir/libVkLayer*",
-    "$raw_root_out_dir/VkLayer*",
-    "$raw_data_dir/VkLayer*.json",
-  ]
-}
-
-foreach(script_and_dep, helper_script_and_deps) {
-  target_name = script_and_dep[0]
-  file = script_and_dep[1]
-  dep = script_and_dep[2]
-  target("action", target_name) {
-    public_deps = [
-      ":python_gen_deps",
-      ":vulkan_clean_gen_headers",
-      ":vulkan_clean_old_validation_layer_objects",
-    ]
-    script = "$vulkan_gen_dir/lvl_genvk.py"
-    inputs = [
-      "$vulkan_gen_dir/$dep",
-      "$vulkan_gen_dir/common_codegen.py",
-      "src/layers/vk_validation_error_messages.h",
-    ]
-    outputs = [
-      "$vulkan_gen_dir/$file",
-    ]
-    args = [
-      "-o",
-      raw_vulkan_gen_dir,
-      "-registry",
-      "$raw_vulkan_headers_dir/registry/vk.xml",
-      "-scripts",
-      "$raw_vulkan_headers_dir/registry",
-      "$file",
-      "-quiet",
-    ]
-  }
-}
-
-raw_spirv_tools_dir = rebase_path("${angle_spirv_tools_dir}", root_build_dir)
-
-spirv_git_is_present = exec_script("$angle_root/src/commit_id.py",
-                                   [
-                                     "check",
-                                     raw_spirv_tools_dir,
-                                   ],
-                                   "value")
-
-spirv_use_commit_id = spirv_git_is_present == 1
-
-if (spirv_use_commit_id) {
-  # This could be generalized to a foreach if other revisions are added.
-  action("spirv_tools_external_revision_generate") {
-    script = "src/scripts/external_revision_generator.py"
-    inputs = [
-      "//DEPS",
-    ]
-    outputs = [
-      "$vulkan_gen_dir/spirv_tools_commit_id.h",
-    ]
-    args = [
-      "--git_dir",
-      "$raw_spirv_tools_dir",
-      "-s",
-      "SPIRV_TOOLS_COMMIT_ID",
-      "-o",
-      "$raw_vulkan_gen_dir/spirv_tools_commit_id.h",
-    ]
-  }
-} else {
-  copy("spirv_tools_external_revision_generate") {
-    sources = [
-      "dummy_spirv_tools_commit_id.h",
-    ]
-    outputs = [
-      "$vulkan_gen_dir/spirv_tools_commit_id.h",
-    ]
-  }
-}
-
-config("vulkan_generated_files_config") {
-  include_dirs = [ vulkan_gen_dir ]
-}
-
-group("vulkan_generate_helper_files") {
-  public_deps = [
-    ":spirv_tools_external_revision_generate",
-    "$angle_root/third_party/vulkan-headers:vulkan_headers",
-  ]
-  public_configs = [ ":vulkan_generated_files_config" ]
-  foreach(script_and_dep, helper_script_and_deps) {
-    target_name = script_and_dep[0]
-    public_deps += [ ":$target_name" ]
-  }
-}
-
-config("vulkan_internal_config") {
-  defines = [
-    "VULKAN_NON_CMAKE_BUILD",
-    "API_NAME=\"Vulkan\"",
-  ]
-  if (is_clang || !is_win) {
-    cflags = [ "-Wno-unused-function" ]
-  }
-  if (is_linux) {
-    defines += [
-      "SYSCONFDIR=\"/etc\"",
-      "FALLBACK_CONFIG_DIRS=\"/etc/xdg\"",
-      "FALLBACK_DATA_DIRS=\"/usr/local/share:/usr/share\"",
-    ]
-  }
-}
-
-# The validation layers
-# ---------------------
-
-config("vulkan_layer_config") {
-  include_dirs = [ "src/layers" ]
-}
-
-core_validation_sources = [
-  # This file is manually included in the layer
-  # "$vulkan_gen_dir/vk_safe_struct.cpp",
-  "$vulkan_gen_dir/vk_safe_struct.h",
-  "src/layers/buffer_validation.cpp",
-  "src/layers/buffer_validation.h",
-  "src/layers/core_validation.cpp",
-  "src/layers/core_validation.h",
-  "src/layers/convert_to_renderpass2.cpp",
-  "src/layers/descriptor_sets.cpp",
-  "src/layers/descriptor_sets.h",
-  "src/layers/gpu_validation.cpp",
-  "src/layers/gpu_validation.h",
-  "src/layers/shader_validation.cpp",
-  "src/layers/shader_validation.h",
-  "src/layers/xxhash.c",
-  "src/layers/xxhash.h",
-]
-
-object_lifetimes_sources = [
-  "$vulkan_gen_dir/object_tracker.cpp",
-  "$vulkan_gen_dir/object_tracker.h",
-  "src/layers/object_tracker_utils.cpp",
-]
-
-stateless_validation_sources = [
-  "$vulkan_gen_dir/parameter_validation.cpp",
-  "$vulkan_gen_dir/parameter_validation.h",
-  "src/layers/parameter_validation_utils.cpp",
-]
-
-thread_safety_sources = [
-  "$vulkan_gen_dir/thread_safety.cpp",
-  "$vulkan_gen_dir/thread_safety.h",
-]
-
-unique_objects_sources = []
-
-chassis_sources = [
-  "$vulkan_gen_dir/chassis.cpp",
-  "$vulkan_gen_dir/chassis.h",
-  "$vulkan_gen_dir/layer_chassis_dispatch.cpp",
-  "$vulkan_gen_dir/layer_chassis_dispatch.h",
-]
-
-core_validation_deps = [ ":vulkan_core_validation_glslang" ]
-
-object_lifetimes_deps = [
-  ":vulkan_gen_object_tracker_cpp",
-  ":vulkan_gen_object_tracker_h",
-]
-
-stateless_validation_deps = [ ":vulkan_gen_stateless_validation" ]
-
-thread_safety_deps = [
-  ":vulkan_gen_thread_safety_cpp",
-  ":vulkan_gen_thread_safety_h",
-]
-
-unique_objects_deps = []
-
-chassis_deps = [
-  ":vulkan_gen_layer_chassis_cpp",
-  ":vulkan_gen_layer_chassis_h",
-  ":vulkan_gen_layer_chassis_dispatch_cpp",
-  ":vulkan_gen_layer_chassis_dispatch_h",
-]
-
-layers = [
-  [
-    "core_validation",
-    core_validation_sources + chassis_sources,
-    core_validation_deps + chassis_deps,
-    [ "BUILD_CORE_VALIDATION" ],
-  ],
-  [
-    "object_lifetimes",
-    object_lifetimes_sources + chassis_sources,
-    object_lifetimes_deps + chassis_deps,
-    [ "BUILD_OBJECT_TRACKER" ],
-  ],
-  [
-    "stateless_validation",
-    stateless_validation_sources + chassis_sources,
-    stateless_validation_deps + chassis_deps,
-    [ "BUILD_PARAMETER_VALIDATION" ],
-  ],
-  [
-    "thread_safety",
-    thread_safety_sources + chassis_sources,
-    thread_safety_deps + chassis_deps,
-    [ "BUILD_THREAD_SAFETY" ],
-  ],
-  [
-    "unique_objects",
-    unique_objects_sources + chassis_sources,
-    unique_objects_deps + chassis_deps,
-    [ "LAYER_CHASSIS_CAN_WRAP_HANDLES" ],
-  ],
-]
-
-if (!is_android) {
-  raw_vulkan_layers_dir = rebase_path("src", root_build_dir)
-
-  action("vulkan_gen_json_files") {
-    script = "$angle_root/scripts/generate_vulkan_layers_json.py"
-    public_deps = [
-      ":vulkan_clean_old_validation_layer_objects",
-    ]
-    json_names = [
-      "VkLayer_core_validation.json",
-      "VkLayer_object_lifetimes.json",
-      "VkLayer_stateless_validation.json",
-      "VkLayer_standard_validation.json",
-      "VkLayer_thread_safety.json",
-      "VkLayer_unique_objects.json",
-    ]
-    sources = [
-      "../vulkan-headers/src/include/vulkan/vulkan_core.h",
-    ]
-    outputs = []
-    foreach(json_name, json_names) {
-      sources += [ "src/layers/json/$json_name.in" ]
-      outputs += [ "$root_out_dir/$angle_data_dir/$json_name" ]
-    }
-    args = [
-             "$raw_vulkan_layers_dir/layers/json",
-             rebase_path("$root_out_dir/$angle_data_dir", root_build_dir),
-           ] + rebase_path(sources, root_build_dir)
-
-    # The layer JSON files are part of the necessary data deps.
-    data = outputs
-  }
-}
-
-source_set("vulkan_layer_utils") {
-  sources = [
-    "src/layers/vk_format_utils.cpp",
-    "src/layers/vk_format_utils.h",
-    "src/layers/vk_layer_config.cpp",
-    "src/layers/vk_layer_config.h",
-    "src/layers/vk_layer_extension_utils.cpp",
-    "src/layers/vk_layer_extension_utils.h",
-    "src/layers/vk_layer_utils.cpp",
-    "src/layers/vk_layer_utils.h",
-  ]
-  public_configs = [
-    "$angle_root:vulkan_config",
-    ":vulkan_internal_config",
-  ]
-  configs -= [ "//build/config/compiler:chromium_code" ]
-  configs += [ "//build/config/compiler:no_chromium_code" ]
-  public_deps = [
-    ":vulkan_generate_helper_files",
-  ]
-  configs -= vulkan_undefine_configs
-}
-
-config("vulkan_core_validation_config") {
-  include_dirs = [ "${angle_glslang_dir}" ]
-}
-
-source_set("vulkan_core_validation_glslang") {
-  public_deps = [
-    "${angle_spirv_tools_dir}:spvtools",
-    "${angle_spirv_tools_dir}:spvtools_opt",
-    "${angle_spirv_tools_dir}:spvtools_val",
-  ]
-  public_configs = [ ":vulkan_core_validation_config" ]
-}
-
-config("vulkan_stateless_validation_config") {
-  if (is_clang) {
-    cflags_cc = [ "-Wno-unused-const-variable" ]
-  }
-}
-
-source_set("vulkan_gen_stateless_validation") {
-  deps = [
-    ":vulkan_gen_parameter_validation_cpp",
-    ":vulkan_gen_parameter_validation_h",
-  ]
-  public_configs = [ ":vulkan_stateless_validation_config" ]
-}
-
-foreach(layer_info, layers) {
-  name = layer_info[0]
-  shared_library("VkLayer_$name") {
-    configs -= [ "//build/config/compiler:chromium_code" ]
-    configs += [ "//build/config/compiler:no_chromium_code" ]
-    configs -= vulkan_undefine_configs
-    public_configs = [ ":vulkan_layer_config" ]
-    deps = [
-      ":vulkan_layer_utils",
-    ]
-    if (layer_info[2] != "") {
-      deps += layer_info[2]
-    }
-    sources = layer_info[1]
-    if (is_win) {
-      sources += [ "src/layers/VkLayer_$name.def" ]
-    }
-    if (is_linux || is_android) {
-      ldflags = [ "-Wl,-Bsymbolic,--exclude-libs,ALL" ]
-    }
-    if (is_android) {
-      libs = [
-        "log",
-        "nativewindow",
-      ]
-      configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
-    }
-    defines = layer_info[3]
-  }
-}
-
-group("vulkan_validation_layers") {
-  data_deps = []
-  foreach(layer_info, layers) {
-    name = layer_info[0]
-    data_deps += [ ":VkLayer_$name" ]
-  }
-}
diff --git a/Source/ThirdParty/ANGLE/third_party/vulkan-validation-layers/dummy_spirv_tools_commit_id.h b/Source/ThirdParty/ANGLE/third_party/vulkan-validation-layers/dummy_spirv_tools_commit_id.h
deleted file mode 100644
index e1793bd..0000000
--- a/Source/ThirdParty/ANGLE/third_party/vulkan-validation-layers/dummy_spirv_tools_commit_id.h
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// Copyright 2018 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// This file is a dummy file to enable building SPIRV tools when git is absent.
-
-#pragma once
-
-#define SPIRV_TOOLS_COMMIT_ID "0000000000000000000000000000000000000000"
diff --git a/Source/ThirdParty/ANGLE/util/EGLWindow.cpp b/Source/ThirdParty/ANGLE/util/EGLWindow.cpp
index af1427f..3de779f 100644
--- a/Source/ThirdParty/ANGLE/util/EGLWindow.cpp
+++ b/Source/ThirdParty/ANGLE/util/EGLWindow.cpp
@@ -12,9 +12,9 @@
 
 #include <string.h>
 
+#include "common/system_utils.h"
 #include "platform/Platform.h"
 #include "util/OSWindow.h"
-#include "util/system_utils.h"
 
 // ConfigParameters implementation.
 ConfigParameters::ConfigParameters()
diff --git a/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp b/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp
index c13b0e4..008dac3 100644
--- a/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp
+++ b/Source/ThirdParty/ANGLE/util/fuchsia/ScenicWindow.cpp
@@ -18,6 +18,7 @@
 #include <lib/fidl/cpp/interface_request.h>
 #include <lib/ui/scenic/cpp/view_token_pair.h>
 #include <lib/zx/channel.h>
+#include <vulkan/vulkan.h>
 #include <zircon/status.h>
 
 #include "common/debug.h"
@@ -25,6 +26,36 @@
 namespace
 {
 
+uint32_t GetImagePipeSwapchainLayerImplementationVersion()
+{
+    uint32_t numInstanceLayers = 0;
+    VkResult result            = vkEnumerateInstanceLayerProperties(&numInstanceLayers, nullptr);
+    if (result != VK_SUCCESS)
+    {
+        return 0u;
+    }
+
+    std::vector<VkLayerProperties> instanceLayers(numInstanceLayers);
+    result = vkEnumerateInstanceLayerProperties(&numInstanceLayers, instanceLayers.data());
+    if (result != VK_SUCCESS)
+    {
+        return 0u;
+    }
+
+    uint32_t imagePipeSwapchainImplementationVersion = 0;
+    const std::string layerName                      = "VK_LAYER_FUCHSIA_imagepipe_swapchain";
+    for (const VkLayerProperties &layerProperty : instanceLayers)
+    {
+        if (layerName.compare(layerProperty.layerName) != 0)
+            continue;
+        imagePipeSwapchainImplementationVersion = layerProperty.implementationVersion;
+        break;
+    }
+
+    ASSERT(imagePipeSwapchainImplementationVersion > 0u);
+    return imagePipeSwapchainImplementationVersion;
+}
+
 async::Loop *GetDefaultLoop()
 {
     static async::Loop *defaultLoop = new async::Loop(&kAsyncLoopConfigAttachToCurrentThread);
@@ -107,15 +138,25 @@
 
 void ScenicWindow::resetNativeWindow()
 {
-    fuchsia::images::ImagePipePtr imagePipe;
-    uint32_t imagePipeId = mScenicSession.AllocResourceId();
-    mScenicSession.Enqueue(scenic::NewCreateImagePipeCmd(imagePipeId, imagePipe.NewRequest()));
+    zx_handle_t imagePipeHandle = 0;
+    uint32_t imagePipeId        = mScenicSession.AllocResourceId();
+    if (GetImagePipeSwapchainLayerImplementationVersion() > 1u)
+    {
+        fuchsia::images::ImagePipe2Ptr imagePipe;
+        mScenicSession.Enqueue(scenic::NewCreateImagePipe2Cmd(imagePipeId, imagePipe.NewRequest()));
+        imagePipeHandle = imagePipe.Unbind().TakeChannel().release();
+    }
+    else
+    {
+        fuchsia::images::ImagePipePtr imagePipe;
+        mScenicSession.Enqueue(scenic::NewCreateImagePipeCmd(imagePipeId, imagePipe.NewRequest()));
+        imagePipeHandle = imagePipe.Unbind().TakeChannel().release();
+    }
     mMaterial.SetTexture(imagePipeId);
     mScenicSession.ReleaseResource(imagePipeId);
     mScenicSession.Present(0, [](fuchsia::images::PresentationInfo info) {});
 
-    mFuchsiaEGLWindow.reset(
-        fuchsia_egl_window_create(imagePipe.Unbind().TakeChannel().release(), mWidth, mHeight));
+    mFuchsiaEGLWindow.reset(fuchsia_egl_window_create(imagePipeHandle, mWidth, mHeight));
 }
 
 EGLNativeWindowType ScenicWindow::getNativeWindow() const
diff --git a/Source/ThirdParty/ANGLE/util/posix/Posix_crash_handler.cpp b/Source/ThirdParty/ANGLE/util/posix/crash_handler_posix.cpp
similarity index 98%
rename from Source/ThirdParty/ANGLE/util/posix/Posix_crash_handler.cpp
rename to Source/ThirdParty/ANGLE/util/posix/crash_handler_posix.cpp
index 2a0b9f6..e40c4b5 100644
--- a/Source/ThirdParty/ANGLE/util/posix/Posix_crash_handler.cpp
+++ b/Source/ThirdParty/ANGLE/util/posix/crash_handler_posix.cpp
@@ -3,12 +3,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
-// system_utils_crash_handler:
+// crash_handler_posix:
 //    ANGLE's crash handling and stack walking code. Modified from Skia's:
 //     https://github.com/google/skia/blob/master/tools/CrashHandler.cpp
 //
 
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 #include "common/angleutils.h"
 
diff --git a/Source/ThirdParty/ANGLE/util/posix/Posix_system_utils.cpp b/Source/ThirdParty/ANGLE/util/posix/test_utils_posix.cpp
similarity index 89%
rename from Source/ThirdParty/ANGLE/util/posix/Posix_system_utils.cpp
rename to Source/ThirdParty/ANGLE/util/posix/test_utils_posix.cpp
index 35708cf..9d6c82f 100644
--- a/Source/ThirdParty/ANGLE/util/posix/Posix_system_utils.cpp
+++ b/Source/ThirdParty/ANGLE/util/posix/test_utils_posix.cpp
@@ -4,24 +4,28 @@
 // found in the LICENSE file.
 //
 
-// Posix_system_utils.cpp: Implementation of OS-specific functions for Posix systems
+// test_utils_posix.cpp: Implementation of OS-specific functions for Posix systems
 
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
+#include <errno.h>
 #include <sched.h>
 #include <time.h>
 #include <unistd.h>
+#include <cstdarg>
+
+#include "common/platform.h"
 
 #if !defined(ANGLE_PLATFORM_FUCHSIA)
 #    include <dlfcn.h>
 #    include <sys/resource.h>
+#    include <sys/stat.h>
+#    include <sys/types.h>
+#    include <sys/wait.h>
 #endif
 
-#include "common/platform.h"
-
 namespace angle
 {
-
 void Sleep(unsigned int milliseconds)
 {
     // On Windows Sleep(0) yields while it isn't guaranteed by Posix's sleep
diff --git a/Source/ThirdParty/ANGLE/util/system_utils.h b/Source/ThirdParty/ANGLE/util/test_utils.h
similarity index 82%
rename from Source/ThirdParty/ANGLE/util/system_utils.h
rename to Source/ThirdParty/ANGLE/util/test_utils.h
index 3c40b57..6a4951d 100644
--- a/Source/ThirdParty/ANGLE/util/system_utils.h
+++ b/Source/ThirdParty/ANGLE/util/test_utils.h
@@ -4,14 +4,14 @@
 // found in the LICENSE file.
 //
 
-// system_utils.h: declaration of OS-specific utility functions
+// test_utils.h: declaration of OS-specific utility functions
 
-#ifndef UTIL_SYSTEM_UTILS_H_
-#define UTIL_SYSTEM_UTILS_H_
+#ifndef UTIL_TEST_UTILS_H_
+#define UTIL_TEST_UTILS_H_
 
 #include <string>
+#include <vector>
 
-#include "common/system_utils.h"
 #include "util/util_export.h"
 
 namespace angle
@@ -33,6 +33,7 @@
 
 // Print a stack back trace.
 ANGLE_UTIL_EXPORT void PrintStackBacktrace();
+
 }  // namespace angle
 
-#endif  // UTIL_SYSTEM_UTILS_H_
+#endif  // UTIL_TEST_UTILS_H_
diff --git a/Source/ThirdParty/ANGLE/util/util.gni b/Source/ThirdParty/ANGLE/util/util.gni
index 492c875..4304cae 100644
--- a/Source/ThirdParty/ANGLE/util/util.gni
+++ b/Source/ThirdParty/ANGLE/util/util.gni
@@ -12,10 +12,11 @@
   "util/random_utils.h",
   "util/shader_utils.cpp",
   "util/shader_utils.h",
-  "util/system_utils.h",
+  "util/test_utils.h",
   "util/util_export.h",
   "util/util_gl.h",
   "util/Event.h",
+  "util/EGLPlatformParameters.h",
   "util/EGLWindow.cpp",
   "util/EGLWindow.h",
   "util/Matrix.cpp",
@@ -28,20 +29,22 @@
 ]
 
 util_win_sources = [
-  "util/windows/win32/Win32_system_utils.cpp",
+  "util/windows/test_utils_win.cpp",
+  "util/windows/win32/test_utils_win32.cpp",
   "util/windows/win32/Win32Pixmap.cpp",
   "util/windows/win32/Win32Pixmap.h",
   "util/windows/win32/Win32Window.cpp",
   "util/windows/win32/Win32Window.h",
-  "util/windows/Windows_system_utils.cpp",
   "util/windows/WGLWindow.h",
 ]
 
-util_win_shared_sources = [ "util/windows/WGLWindow.cpp" ]
+if (current_os != "winuwp") {
+  util_win_shared_sources = [ "util/windows/WGLWindow.cpp" ]
+}
 
 util_posix_sources = [
-  "util/posix/Posix_crash_handler.cpp",
-  "util/posix/Posix_system_utils.cpp",
+  "util/posix/crash_handler_posix.cpp",
+  "util/posix/test_utils_posix.cpp",
 ]
 
 util_linux_sources = util_posix_sources
@@ -64,14 +67,12 @@
   "util/ozone/OzoneWindow.h",
 ]
 
-util_osx_sources = [
-  "util/osx/OSXPixmap.mm",
-  "util/osx/OSXPixmap.h",
-  "util/osx/OSXWindow.mm",
-  "util/osx/OSXWindow.h",
-  "util/posix/Posix_crash_handler.cpp",
-  "util/posix/Posix_system_utils.cpp",
-]
+util_osx_sources = util_posix_sources + [
+                     "util/osx/OSXPixmap.mm",
+                     "util/osx/OSXPixmap.h",
+                     "util/osx/OSXWindow.mm",
+                     "util/osx/OSXWindow.h",
+                   ]
 
 util_android_sources = util_posix_sources + [
                          "util/android/AndroidPixmap.cpp",
diff --git a/Source/ThirdParty/ANGLE/util/util_gl.h b/Source/ThirdParty/ANGLE/util/util_gl.h
index c044742..1c42875 100644
--- a/Source/ThirdParty/ANGLE/util/util_gl.h
+++ b/Source/ThirdParty/ANGLE/util/util_gl.h
@@ -13,9 +13,9 @@
 #if defined(ANGLE_USE_UTIL_LOADER)
 #    include "util/egl_loader_autogen.h"
 #    include "util/gles_loader_autogen.h"
-#    if defined(ANGLE_PLATFORM_WINDOWS)
+#    if defined(ANGLE_PLATFORM_WINDOWS) && !defined(ANGLE_ENABLE_WINDOWS_UWP)
 #        include "util/windows/wgl_loader_autogen.h"
-#    endif  // defined(ANGLE_PLATFORM_WINDOWS)
+#    endif  // defined(ANGLE_PLATFORM_WINDOWS) && !defined(ANGLE_ENABLE_WINDOWS_UWP)
 #else
 
 #    if !defined(GL_GLES_PROTOTYPES)
diff --git a/Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp b/Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp
index bac5875..96c4d42 100644
--- a/Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp
+++ b/Source/ThirdParty/ANGLE/util/windows/WGLWindow.cpp
@@ -10,8 +10,8 @@
 #include "util/windows/WGLWindow.h"
 
 #include "common/string_utils.h"
+#include "common/system_utils.h"
 #include "util/OSWindow.h"
-#include "util/system_utils.h"
 
 #include <iostream>
 
diff --git a/Source/ThirdParty/ANGLE/util/windows/Windows_system_utils.cpp b/Source/ThirdParty/ANGLE/util/windows/test_utils_win.cpp
similarity index 96%
rename from Source/ThirdParty/ANGLE/util/windows/Windows_system_utils.cpp
rename to Source/ThirdParty/ANGLE/util/windows/test_utils_win.cpp
index ef88225..05a44c8 100644
--- a/Source/ThirdParty/ANGLE/util/windows/Windows_system_utils.cpp
+++ b/Source/ThirdParty/ANGLE/util/windows/test_utils_win.cpp
@@ -4,15 +4,15 @@
 // found in the LICENSE file.
 //
 
-// Windows_system_utils.cpp: Implementation of OS-specific functions for Windows
+// test_utils_win.cpp: Implementation of OS-specific functions for Windows
 
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 #include <stdarg.h>
 #include <windows.h>
 #include <array>
-#include <vector>
 
+#include "common/angleutils.h"
 #include "util/windows/third_party/StackWalker/src/StackWalker.h"
 
 namespace angle
@@ -144,5 +144,4 @@
     RtlCaptureContext(&context);
     PrintBacktrace(&context);
 }
-
 }  // namespace angle
diff --git a/Source/ThirdParty/ANGLE/util/windows/win32/Win32_system_utils.cpp b/Source/ThirdParty/ANGLE/util/windows/win32/test_utils_win32.cpp
similarity index 86%
rename from Source/ThirdParty/ANGLE/util/windows/win32/Win32_system_utils.cpp
rename to Source/ThirdParty/ANGLE/util/windows/win32/test_utils_win32.cpp
index 6e4b523..4f4aa8d 100644
--- a/Source/ThirdParty/ANGLE/util/windows/win32/Win32_system_utils.cpp
+++ b/Source/ThirdParty/ANGLE/util/windows/win32/test_utils_win32.cpp
@@ -4,9 +4,9 @@
 // found in the LICENSE file.
 //
 
-// Win32_system_utils.cpp: Implementation of OS-specific functions for Win32 (Windows)
+// test_utils_win32.cpp: Implementation of OS-specific functions for Win32 (Windows)
 
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 #include <windows.h>
 #include <array>
diff --git a/Source/ThirdParty/ANGLE/util/x11/X11Window.cpp b/Source/ThirdParty/ANGLE/util/x11/X11Window.cpp
index 66d555b..84cbadb 100644
--- a/Source/ThirdParty/ANGLE/util/x11/X11Window.cpp
+++ b/Source/ThirdParty/ANGLE/util/x11/X11Window.cpp
@@ -10,7 +10,7 @@
 
 #include "common/debug.h"
 #include "util/Timer.h"
-#include "util/system_utils.h"
+#include "util/test_utils.h"
 
 namespace
 {